Improved design with superclasses