I'm wondering whether the supertypes are worth it. Granted we avoid some redundancy, but the hierarchy is much more difficult to understand. I'm tempted to prefer the redundancy for the sake of understandability.