     }
     
     /**
-     *  Collection change handler for the dataProvider.
-     */ 
-    protected function collectionChangeHandler(event:Event):void
-    {
-        if (event is CollectionEvent)
-        {
-            var ce:CollectionEvent = CollectionEvent(event);
-
-            switch (ce.kind)
-            {
-                case CollectionEventKind.ADD:
-                {
-                    // items are added
-                    // figure out what items were added and where
-                    // for virtualization also figure out if items are now in view
-                    adjustAfterAdd(ce.items, ce.location);
-                    break;
-                }
-            
-                case CollectionEventKind.REPLACE:
-                {
-                    // items are replaced
-                    adjustAfterReplace(ce.items, ce.location);
-                    break;
-                }
-            
-                case CollectionEventKind.REMOVE:
-                {
-                    // items are added
-                    // figure out what items were removed
-                    // for virtualization also figure out what items are now in view
-                    adjustAfterRemove(ce.items, ce.location);
-                    break;
-                }
-                
-                case ce.kind == CollectionEventKind.MOVE:
-                {
-                    // one item is moved
-                    adjustAfterMove(ce.items[0], ce.location, ce.oldLocation);
-                    break;
-                }
-            
-                case CollectionEventKind.REFRESH:
-                {
-                    // from a filter or sort...let's just reset everything          
-                    dataProviderChanged = true;
-                    invalidateProperties();
-                    break;
-                }
-                
-                case CollectionEventKind.RESET:
-                {
-                    // reset everything          
-                    dataProviderChanged = true;
-                    invalidateProperties();
-                    break;
-                }
-                
-                case CollectionEventKind.UPDATE:
-                {
-                    // update event, do nothing
-                    // TODO: maybe we need to do something here, like recreate renderer?
-                    break;
-                }
-            }
-        }
-            
+     *  Called when contents within the dataProvider changes.  We will catch certain 
+     *  events and update our children based on that.
+     *
+     *  @param event The collection change event
+     */
+    protected function collectionChangeHandler(event:CollectionEvent):void
+    {
+        switch (event.kind)
+        {
+            case CollectionEventKind.ADD:
+            {
+                // items are added
+                // figure out what items were added and where
+                // for virtualization also figure out if items are now in view
+                adjustAfterAdd(event.items, event.location);
+                break;
+            }
+        
+            case CollectionEventKind.REPLACE:
+            {
+                // items are replaced
+                adjustAfterReplace(event.items, event.location);
+                break;
+            }
+        
+            case CollectionEventKind.REMOVE:
+            {
+                // items are added
+                // figure out what items were removed
+                // for virtualization also figure out what items are now in view
+                adjustAfterRemove(event.items, event.location);
+                break;
+            }
+            
+            case CollectionEventKind.MOVE:
+            {
+                // one item is moved
+                adjustAfterMove(event.items[0], event.location, event.oldLocation);
+                break;
+            }
+        
+            case CollectionEventKind.REFRESH:
+            {
+                // from a filter or sort...let's just reset everything          
+                dataProviderChanged = true;
+                invalidateProperties();
+                break;
+            }
+            
+            case CollectionEventKind.RESET:
+            {
+                // reset everything          
+                dataProviderChanged = true;
+                invalidateProperties();
+                break;
+            }
+            
+            case CollectionEventKind.UPDATE:
+            {
+                // update event, do nothing
+                // TODO: maybe we need to do something here, like recreate renderer?
+                break;
+            }
+        }
     }
     
     /**

            var rendererFactory:IFactory = itemRendererFunction(item);
            
            if (rendererFactory)
                itemSkin = itemDisplayObject = rendererFactory.newInstance();
        }
        
        // 2. if itemRenderer is defined, instantiate one
        if (!itemSkin && itemRenderer)
        {
            itemSkin = itemDisplayObject = itemRenderer.newInstance();
        }
        
        // 3. if item is a GraphicElement, create the display object for it
        if (!itemSkin && item is GraphicElement)
        {
            var graphicItem:GraphicElement = GraphicElement(item);
            graphicItem.elementHost = this;

     */
    override public function getLayoutItemAt(index:int):ILayoutItem
    {
        var item:Object = dataProvider.getItemAt(index);

        var myItemRenderer:Object = getItemRenderer(item);

        return LayoutItemFactory.getLayoutItemFor(myItemRenderer);
    }
    
    /**
