refactored observing on add/delete