I am currently thinking that core to XP is their cost model of different ways of coding. Two people are looking at some code, and they think - that's not "good" enough, so they refactor to make it "better". To pull that off, the people on the team need to have some concept of what is "better". Without a coding cost model, they would simply DTSSTCPW and leave it at that. Why don't they leave it at that, and what do they decide to change it to? --AlistairCockburn ''When you say "cost model", are you referring to the cost of making a change, or just to the model that lets us say X is better than Y? --rj'' "X is better than Y." Thanks, Alistair e.g. P a. P b. -> P.c where P.c = P a. P b. (combine two calls into one) but what about [exp] ifTrue: [exp2] ifFalse: [exp3] ? are there some conditions where you refactor to polymorph? thanks. CodeSmell''''''s tend to be high cost. Removing them is good.