      *  @private
      */
     private function assignDisplayObjectTo(item:Object,mergeData:GroupDisplayObjectMergeData):void
-    {
-        if (mergeData.lastDisplayObject == this)
-            mergeData.insertIndex = 0;
-        else
-            mergeData.insertIndex = super.getChildIndex(mergeData.lastDisplayObject) + 1;
-            
+    {   
         if (item is DisplayObject)
         {
             super.setChildIndex(item as DisplayObject, mergeData.insertIndex);
             
-            mergeData.lastDisplayObject = item as DisplayObject;
+            mergeData.insertIndex++;
             // Null this out so that we are forced to create one for the next item
             mergeData.currentAssignableDO = null; 
         }           
-        else if (item is GraphicElement)
-        {
-            var element:GraphicElement = item as GraphicElement;
+        else if (item is IGraphicElement)
+        {
+            var element:IGraphicElement = item as IGraphicElement;
             
             if (mergeData.currentAssignableDO == null || element.needsDisplayObject)
             {
                 var newChild:DisplayObject = element.displayObject;
                 
                 if (newChild == null)
-                {
                     newChild = element.createDisplayObject();
-                    element.displayObject = newChild; // TODO!! Handle this in createDisplayObject?                 
-                }
                 
                 addItemToDisplayList(newChild, item, mergeData.insertIndex); 
                 // If the element is transformed, the next item needs its own DO        
                 mergeData.currentAssignableDO = element.nextSiblingNeedsDisplayObject ? null : newChild;
-                mergeData.lastDisplayObject = newChild;
+                mergeData.insertIndex++;
             }
             else
             {

            
        return super.addChildAt(child, index != -1 ? index : super.numChildren);
    }
    /**
     *  @private
     */

    
    public function set scaleGridTop(value:Number):void
    {
        if (value != _scaleGridTop)
        {
            _scaleGridTop = value;
            scaleGridChanged = true;
            invalidateDisplayList();
        }
    }
    
