Index: main/grid/display.lisp
===================================================================
--- main/grid/display.lisp	(revision main,56)
+++ main/grid/display.lisp	(revision main,57)
@@ -5,13 +5,11 @@
 (defclass grid ()
   ((data :initarg :data)
-   (header-columns :type (integer 0) :initarg :header-columns)
    (window :initarg :window)
    (row-scroll :type (integer 0) :initform 0 :accessor row-scroll)
    (column-scroll :type (integer 0) :initform 0 :accessor column-scroll)))
 
-(defun make-grid (window data &key (header-columns 0))
+(defun make-grid (window data)
   (make-instance 'grid
                  :data data
-                 :header-columns header-columns
                  :window window))
 
@@ -32,17 +30,18 @@
 
 (defun column-split (grid column)
-  (with-slots (header-columns) grid
-    (saturate header-columns column))) 
+  (with-slots (data) grid
+    (saturate (header-columns data) column))) 
 
 (defun column-offset (grid column)
-  (with-slots (data header-columns column-scroll) grid
-    (let ((base (+ header-columns column-scroll))
-          (column-widths (mapcar (peval 'column-width data)
-                                 (range header-columns))))
-      (multiple-value-bind (in-header in-data) (column-split grid column)
-        (let ((w1 (reduce '+ column-widths :end in-header))
-              (w2 (reduce '+ column-widths :start base
-                                           :end (+ base in-data))))
-          (+ w1 w2))))))
+  (with-slots (data column-scroll) grid
+    (let ((header-columns (header-columns data)))
+      (let ((base (+ header-columns column-scroll))
+            (column-widths (mapcar (peval 'column-width data)
+                                   (range header-columns))))
+        (multiple-value-bind (in-header in-data) (column-split grid column)
+          (let ((w1 (reduce '+ column-widths :end in-header))
+                (w2 (reduce '+ column-widths :start base
+                                             :end (+ base in-data))))
+            (+ w1 w2)))))))
 
 (defun row-split (grid row)
@@ -96,15 +95,16 @@
 
 (defun draw (grid)
-  (with-slots (data header-columns window column-scroll) grid
-    (erase window)
-    (let ((x 0))
-      (dotimes (i header-columns)
-        (draw-column grid i x)
-        (incf x (column-width data i)))
-      (do ((i (+ header-columns column-scroll) (incf i)))
-          ((or (>= i (columns data))
-               (> x (nth-value 1 (size window)))))
-        (draw-column grid i x)
-        (incf x (column-width data i))))))
+  (with-slots (data window column-scroll) grid
+    (let ((header-columns (header-columns data)))
+      (erase window)
+      (let ((x 0))
+        (dotimes (i header-columns)
+          (draw-column grid i x)
+          (incf x (column-width data i)))
+        (do ((i (+ header-columns column-scroll) (incf i)))
+            ((or (>= i (columns data))
+                 (> x (nth-value 1 (size window)))))
+          (draw-column grid i x)
+          (incf x (column-width data i)))))))
 
 
@@ -121,6 +121,6 @@
 
 (defmethod max-column-scroll ((grid grid))
-  (with-slots (data header-columns window) grid
-    (- (columns data) header-columns 1)))
+  (with-slots (data window) grid
+    (- (columns data) (header-columns data) 1)))
 
 (defmethod (setf column-scroll) :around (i (grid grid))
