modify update function