removed subclass constructor methods to use late static binding instead