         var i:int = 0;
         var oldFilters:Array = _filters ? _filters.slice() : null;
         var len:int = oldFilters ? oldFilters.length : 0;
-        var edFilter:EventDispatcher;
+        var edFilter:IEventDispatcher;
 
         for (i = 0; i < len; i++)
         {
-            if (oldFilters[i] is IBitmapFilter)
-            {
-                edFilter = value[i] as EventDispatcher;
-                if (edFilter)
-                {
-                    edFilter.removeEventListener(BaseFilter.FILTER_CHANGED_TYPE,
-                                                 filterChangedHandler);
-                }
-            }
+            edFilter = value[i] as IEventDispatcher;
+            if (edFilter)
+                edFilter.removeEventListener(BaseFilter.CHANGE, filterChangedHandler);
         }
 
         _clonedFilters = [];

import mx.events.FlexEvent;
import mx.events.PropertyChangeEvent;
import mx.events.PropertyChangeEventKind;
import mx.graphics.IStroke;
import mx.managers.ILayoutManagerClient;


        {
            if (value[i] is IBitmapFilter)
            {
                edFilter = value[i] as IEventDispatcher;
                if (edFilter)
                    edFilter.addEventListener(BaseFilter.CHANGE, filterChangedHandler);
                _clonedFilters.push(IBitmapFilter(value[i]).clone());
            }
            else
