Overhaul PermissionManager