[WIP] Mapped superclass

Refactored classes to allow usage out of the box or ease ability to override classes used
This part of the code comes from FOSUserBundle so I was thinking it was nice to keep track of original authorship