finished user crud functionality