Clarify my idea for the type hierarchy