Refactor accessors

Predefine the accessors methods as a mixing instead of creating them on runtime per class, while inherit only the needed methods for the class.
Fixes #1621