         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 addListener (listener :ChangeListener) :void
    {
        if (_listeners == null) {
            _listeners = new ArrayCollection();

        } else if (_listeners.contains(listener)) {
            log.warning("Refusing repeat listener registration " +
                "[dobj=" + which() + ", list=" + listener + "].");
            log.logStackTrace(new Error());
            return;
        }
        _listeners.addItem(listener);
    }

    public function removeListener (listener :ChangeListener) :void
    {
        if (_listeners != null) {
            var dex :int = _listeners.getItemIndex(listener);
            if (dex != -1) {
                _listeners.removeItemAt(dex);
            }
        }
    }

    public function addSubscriber (sub :Subscriber) :void
    {
        if (_subscribers == null) {
            _subscribers = [ ];
        }
        if (_subscribers.indexOf(sub) == -1) {
            _subscribers.push(sub);
        }
    }

