update  function