modifying the interface to pass in authenitcator, created authenticators that make it easier to test