refactor: split oauth2 module