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