Fixing bugs and structuring SignInManager so that it will scale with other providers while remaining easy to use in an application