improve user update method