[#3] Roles and permissions functional design