allow abstract base classes