update function 0.4