no printf. remove one useless doupdate().