@amb26 I looked into the implementation in the framework for "cullUnchanged" option and improved modelRelay a bit. You may want to take a look. 

However, I didn't find where the "source" field is. I wonder if the ChangeEvent you mentioned here actually means the changeRequest argument for the applier guards listener? That argument only has fields of - path, type and value. "value" is what's currently being used by modelRelay to avoid circularity.