             // Not your typical delegation, see 'set useVirtualLayout'
             if (_useVirtualLayout && dataGroup.layout)
                 dataGroup.layout.useVirtualLayout = true;
+            
+            dataGroup.addEventListener(
+                RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
+            dataGroup.addEventListener(
+                RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
+        }
+    }
+
+    /**
+     *  @private
+     */
+    override protected function partRemoved(partName:String, instance:Object):void
+    {        
+        super.partRemoved(partName, instance);
+        
+        if (instance == dataGroup)
+        {
+            dataGroup.removeEventListener(
+                RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
+            dataGroup.removeEventListener(
+                RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
         }
     }
 

    //  Event handlers
    //
    //--------------------------------------------------------------------------
    
    /**
     *  @private

{

import flash.events.Event;
import flash.events.MouseEvent;

import mx.collections.IList;
import mx.core.FlexVersion;
