Create an authenticator interface and a default authenticator.
Restructure and separate out authentication