introduced abstract superclass