             childDO = createVisualForItem(item);
         }
         
-        addItemToDisplayList(childDO, item);
+        addItemToDisplayList(childDO, item, index);
         
         dispatchEvent(new ItemExistenceChangedEvent(
                       ItemExistenceChangedEvent.ITEM_ADD, false, false, item));

        invalidateDisplayList();
    }
    
    protected function itemRemoved(index:int):void
    {       
        var item:* = _dataProvider.getItemAt(index);
        var skin:* = getItemSkin(item);
        var childDO:DisplayObject = item as DisplayObject;
        

            item.elementHost = null;
            item.sharedDisplayObject = null;
            childDO = GraphicElement(item).displayObject;
        }
        else if (skin && skin is DisplayObject)
        {
            childDO = skin as DisplayObject;
