Wrapped the auth stuff behind an interface