          */
         override public function measure():void
         {
-            
+            super.measure();
+            
+            const layoutTarget:GroupBase = target;
+            if (!layoutTarget)
+                return;
+
+            getColumnWidthsMax();
+            
+            var formWidth:Number = getColumnWidthsSum();
+            
+            // use measured column widths to set Form's measuredWidth
+            layoutTarget.measuredWidth = Math.max(formWidth, layoutTarget.measuredWidth);
+            layoutTarget.measuredMinWidth = Math.max(formWidth, layoutTarget.measuredMinWidth);
+        }
+        
+        /**
+         *  @private
+         */
+        override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+        {
+            // TODO add logic for getting measuredWidths again
+            
+            super.updateDisplayList(unscaledWidth, unscaledHeight);
+            
+            getColumnWidthsMax();
+            
+            var eltWidth:Number = getColumnWidthsSum();
             
             var layout:LayoutBase;
             var fiLayout:FormItemLayout;

            var formItem:IFormItem 
            var elt:IVisualElement
            
            for(var i:int = 0; i < nElts; i++)
            {
                elt = layoutTarget.getElementAt(i);
                
                
                
                if (elt is GroupBase)
                    layout = GroupBase(elt).layout;
                else if (elt is FormItem)

                else if (elt is SkinnableContainer)
                    layout = SkinnableContainer(elt).layout;
                
                if (layout is FormItemLayout)
                {
                    fiLayout = layout as FormItemLayout;
