mostly permission and role enum refactor