Separate data change listeners

data change listeners isolated to separate mixin