     private var _viewControllerExpressions = [String: LayoutExpression]()
     private var _viewExpressions = [String: LayoutExpression]()
     private var _valueClearers = [() -> Void]()
+    private var _valueHasChanged = [String: () -> Bool]()
 
     private lazy var viewControllerConstructorArgumentTypes: [String: RuntimeType]? = self.viewControllerClass?.parameterTypes
     private lazy var viewConstructorArgumentTypes: [String: RuntimeType] = self.viewClass.parameterTypes

        _viewControllerExpressions.removeAll()
        _viewExpressions.removeAll()
        _valueClearers.removeAll()
        for child in children {
            child.cleanUp()
        }

        }
        for (name, expression) in _viewExpressions {
            let value = try expression.evaluate()
            guard _valueHasChanged[name]!() else {
                continue
            }
            if animated {
                try _view?.setAnimatedValue(value, forExpression: name)
            } else {
