subclassing and class methods