there is a lot of extra work here, DetachObserverFromEvent has full circle for checking