finished user functionality