         if (layoutTarget)
             llv.length = layoutTarget.numElements;       
      }
+     
+    /**
+     *  @private
+     */
+     override public function elementAdded(index:int):void
+     {
+         if (useVirtualLayout)
+            llv.insert(index);
+     }
+
+    /**
+     *  @private
+     */
+     override public function elementRemoved(index:int):void
+     {
+         if (useVirtualLayout)
+            llv.remove(index);
+     }     
 
     /**
      *  @private 

     */
     private function updateLLV(layoutTarget:GroupBase):void
     {
        var contentChangeDeltas:Vector.<int> = layoutTarget.mx_internal::contentChangeDeltas;
        if (contentChangeDeltas)
            for(var i:int = 0; i < contentChangeDeltas.length; i++)
            {
                var delta:int = contentChangeDeltas[i];
                if (delta < 0)
                    llv.remove(-(delta + 1));
                else
                    llv.insert(delta - 1);
            }
            
        var typicalElt:ILayoutElement = typicalLayoutElement;
        if (typicalElt)
        {

        
        updateLLV(layoutTarget);     
        if (variableRowHeight)
        {
            var endIndex:int = Math.max(0, Math.min(measuredEltCount, eltCount) - 1);
            layoutTarget.measuredHeight = llv.end(endIndex);
        }
        else
        {
            var vgap:Number = (measuredEltCount > 1) ? (measuredEltCount - 1) * gap : 0;
