Refactor State and Property to support deferring evaluation with Runnable