Add iter_update function for more detailed control over the update process, make update use iter_update