[WIP] Mapped superclass

Refactored classes to allow usage out of the box or ease ability to override classes used
The header need to be the one from this project. However the copyright holder can be kept in the class comment. // cc @dbu