Added initial permissions to roles association
Improved design
Refactored code
Added backend specific controller implementation via trait and improved
init() function