add abstract base class for usual stuff