add "update" function