finalized general refactoring of OAuth2 providers, needs testing