app: Refactory Authenticator with abstraction