clean update_pos function