Rename CompositeObserver to PathObserver; only allow one callback