Using factory patern for authenticator implementations.