implement user and session