             for(var i:int = 0; i < nElts; i++)
             {
                 elt = layoutTarget.getElementAt(i);
-                if (elt is IFormItem)
+                
+                
+                
+                if (elt is GroupBase)
+                    layout = GroupBase(elt).layout;
+                else if (elt is FormItem)
+                    layout = FormItem(elt).skin["layout"];
+                else if (elt is FormHeading)
+                    layout = FormHeading(elt).skin["layout"];
+                else if (elt is SkinnableContainer)
+                    layout = SkinnableContainer(elt).layout;
+                
+                
+                
+                if (layout is FormItemLayout)
+                {
+                    fiLayout = layout as FormItemLayout;
+                    var cols:Vector.<Number> = fiLayout.getMeasuredColumnWidths();
+                    
+                    if (colsMaxWidth == null)
+                    {
+                        colsMaxWidth = new Vector.<Number>();
+                        for (var j:int = 0; j < cols.length; j++)
+                            colsMaxWidth[j] = 0;
+                    }
+                    
+                    // TODO add logic to throw RTE if column lengths don't match
+                    
+                    for (var k:int = 0; k < cols.length; k++)
+                    {
+                        colsMaxWidth[k] = Math.max(colsMaxWidth[k], cols[k]);
+                    }
+                }
+                
+                
+                /*if (elt is IFormItem)
                 {
                     formItem = IFormItem(elt);
                     var cols:Vector.<Number> = formItem.measuredColumnWidths;

        override public function measure():void
        {
            
            var colsMaxWidth:Vector.<Number>;
                        
            // Apply constraint columns before measuring
            const layoutTarget:GroupBase = target;
            if (!layoutTarget)

                        colsMaxWidth[k] = Math.max(colsMaxWidth[k], cols[k]);
                    }
                    
                }*/
            }
            
            
            
            super.measure();
         }
        
        override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        {
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            
            var layout:LayoutBase;
            var fiLayout:FormItemLayout;
            
            // Apply constraint columns before measuring
            const layoutTarget:GroupBase = target;
            if (!layoutTarget)
                return;
            
            const nElts:int = layoutTarget.numElements;
            var formItem:IFormItem 
            var elt:IVisualElement
            
            if (colsMaxWidth != null)
            {
                var columnMaxWidths:Vector.<Number> = colsMaxWidth.slice(0);
                
                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)
                        layout = FormItem(elt).skin["layout"];
                    else if (elt is FormHeading)
                        layout = FormHeading(elt).skin["layout"];
                    else if (elt is SkinnableContainer)
                        layout = SkinnableContainer(elt).layout;
                    
                    if (layout is FormItemLayout)
                    {
                        fiLayout = layout as FormItemLayout;
                        fiLayout.setLayoutColumnWidths(columnMaxWidths);
                    }
                    
                    /*if (elt is IFormItem)
                    {
                    formItem = IFormItem(elt);
                    formItem.layoutColumnWidths = columnMaxWidths;
                    }*/
                }
            }
        }
    }
}
    
