Nailing down how state re-evaluation will work

This somewhat breaks the semantics of the observer pattern, might revert some of this commit.