re-working getting the objects into the correct state at the correct time.
merge changes