I was looking at legacy code with an eye (nose?) for code smells and saw several things that didn't seem to be covered by The Usual Smells. * Liar- a class/method that doesn't do what its name suggests * Changling- a child class that doesn't resemble its parent class * Impurity- methods that look like pure functions but have side effects NickKeighley Changling might be has-a built in terms of implemented-in-terms-of-a.