impl of update