         if (rendererFactory)
             renderer = createRenderer(rendererFactory);
         
-        if (!renderer && (item is IVisualElement) && (item is DisplayObject))
+        if (!renderer && itemIsRenderer(item))
             renderer = IVisualElement(item);
         
         if (!renderer && failRTE)

            addedVirtualRenderer = true;
        }
        
        if (!renderer && (item is IVisualElement) && (item is DisplayObject))
        {
            renderer = IVisualElement(item);
            addedVirtualRenderer = true;            

        {
            var item:Object = dataProvider.getItemAt(index);
            var renderer:IVisualElement = indexToRenderer[index] as IVisualElement;
            
            // If the (new) item is-a renderer and the old renderer is a different 
            // DisplayObject, then we can't reuse the old renderer.
            
            if (renderer && (!itemIsRenderer(item) || (item == renderer)))
            {
                setUpItemRenderer(renderer, index, item);
            }
            else
            {
                removeRendererAt(index); 
                itemAdded(item, index);
