extracted each user type permission into their own class, split up tests to test them serpartly, cleaned up tests