refactoring passport code to avoid a proliferation of nearly identical dependencies and simplify supporting new providers, fine tuning params, etc.