         // validate sizes of the elements, even in cases where recursive==false.
         
         // Check whether we manage the elements, or are they managed by an ItemRenderer
-        if (!alwaysUseItemRenderer)
-        {
-            // TODO EGeorgie: we need to optimize this, iterating through all the elements is slow.
-            // Validate element size
-            var length:int = numItems;
-            for (var i:int = 0; i < length; i++)
-            {
-                var element:GraphicElement = getItemAt(i) as GraphicElement;
-                if (element)
-                    element.validateSize();
-            }
+        // TODO EGeorgie: we need to optimize this, iterating through all the elements is slow.
+        // Validate element size
+        var length:int = numItems;
+        for (var i:int = 0; i < length; i++)
+        {
+            var element:GraphicElement = getItemAt(i) as GraphicElement;
+            if (element)
+                element.validateSize();
         }
 
         super.validateSize(recursive);
-    }
-    
-    override protected function measure():void
-    {
-        super.measure();
-        
-        if (_layout)
-            _layout.measure();
-    }
-    
-    /**
-     *  @private
-     *  Conditionally sets the origin of the scrollRect to 
-     *  verticalScrollPosition,horizontalScrollPosition and its width
-     *  width,height to w,h (unscaledWidth,unscaledHeight).  We avoid setting
-     *  the scrollRect (and therefore clipping) when scrolling isn't indicated:
-     *  if the scrollRect is currently null and the scrollPosition properties
-     *  are 0, and the Group's contentWidth,Height is &lt;= to
-     *  unscaledWidth/Height, then the scrollRect is not set.
-     */ 
-    private function updateScrollRect(w:Number, h:Number):void
-    {
-        var r:Rectangle = scrollRect;
-        if (r) 
-        {
-            r.width = w;
-            r.height = h;
-            scrollRect = r;
-        }
-        else // scrollRect wasn't set
-        {
-            var hsp:Number = horizontalScrollPosition;
-            var vsp:Number = verticalScrollPosition;
-            var cw:Number = contentWidth;
-            var ch:Number = contentHeight;
-            
-            // Don't set the scrollRect needlessly.
-            if ((hsp != 0) || (vsp != 0) || (cw > w) || (ch > h))
-            {
-                scrollRect = new Rectangle(hsp, vsp, w, h);
-            }
-        }
-    }    
+    }   
     
     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
     {
-        if (_resizeMode == ResizeMode._SCALE_UINT)
-        {
-            unscaledWidth = measuredWidth;
-            unscaledHeight = measuredHeight;
-        }  
-        
         super.updateDisplayList(unscaledWidth, unscaledHeight);
 
-        if (_layout)
-            _layout.updateDisplayList(unscaledWidth, unscaledHeight);
-
-        // Check whether we manage the elements, or are they managed by an ItemRenderer
-        if (!alwaysUseItemRenderer)
-        {
-            graphics.clear(); // Clear the group's graphic because graphic elements might be drawing to it
-            // TODO EGeorgie: we need to optimize this, iterating through all the elements is slow.
-            // Iterate through the graphic elements, clear their graphics and draw them
-            var length:int = numItems;
-            for (var i:int = 0; i < length; i++)
-            {
-                var element:GraphicElement = getItemAt(i) as GraphicElement;
-                if (element)
-                    element.validateDisplayList();
-            }
-        }
-        
-        updateScrollRect(unscaledWidth, unscaledHeight);
-    }
-    
-    override public function addChild(child:DisplayObject):DisplayObject
-    {
-        throw(new Error("addChild is not available in Group. Use addItem instead."));
-    }
-    
-    override public function addChildAt(child:DisplayObject, index:int):DisplayObject
-    {
-        throw(new Error("addChildAt is not available in Group. Use addItemAt instead."));
-    }
-    
-    override public function removeChild(child:DisplayObject):DisplayObject
-    {
-        throw(new Error("removeChild is not available in Group. Use removeItem instead."));
-    }
-    
-    override public function removeChildAt(index:int):DisplayObject
-    {
-        throw(new Error("removeChildAt is not available in Group. Use removeItemAt instead."));
-    }
-    
-    override public function setChildIndex(child:DisplayObject, index:int):void
-    {
-        throw(new Error("setChildIndex is not available in Group. Use setItemIndex instead."));
-    }
-    
-    override public function swapChildren(child1:DisplayObject, child2:DisplayObject):void
-    {
-        throw(new Error("swapChildren is not available in Group. Use swapItems instead."));
-    }
-    
-    override public function swapChildrenAt(index1:int, index2:int):void
-    {
-        throw(new Error("swapChildrenAt is not available in Group. Use swapItemsAt instead."));
-    }
-    
-    
-    //----------------------------------
-    //  layout
-    //----------------------------------    
-    
-    private var _layout:ILayout;  // initialized in the ctor
-    
-    public function get layout():ILayout
-    {
-        return _layout;
-    }
-    
-    /**
-     * @private
-     */
-    public function set layout(value:ILayout):void
-    {
-        if (_layout == value)
-            return;
-        
-        _layout = value;  
-        if (_layout)
-            ILayout(_layout).target = this;
-        invalidateSize();
-        invalidateDisplayList();
-    }
-    
-    
-    //----------------------------------
-    //  horizontalScrollPosition
-    //----------------------------------
-        
-    private var scrollPositionChanged:Boolean = false;
-    private var _horizontalScrollPosition:Number = 0;
-    
-    [Bindable]
-    [Inspectable(category="General")]
-    
-    /**
-     *  The X coordinate of the origin of the region this Group is
-     *  scrolled to.  
-     * 
-     *  Setting this property causes the <code>scrollRect</code> to
-     *  be set, if necessary, to:
-     *  <pre>
-     *  new Rectangle(horizontalScrollPosition, verticalScrollPosition, width, height)
-     *  </pre>
-     * 
-     *  @default 0
-     */
-    public function get horizontalScrollPosition():Number 
-    {
-        return _horizontalScrollPosition;
-    }
-    
-    /**
-     *  @private
-     */
-    public function set horizontalScrollPosition(value:Number):void 
-    {
-        if (value == _horizontalScrollPosition) 
-            return;
-    
-        _horizontalScrollPosition = value;
-        scrollPositionChanged = true;
-        invalidateProperties();
-    }
-    
-
-    //----------------------------------
-    //  verticalScrollPosition
-    //----------------------------------
-
-    private var _verticalScrollPosition:Number = 0;
-    
-    [Bindable]
-    [Inspectable(category="General")]    
-    
-    /**
-     *  The Y coordinate of the origin of the region this Group is
-     *  scrolled to.  
-     * 
-     *  Setting this property causes the <code>scrollRect</code> to
-     *  be set, if necessary, to:
-     *  <pre>
-     *  new Rectangle(horizontalScrollPosition, verticalScrollPosition, width, height)
-     *  </pre>                 
-     * 
-     *  @default 0
-     */
-    public function get verticalScrollPosition():Number 
-    {
-        return _verticalScrollPosition;
-    }
-    
-    /**
-     *  @private
-     */
-    public function set verticalScrollPosition(value:Number):void 
-    {
-        if (value == _verticalScrollPosition)
-            return;
-            
-        _verticalScrollPosition = value;
-        scrollPositionChanged = true;
-        invalidateProperties();
-    }
-    
-    
-    //----------------------------------
-    //  contentWidth
-    //---------------------------------- 
-    
-    private var _contentWidth:Number = 0;
-    
-    [Bindable("propertyChange")]
-    [Inspectable(category="General")]    
-
-    /**
-     * The positive extent of this Group's content, relative to the 0,0
-     * origin, along the X axis.
-     */
-    public function get contentWidth():Number 
-    {
-        return _contentWidth;
-    }
-    
-    private function setContentWidth(value:Number):void 
-    {
-        if (value == _contentWidth)
-            return;
-    	var oldValue:Number = _contentWidth;
-        _contentWidth = value;
-        dispatchPropertyChangeEvent("contentWidth", oldValue, value);        
-    }
-
-    //----------------------------------
-    //  contentHeight
-    //---------------------------------- 
-    
-    private var _contentHeight:Number = 0;
-    
-    [Bindable("propertyChange")]
-    [Inspectable(category="General")]    
-
-    /**
-     * The positive extent of this Group's content, relative to the 0,0 
-     * origin, along the Y axis.
-     */
-    public function get contentHeight():Number 
-    {
-        return _contentHeight;
-    }
-    
-    private function setContentHeight(value:Number):void 
-    {            
-        if (value == _contentHeight)
-            return;
-        var oldValue:Number = _contentHeight;
-        _contentHeight = value;
-        dispatchPropertyChangeEvent("contentHeight", oldValue, value);        
-    }    
-
-    /**
-     *  Sets this Group's <code>contentWidth</code> and <code>contentHeight</code>
-     *  properties.
-     * 
-     *  This method is is intended for layout class developers who should
-     *  call it from <code>measure()</code> and <code>updateDisplayList()</code>.
-     *
-     *  @param w The new value of contentWidth.
-     *  @param h The new value of contentHeight.
-     */
-    public function setContentSize(w:Number, h:Number):void
-    {
-        if ((w == _contentWidth) && (h == _contentHeight))
-           return;
-        setContentWidth(w);
-        setContentHeight(h);
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Properties: Overriden Focus management
-    //
-    //--------------------------------------------------------------------------
-
-    //----------------------------------
-    //  focusPane
-    //----------------------------------
-
-    /**
-     *  @private
-     *  Storage for the focusPane property.
-     */
-    private var _focusPane:Sprite;
-
-    [Inspectable(environment="none")]
-    
-    // TODO (rfrishbe): only reason we need to override focusPane getter/setter
-    // is because addChild/removeChild for Groups throw an RTE.
-    // This is the same as UIComponent's focusPane getter/setter but it uses
-    // super.add/removeChild.
-
-    override public function get focusPane():Sprite
-    {
-        return _focusPane;
-    }
-
-    override public function set focusPane(value:Sprite):void
-    {
-        if (value)
-        {
-            super.addChild(value);
-
-            value.x = 0;
-            value.y = 0;
-            value.scrollRect = null;
-
-            _focusPane = value;
-        }
-        else
-        {
-             super.removeChild(_focusPane);
-             
-             // TODO: remove mask?  SDK-15310
-            _focusPane = null;
-        }
-    }
-    
+        // TODO EGeorgie: we need to optimize this, iterating through all the elements is slow.
+        // Iterate through the graphic elements, clear their graphics and draw them
+
+        graphics.clear(); // Clear the group's graphic because graphic elements might be drawing to it
+        // This isn't needed for DataGroup because there's not much DisplayObject sharing
+        
+        // TODO EGeorgie: we need to optimize this, iterating through all the elements is slow.
+        // Iterate through the graphic elements, clear their graphics and draw them
+        var length:int = numItems;
+        for (var i:int = 0; i < length; i++)
+        {
+            var element:GraphicElement = getItemAt(i) as GraphicElement;
+            if (element)
+                element.validateDisplayList();
+        }
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Content management

     *
     *  @return The layout item at the specified index.
     */
    public function getLayoutItemAt(index:int):ILayoutItem
    {
        var item:* = getItemAt(index);
               
        if (alwaysUseItemRenderer || !(item is IGraphicElement))
            item = getItemSkin(item);

        return LayoutItemFactory.getLayoutItemFor(item);
    }

    protected function itemRemoved(index:int):void
    {       
        var item:* = getItemAt(index);
        var childDO:DisplayObject = item as DisplayObject;
        
        dispatchEvent(new ItemExistenceChangedEvent(
