diff --git a/data/both.lisp b/data/both.lisp
index 0b8f5036061a1e8784c46fc2c36ea1107d5478f1..31c23f450a53af34d39d3dc06758cc26433147ef 100644
--- a/data/both.lisp
+++ b/data/both.lisp
@@ -1,6 +1,6 @@
 ;; Functions for both vectors and matrices.
 ;; Liam Healy 2008-04-26 20:48:44EDT both.lisp
-;; Time-stamp: <2010-11-24 23:26:40EST both.lisp>
+;; Time-stamp: <2010-11-25 09:31:17EST both.lisp>
 ;;
 ;; Copyright 2008, 2009, 2010 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -86,11 +86,18 @@
 ;;; access components, we use these macros which expand to gsl_*_get
 ;;; and gsl_*_set.
 
+;;; It's unlikely users will need maref directly, because when using
+;;; the GSL library, we use the grid functions to get elements.  The
+;;; main use in the GSL library is user-defined callbacks (e.g. in
+;;; solve-minimize-fit) when scalarsp = T is specified; in that case
+;;; the generated wrapper function includes maref.  However, if
+;;; another foreign library which used the GSL library provided an
+;;; mpointer, the maref macro saves the time of creating an object
+;;; around it.
 (export 'maref)
 
-(eval-when (:compile-toplevel :load-toplevel :execute)
 (defun access-value-int (mpointer class-name value indices)
-  "Access the GSL array value from the mpointer.  If value is not nil,
+  "Create a form to access the GSL array value from the mpointer.  If value is not nil,
    set the value; otherwise, get the value."
   ;; (access-value-int 'ptr 'grid:vector-unsigned-byte-16 45 '(3))
   ;; (FOREIGN-FUNCALL "gsl_vector_ushort_set" :POINTER PTR SIZET 3 :UNSIGNED-SHORT 45 :VOID)
@@ -113,10 +120,11 @@
       ,@(when matrixp (list 'sizet (second indices)))
       ,(grid:cl-cffi element-type)
       ,@(when value `(,value :void)))))
-)
 
 (defmacro maref (mpointer class-name &rest indices)
-  "Get or set the array element from the GSL pointer."
+  "Get or set (setf maref) the array element from the GSL mpointer.
+   The class-name is the specific subclass name of
+   grid:foreign-array."
   (access-value-int mpointer class-name nil indices))
 
 (defmacro set-maref (mpointer class-name &rest indices-value)
diff --git a/init/funcallable.lisp b/init/funcallable.lisp
index 86b0a98f017e01386d5a3e8f89aa65fa407c8cb8..3ef4e7b0e401a1a6b4eb2604ae4cb0aa68fd1737 100644
--- a/init/funcallable.lisp
+++ b/init/funcallable.lisp
@@ -1,6 +1,6 @@
 ;; Generate a lambda that calls the user function; will be called by callback.
 ;; Liam Healy 
-;; Time-stamp: <2010-11-24 22:01:05EST funcallable.lisp>
+;; Time-stamp: <2010-11-25 09:09:40EST funcallable.lisp>
 ;;
 ;; Copyright 2009, 2010 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -84,13 +84,13 @@
 ;;;;****************************************************************************
 
 (defun reference-foreign-element
-    (foreign-variable-name linear-index argspec dimension-values)
-  "Form to reference, for getting or setting, the element of a foreign
-   array, or a scalar."
+    (foreign-pointer-name linear-index argspec dimension-values)
+  "Create the form to reference the element of a foreign
+   array, or a scalar, for getting or setting."
   (if (parse-callback-argspec argspec 'dimensions)
       (if (eql (parse-callback-argspec argspec 'array-type) :foreign-array)
 	  `(maref
-	    ,foreign-variable-name
+	    ,foreign-pointer-name
 	    ,(grid:data-class-name
 	      (length (value-from-dimensions argspec dimension-values))
 	      (grid:cffi-cl (parse-callback-argspec argspec 'element-type)))
@@ -98,11 +98,11 @@
 	       (affi:make-affi (value-from-dimensions argspec dimension-values))
 	       linear-index))
 	  `(cffi:mem-aref
-	    ,foreign-variable-name
+	    ,foreign-pointer-name
 	    ',(parse-callback-argspec argspec 'element-type)
 	    ,linear-index))
       ;; not setfable if it's a scalar
-      foreign-variable-name))
+      foreign-pointer-name))
 
 (defun array-element-refs (names argspecs dimension-values)
   "A list of forms reference each array element in succession.