user functionality complete