This seems very good to me. The core Authenticator is lean, and it's up to implementations (even custom ones) how they're handled.