Further simplify transaction management.  Transaction aspect doesn't need access to the transaction promise. Create mapChangeObserver which applies an arbitrary function to x and y then snapshots/diffs them.  propertyChangeObserver is a mapChangeObserver with a function that returns a property
Add datasources. Make diff/array match Object.observe change record syntax. Update wire plugin to account for all of the above