update function design