 {   
     public function Group():void
     {
+        super();
         tabChildren = true;
+        _layout = new BasicLayout();
+        ILayout(_layout).target = this;        
     }
     
     private var skinRegistry:Dictionary;

    public function get content():*
    {
        return _content;
    }
    
    public function get layout():Object
    {
        return _layout;
    }

    // TBD: HACK for the sake of getDefinitionByName
    private static const forceLoad0:Class = flex.layout.BasicLayout;
    private static const forceLoad1:Class = flex.layout.HorizontalLayout;
    private static const forceLoad2:Class = flex.layout.VerticalLayout;
    
    public function set layout(value:Object):void
    {
        if (value is ILayout) {
            _layout = ILayout(value);
            _layoutClass = null;
    }
        else if (value is String) {
            _layout = null;
            _layoutClass = flash.utils.getDefinitionByName(String(value)) as Class;
    }
        else if (value is Class) {
            _layout = null;
            _layoutClass = Class(value);
        }
        else {
            _layout = null;
            _layoutClass = null;
        }
        layoutChanged = true;
        invalidateProperties();     
    }

    private var _resizeMode:uint = ResizeMode._NORMAL_UINT;

    public var itemRenderer:IFactory;   
    public var itemRendererFunction:Function; // signature: itemRendererFunction(item:*):IFactory
    public var alwaysUseItemRenderer:Boolean = false; // if true, always use the itemRenderer
    private var _content:*;
    private var _contentType:int;
    private var contentCollection:ICollectionView;
