inheritance, overriding, super$ and class types implemented