I see your point. We could move the observer into watch() in a way that doesn't register multiple listeners. But it's also fine to leave it in the constructor. In that case, however, make sure you test that this.callback is defined before calling its update() method!