more work on user abstraction