I just stumbled upon this: Announcer subclass: #TxEditor .... This is just plain wrong, as wrong as: Shampoo subclass: #Shower because every time you treat inheritance as something else as _specialization_ you doing it wrong. Inheritance is not about importing needed functionality, it should be about specialization and only about it: - a superclass provides generic functionality, while subclasses providing more and more specialized forms of it. Because if we don't follow that, then it is really hard to see and follow a structure in design.. it is just random. And here's why: so since shower uses shampoo, as we concluded, then why not including it via inheritance: Shampoo subclass: #Shower but then, Shower also uses Soap, so maybe it should be like that: Soap subclass: #Shower so, which superclass you prefer most? And how do you pick/prioritize which element should be a superclass of Shower? To solve this dilemma, i think we will need multiple inheritance: (Shampoo, Soap) subclass: #Shower but thankfully, we don't have it in classic smalltalk model :) So, then maybe it should be something like that: Object subclass: #Shower instanceVariableNames: 'soap shampoo' ... Anyways, despite the obvious abuses, i'd like to ask community, in what cases , you think (ab)using inheritance in a way like above is justified? Because maybe it is i, who doing it wrong? -- Best regards, Igor Stasenko.