Feature/componentize oauth2