[WIP] Mapped superclass

Refactored classes to allow usage out of the box or ease ability to override classes used
Good remark : it should be compliant with 2.1+ but not tested (yet). Will add this environment cases in travis