add update function