diff --git a/data/both.lisp b/data/both.lisp
index 9ad8b4d98649639605c85f4ef1ed872a7e9fa64b..5d884c109ac3847331cfd9001197e1306bd21c8e 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-07-06 22:37:34EDT both.lisp>
+;; Time-stamp: <2010-07-11 18:37:28EDT both.lisp>
 ;;
 ;; Copyright 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -78,9 +78,6 @@
   "Exchange the elements of a and b
    by copying.  The two must have the same dimensions.")
 
-;;; These functions are here as debugging tools only; they do not insure
-;;; coherency between the C and CL sides and therefore should not be
-;;; used in production.
 ;;; For matrix functions, there should be another index argument
 #|
 (defmfun set-value ((object vector) index value)
diff --git a/init/callback.lisp b/init/callback.lisp
index 35d69cc4c2076206c744259ba161b38dcd0401be..7bf19ae4dba100c2bba7be6c0453183504f51e06 100644
--- a/init/callback.lisp
+++ b/init/callback.lisp
@@ -1,6 +1,6 @@
 ;; Foreign callback functions.               
 ;; Liam Healy 
-;; Time-stamp: <2010-06-29 22:51:19EDT callback.lisp>
+;; Time-stamp: <2010-07-11 19:01:17EDT callback.lisp>
 ;;
 ;; Copyright 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -37,14 +37,13 @@
 ;;; they are defined with those tasks.  The macro #'defmcallback can
 ;;; specify that the CL function is to expect in arglist and return as
 ;;; multiple values scalar quantities that come from and will be bound
-;;; to either grid:foreign-arrays or C vectors.  This is done with a list of the
+;;; to either grid:foreign-arrays.  This is done with a list of the
 ;;; type and size, e.g. (:double 3), and for setting :set, type size,
-;;; e.g. (:set :double 3).  If the 'grid:foreign-array argument is nil, it will
-;;; expand to read or set a C vector; if it is T, it will expand to
-;;; read or set a grid:foreign-array.  This allows the user to define ordinary CL
+;;; e.g. (:set :double 3).  These can read either :cvector or
+;;; :foreign-array.  This allows the user to define ordinary CL
 ;;; functions with scalars as input and output.  However, it may be
-;;; desirable to read and set grid:foreign-arrays, in which case :pointer is the
-;;; right specification.
+;;; desirable to read and set grid:foreign-arrays, in which case
+;;; :pointer is the right specification.
 
 ;;;;****************************************************************************
 ;;;; Setting slots
diff --git a/init/funcallable.lisp b/init/funcallable.lisp
index bdb0aca4e4fce22ae09580570c8dc80eaf7ee25d..a99813caf239aa2d8013b9aa203c4437cc1a9a46 100644
--- a/init/funcallable.lisp
+++ b/init/funcallable.lisp
@@ -1,8 +1,8 @@
 ;; Generate a lambda that calls the user function; will be called by callback.
 ;; Liam Healy 
-;; Time-stamp: <2010-07-10 22:18:51EDT funcallable.lisp>
+;; Time-stamp: <2010-07-11 18:12:29EDT funcallable.lisp>
 ;;
-;; Copyright 2009 Liam M. Healy
+;; Copyright 2009, 2010 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
 ;;
 ;; This program is free software: you can redistribute it and/or modify
@@ -66,13 +66,17 @@
 ;;;;****************************************************************************
 
 (defun gref-mpointer-form
-    (mpointer index &optional (category 'vector) (element-type 'double-float))
-  "Create the call that will return an element from a GSL array mpointer."
+    (mpointer index &optional value (category 'vector) (element-type 'double-float))
+  "Create the call that will return an element from a GSL array mpointer, 
+   or set it to value if value is non-NIL."
   (ffexpand
    nil
    (actual-gsl-function-name
-    '("gsl_" :category :type "_get") category element-type)
-   `(:pointer ,mpointer sizet ,index ,element-type)))
+    `("gsl_" :category :type ,(if value "_set" "_get"))
+    category element-type)
+   (if value
+       `(:pointer ,mpointer sizet ,index ,element-type ,value :void)
+       `(:pointer ,mpointer sizet ,index ,element-type))))
 
 (defun reference-foreign-element
     (foreign-variable-name linear-index argspec dimension-values)
@@ -92,7 +96,7 @@
 	       (parse-callback-argspec argspec 'element-type))
 	      ;; A vector
 	      (gref-mpointer-form
-	       foreign-variable-name linear-index 'vector
+	       foreign-variable-name linear-index nil 'vector
 	       (parse-callback-argspec argspec 'element-type)))
 	  `(cffi:mem-aref
 	    ,foreign-variable-name
diff --git a/init/mobject.lisp b/init/mobject.lisp
index 7e96d9c039dc2582456ef71cbeeea166f004b86b..df8f58413a36c77faef9ba23d49fccd4e2ee528a 100644
--- a/init/mobject.lisp
+++ b/init/mobject.lisp
@@ -1,6 +1,6 @@
 ;; Definition of GSL objects and ways to use them.
 ;; Liam Healy, Sun Dec  3 2006 - 10:21
-;; Time-stamp: <2010-07-07 14:30:30EDT mobject.lisp>
+;; Time-stamp: <2010-07-11 17:07:40EDT mobject.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -62,7 +62,7 @@
 ;;; allocate-inputs
 ;;; freer
 ;;; callbacks
-;;;   See callbacks.lisp
+;;;   See callback.lisp
 ;;; superclasses
 ;;;   List of superclasses other than 'mobject.
 ;;; singular