     {
         suspendEventHandling();
         // Add the child back to the parent so the effect can play upon it
-        parent.addChildAt(target, index);
+        if (parent is IVisualElementContainer && target is IVisualElement)
+            (IVisualElementContainer(parent).addElementAt(target as IVisualElement, index));
+        else
+            parent.addChildAt(target, index);
         resumeEventHandling();
         // Use target because the player assigns the Stage to the currentTarget when we leave the scope of the event handler function
         createAndPlayEffect(eventObj, target); 

                    // Since we added the child back to the parent when the effect began,
                    // we need to remove it once the effect has finished.
                    suspendEventHandling();
                    parent.removeChild(targ);
                    resumeEventHandling();
                }
            }

import mx.managers.SystemManager;
import mx.resources.IResourceManager;
import mx.resources.ResourceManager;
import mx.core.IVisualElementContainer;
import mx.core.IVisualElement;

use namespace mx_internal;

