phantomotap : very good example, and it exists in all languages, that's why it is a design problem rather than a language problem, it is called "over-object-orienting" In a case like this it's easier to put all methods in the Person class, and the headache is gone. The diamond problem is the same thing.