updated update function