Refactor Authentication into its own classes