Updates to use events to decouple state watching.