code: function(value, oldValue) {
           // Trigger Descendants
           for (var descendantKey in $prop.$descendants) {
              if ($prop.$descendants.hasOwnProperty(descendantKey)) {
  
                 for (var i in $prop.$descendants[descendantKey].callbacks) {
                    // Job id has to have a callback index attached
                    var job_id = $id + descendantKey + i;
                    var descendantCallback = $prop.$descendants[descendantKey].callbacks[i];
  
                    AsyncTransaction.sign(descendantCallback, function() {
                       return [getPropertyValue(value, descendantKey), oldValue];
                    });
                 }
  
                 AsyncTransaction.add($id + descendantKey, function() {
                    $prop.$descendants[this.key].bindWatcher();
                 }, {
                    key: descendantKey
                 });
              }
           }
           if ($isSingleProperty) {
              // Trigger $self watchers
              for (var i = 0; i < $prop.$self.length; i++) {
                 var _cb = $prop.$self[i];
                 if (_cb.$path) { // handle old value propertly
                    if (typeof oldValue === "object") {
                       oldValue = getPropertyValue(oldValue, _cb.$path)
                    }
                 }
                 AsyncTransaction.sign(_cb, function() {
                    return [value, oldValue];
                 })
              }
           }
        }
docs: Triggers when a root has changed Here we need to verify if we have an explicit callback to fire ($self) Notify descendants