add abstract base class for handler