implement all omniauth feature