basic user functionality done