Completely rewrite the auth component