use CompoundObserver for all changes.