and make sure it only triggers an update once for multiple calls in same call stack
so they can be altered by outside code. This is mostly useful for tests.