Clean up ExampleSSO and create a model to handle the dirty internals of it