Refactored  Permission, creating its own class.