 	 * 
 	 *  This method should be called *before* layoutItemRenderers(). 
 	 */
- 	private function updateVisibleColumnWidths(scrollX:Number, scrollY:Number, width:Number, height:Number):void
+ 	private function updateGridDimensions(scrollX:Number, scrollY:Number, width:Number, height:Number):void
 	{
+        const gridDimensions:GridDimensions = gridDimensions;        
 		const firstVisibleColumnIndex:int = gridDimensions.getColumnIndexAt(scrollX, scrollY);
-	    computeVisibleColumnWidths(width, scrollX, firstVisibleColumnIndex, columnIndices, columnWidths);
-		// TBD: loop to incorporate "slave" elements, notably CHB 
-		
-		const visibleColumnCount:uint = columnIndices.length;
-		for (var index:int = 0; index < visibleColumnCount; index++)
+        const columnIndices:Vector.<int> = updateTypicalCellSizes(width, scrollX, firstVisibleColumnIndex);
+        
+        if (!columnIndices)  // there no new typical item cell widths
+            return;
+        
+		const columnCount:uint = columnIndices.length;
+		for (var index:int = 0; index < columnCount; index++)
 		{
 			var columnIndex:int = columnIndices[index];
-			var columnWidth:Number = columnWidths[index];
+			var columnWidth:Number = gridDimensions.getTypicalCellWidth(columnIndex);
 			var gridColumn:GridColumn = getGridColumn(columnIndex);
 			
 			if (isNaN(gridColumn.width)) // if this column's width wasn't explicitly specified

        
        const scrollX:Number = horizontalScrollPosition;
        const scrollY:Number = verticalScrollPosition;
		updateVisibleColumnWidths(scrollX, scrollY, unscaledWidth, unscaledHeight);
        layoutItemRenderers(grid.itemRendererGroup, scrollX, scrollY, unscaledWidth, unscaledHeight);
        
        // Layout the row backgrounds

			
			gridDimensions.setColumnWidth(columnIndex, columnWidth);  // store the column width
		}
	}
	

