change back to abstract base class version