A more serious problem:
What if the watched object is not a hash?
Answer 0: Yeah, how often does that happen?
Answer 1: Then you shouldn't use this module
Answer 2: Override notify_observers to delegate through a subobject