events should bubble through reverse relations.  revamp cycle-detection mechanism.  also suppress bubbling through a relation and back through its reverse, to avoid combinatorial explosion