update funciton