refactoring: make handler abstract

* needs overridden methods
* add documentation