abstract superclass