Add in confirmation flow and separate out UserSession from UserService