[ ] Document session handling. Come up with different cases and paths for the flow and create tests for each [ ] Verify that sessions are used only where required. Raise exceptions on User methods that require a session when none is available [ ] Refactor setup / Adapter loading code