Avoid a crash where objects were being deallocated from a weak collection during fast enumeration
Simplify subscriber and observer addition and removal