Avoid a crash where objects were being deallocated from a weak collection during fast enumeration
Simplify subscriber and observer addition and removal
Merge branch 'master' into numist/services-refactor