You know what sucks more than fixing problems with inheritance? Fixing 20 different copies of the same bug, or just having to copy over dozens of methods in the first place. If you feel like inheritance is wrong, it's probably because you've got too many corner cases and too many responsibilities shoved into a class. Composition can help in such cases, but there's maybe no magic pattern if each object is too different from the rest.