         private var _keyPoints:Array;
 
         //@TODO add cases with horizontal scroll, and also with fixed columns
-        //@TODO we probably have to account for paddingTop and paddingBottom as well
         public static var dimensions:Array = [
             /*x, y, width, header padding left, header padding top, header padding bottom, [column widths] */
-            [[10, 0, 300, 5, 0, 5, [25, 150]]],
-            [[0, 0, 300, 5, 0, 0, [25, 150]]]
+            [[/*x=*/    0, /*y=*/   0, /*width=*/   300, /*paddingLeft=*/   5, /*paddingTop=*/  0, /*paddingBottom=*/   0, /*columnWidths=*/[25, 150]]],
+            [[/*x=*/   10, /*y=*/   0, /*width=*/   300, /*paddingLeft=*/   5, /*paddingTop=*/  0, /*paddingBottom=*/   5, /*columnWidths=*/[25, 150]]],
+            [[/*x=*/   -5, /*y=*/-100, /*width=*/   200, /*paddingLeft=*/  25, /*paddingTop=*/ 12, /*paddingBottom=*/   5, /*columnWidths=*/[100, 150]]] //horizontal scroll
         ];
 
 

            return headerRectangles;
        }

        private function forEachPoint(assertThat_:Function):void
        {
            for (var pointName:String in _keyPoints)

        private function rectangleContainsPoint(rectangle:Rectangle, point:Point):Boolean
        {
            return rectangle.containsPoint(point);
        }

        private function getAdjacentPoint(point:Point, direction:Matrix):Point
        {
            return direction.transformPoint(point);
        }

        private function generateKeyPoints(dimensions:Array, grid:DataGrid):Array
