         if (_subscribers == null) {
             return;
         }
-        var dex :int = _subscribers.getItemIndex(sub);
+        var dex :int = _subscribers.indexOf(sub);
         if (dex != -1) {
-            _subscribers.removeItemAt(dex);
+            _subscribers.splice(dex, 1);
             if (_subscribers.length == 0) {
                 _omgr.removedLastSubscriber(this, _deathWish);
             }

    public function addSubscriber (sub :Subscriber) :void
    {
        if (_subscribers == null) {
            _subscribers = new ArrayCollection();
        }
        if (!_subscribers.contains(sub)) {
            _subscribers.addItem(sub);
        }
    }


            return;
        }

        var listenersCopy :Array = _listeners.concat();
        for each (var listener :Object in listenersCopy) {
            // make sure the listener is still a listener
            // and hasn't been removed while dispatching to another listener..
            if (_listeners.indexOf(listener) == -1) {
                continue;
            }
            try {
                event.friendNotifyListener(listener);

