     public function getContentWidth(columnCountOverride:int = -1):Number
     {
 		const nCols:int = (columnCountOverride == -1) ? columnCount : columnCountOverride;
-		
+        var contentWidth:Number = 0;
+        
+        if (nCols > 1)
+            contentWidth += (nCols - 1) * columnGap;
+        
+        // short circuit for no column widths set yet.
         if (!_columnWidths)
-            return (nCols * (defaultColumnWidth + columnGap)) - columnGap;
-        
-        var contentWidth:Number = 0;
+            return contentWidth + nCols * defaultColumnWidth;
         
         for (var i:int = 0; i < nCols; i++)
         {

                    typicalCellWidths.length = _columnCount;
                    typicalCellHeights.length = _columnCount;
                }

            }
        }
    }

    //----------------------------------
    //  rowGap
    //----------------------------------
    
    /**
     *  The gap between rows.
     * 
     *  @default 0 
     */
    public var rowGap:Number = 0;
    
    //----------------------------------
    //  columnGap
    //----------------------------------
    
    /**
     *  The gap between columns. 
     *      
     *  @default 0 
     */
    public var columnGap:Number = 0;
    
    //----------------------------------
    //  defaultRowHeight

            
            // add next node's maxCellHeight and rowGap
            indDiff = nextNode.rowIndex - node.rowIndex - 1;
            currentY = currentY + indDiff * (defaultRowHeight + rowGap);
            nodeY = currentY; 
            node = nextNode;
        }
        
