Refer to the popular software engineering principle, "Prefer composition over inheritance". Class proliferation concerns are the central reason behind the Component-Based Entity Systems (CBEs) so often mentioned on this site, which is a gamedev-specific embodiment of the aforementioned principle. The essence of the matter is that inheritance hierarchies are compile-time-composable ONLY, whereas composition hierarchies (objects consisting of other objects and primitives) are runtime-composable. Immutable vs. mutable. Your choice. See [Mick West's introduction to CBES][1]. Also see answers [like this one][2] (ahem), by searching this site for "composition inheritance". [1]: http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ [2]: http://gamedev.stackexchange.com/questions/16677/inheritance-vs-composition