I quickly recieved several replies to my terms.inner question. To summarize: 1. "It was never in R" Clearly I was mistaken in my assumptions. Since gam used it, and gam was ported, I assumed terms.inner had to have been in R at some point. But that version of gam must never have made it to R. 2. Given #1, it's not too surprising that I didn't (yet) get any answers to the main question, which is what to do instead. How do you know what can replace something, when you've never seen the something, after all. A bit more digging on my own found that all.vars(delete.repsonse(formula)) seems to be what I want. Something that returns "x z" from the formula y ~ log(x) + cos(z) 3. "gam has to attached" This surprised me. I think of lm, glm, and gam as the "big 3" models from the Chambers and Hastie book, in the sense of using them all the time in my consulting work. I would never have guessed that the first 2 would make it into base R and the last not so. If I had downloaded and attached the right thing, it seems that I would have found print.gam. 4. Hiding names The soapbox part of my note is getting the most response, and very entertaining it is. getAnywhere() seems to be the most general fix to my frustration. I may come back with another note summarizing some of the philosophical debate. Terry Therneau