docs: function (value) {
    		var wrapper;
  
    		// TODO is there a better way to approach this?
    		if (this.keypath && (wrapper = this.root.viewmodel.wrapped[this.keypath.str])) {
    			value = wrapper.get();
    		}
  
    		if (!isEqual(value, this.value)) {
    			this.value = value;
    			this.parentFragment.bubble();
  
    			if (this.node) {
    				global_runloop.addView(this);
    			}
    		}
    	}