diff --git a/chebyshev.lisp b/chebyshev.lisp
index ce16b2ebc571321fc4affec283ab2a125d61c45b..f17eca4bba256f5c1c15f0a5169339a218b7f41a 100644
--- a/chebyshev.lisp
+++ b/chebyshev.lisp
@@ -1,8 +1,8 @@
 ;; Chebyshev Approximations
 ;; Liam Healy Sat Nov 17 2007 - 20:36
-;; Time-stamp: <2010-06-27 18:03:23EDT chebyshev.lisp>
+;; Time-stamp: <2010-06-29 21:47:34EDT chebyshev.lisp>
 ;;
-;; Copyright 2007, 2008, 2009 Liam M. Healy
+;; Copyright 2007, 2008, 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
@@ -60,7 +60,8 @@
   :c-return (crtn :pointer)
   :documentation
   "The Chebyshev coefficient array as a CL array (foreign-friendly)."
-  :return ((grid:copy-foreign-vector crtn (size chebyshev)))
+  :return ((grid:make-foreign-array-from-pointer
+	    crtn (list (size chebyshev)) 'double-float t))
   :gsl-version (1 12))
 
 ;;;;****************************************************************************
diff --git a/data/foreign-array.lisp b/data/foreign-array.lisp
index 944d50630f3ea501d8b89401265635c2cd580f22..4692c956f5adc35d675be6598a3f39957cb2ed94 100644
--- a/data/foreign-array.lisp
+++ b/data/foreign-array.lisp
@@ -1,8 +1,8 @@
 ;; A grid:foreign-array with added metadata for GSL.
 ;; Liam Healy 2008-04-06 21:23:41EDT
-;; Time-stamp: <2010-06-27 22:21:12EDT foreign-array.lisp>
+;; Time-stamp: <2010-06-29 21:41:40EDT foreign-array.lisp>
 ;;
-;; Copyright 2008, 2009 Liam M. Healy
+;; Copyright 2008, 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
@@ -83,7 +83,7 @@
     (error "Can't take a class name here anymore, sorry."))
   (apply
    'grid:make-grid
-   `((grid:foreign-array ,@dimensions) ,element-type)
+   `((grid:foreign-array ,@(alexandria:ensure-list dimensions)) ,element-type)
    keys))
 
 (defun make-marray-or-default
@@ -129,3 +129,5 @@
 	  ,element-type)))
      :foreign-pointer foreign-pointer
      :foreign-metadata mpointer)))
+
+(defun make-foreign-array-from-pointer ())
diff --git a/gsll.asd b/gsll.asd
index b4acbe947e26f292892be1cfd7d4ef7573f30f10..3e5133ef7644b66b593f09aadbfc357251f1326f 100644
--- a/gsll.asd
+++ b/gsll.asd
@@ -1,6 +1,6 @@
 ;; Definition of GSLL system 
 ;; Liam Healy
-;; Time-stamp: <2010-06-29 19:26:27EDT gsll.asd>
+;; Time-stamp: <2010-06-29 21:42:42EDT gsll.asd>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -81,11 +81,8 @@
 	     ;(:file "copy-cl")
 	     (:file "array-tests" :depends-on ("both"))
 	     (:file "permutation" :depends-on ("foreign-array" "array-structs"))
-	     (:file "combination" :depends-on ("foreign-array" "array-structs"))
-	     ))
-   #+(or)
+	     (:file "combination" :depends-on ("foreign-array" "array-structs"))))
    (:file "polynomial" :depends-on (init data))
-   #+(or)
    (:module special-functions
 	    :depends-on (init)
 	    :components
@@ -120,9 +117,7 @@
 	     (:file "transport" :depends-on ("return-structures"))
 	     (:file "trigonometry" :depends-on ("return-structures"))
 	     (:file "zeta" :depends-on ("return-structures"))))
-   #+(or)
    (:file "sorting" :depends-on (init data))
-   #+(or)
    (:module linear-algebra
 	    :depends-on (init data special-functions)
 	    :components
@@ -138,7 +133,6 @@
 	     (:file "cholesky")
 	     (:file "diagonal")
 	     (:file "householder")))
-   #+(or)
    (:module eigensystems
 	    :depends-on (init data)
 	    :components
@@ -147,7 +141,6 @@
 	     (:file "nonsymmetric" :depends-on ("eigen-struct"))
 	     (:file "generalized")
 	     (:file "nonsymmetric-generalized")))
-   #+(or)
    (:module fast-fourier-transforms
             :depends-on (init data)
             :components
@@ -160,7 +153,6 @@
              (:file "discrete")
              (:file "extras")
 	     (:file "example")))
-   #+(or)
    (:module random
 	    :depends-on (init data)
 	    :components
@@ -203,7 +195,6 @@
 	     (:file "hypergeometric" :depends-on ("rng-types"))
 	     (:file "logarithmic" :depends-on ("rng-types"))
 	     (:file "shuffling-sampling" :depends-on ("rng-types"))))
-   #+(or)
    (:module statistics
 	    :depends-on (init data)
 	    :components
@@ -214,7 +205,6 @@
 	     (:file "covariance")
 	     ;; minimum and maximum values provided in vector.lisp
 	     (:file "median-percentile")))
-   #+(or)
    (:module histogram
 	    :depends-on (init linear-algebra random)
 	    :components
@@ -224,7 +214,6 @@
 	     (:file "operations" :depends-on ("histogram"))
 	     (:file "probability-distribution" :depends-on ("histogram"))
 	     (:file "ntuple")))
-   #+(or)
    (:module calculus
 	    :depends-on (init data random)
 	    :components
@@ -234,7 +223,6 @@
 	     (cffi-grovel:grovel-file "monte-carlo-structs")
 	     (:file "monte-carlo")
 	     (:file "numerical-differentiation")))
-   #+(or)
    (:module ordinary-differential-equations
 	    :depends-on (init)
 	    :components
@@ -244,7 +232,6 @@
 	     (:file "control")
 	     (:file "evolution")
 	     (:file "ode-example" :depends-on ("ode-system" "stepping"))))
-   #+(or)
    (:module interpolation
 	    :depends-on (init)
 	    :components
@@ -253,17 +240,11 @@
 	     (:file "lookup")
 	     (:file "evaluation")
 	     (:file "spline-example" :depends-on ("types"))))
-   #+(or)
    (:file "chebyshev" :depends-on (init))
-   #+(or)
    (cffi-grovel:grovel-file "series-struct")
-   #+(or)
    (:file "series-acceleration" :depends-on (init "series-struct"))
-   #+(or)
    (:file "wavelet" :depends-on (init data))
-   #+(or)
    (:file "hankel" :depends-on (init data))
-   #+(or)
    (:module solve-minimize-fit
 	    :depends-on (init data random)
 	    :components
@@ -278,7 +259,6 @@
 		    :depends-on ("generic" "solver-struct"))
 	     #+fsbv
 	     (:file "simulated-annealing")))
-   #+(or)
    (:file "basis-splines" :depends-on (init data random))
    (:module physical-constants
 	    :depends-on (init)
diff --git a/histogram/histogram.lisp b/histogram/histogram.lisp
index 4ca778ba05b0723252f829765f89a8356b2e5118..29fe3835fc07d8ad0ec9ccf2e8c8918879e98995 100644
--- a/histogram/histogram.lisp
+++ b/histogram/histogram.lisp
@@ -1,6 +1,6 @@
 ;; The histogram structure
 ;; Liam Healy, Mon Jan  1 2007 - 11:32
-;; Time-stamp: <2010-06-27 18:13:52EDT histogram.lisp>
+;; Time-stamp: <2010-06-29 21:18:58EDT histogram.lisp>
 ;;
 ;; Copyright 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -79,6 +79,7 @@
   :definition :method
   :return (histogram))
 
+#|
 (defmfun grid:copy-to-destination ((source histogram) (destination histogram))
   "gsl_histogram_memcpy"
   (((mpointer destination) :pointer) ((mpointer source) :pointer))
@@ -116,4 +117,4 @@
   :definition :method
   :c-return :pointer
   :index copy)
-
+|#
diff --git a/init/init.lisp b/init/init.lisp
index 77291c1d4af84e7ba481316a12a29e3980d07b34..c933199db7f8780d4b7c90e329666a030ff1a895 100644
--- a/init/init.lisp
+++ b/init/init.lisp
@@ -1,6 +1,6 @@
 ;; Load GSL
 ;; Liam Healy Sat Mar  4 2006 - 18:53
-;; Time-stamp: <2010-06-27 21:28:45EDT init.lisp>
+;; Time-stamp: <2010-06-29 21:09:24EDT init.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -24,7 +24,7 @@
   (:import-from
    :grid
    #:cl-array #:dimensions #:total-size #:element-type
-   #:foreign-array #:matrix #:dim0 #:dim1
+   #:foreign-array #:matrix #:dim0 #:dim1 #:^
     ; #:copy #:clone
    )
   (:shadowing-import-from :grid #:foreign-pointer)
diff --git a/linear-algebra/matrix-generation.lisp b/linear-algebra/matrix-generation.lisp
index abf610611c6b736855b1a9979a8ab3f2573dfa53..df9c0ad45fe50bebf87442129b1b4d371f4729b8 100644
--- a/linear-algebra/matrix-generation.lisp
+++ b/linear-algebra/matrix-generation.lisp
@@ -1,8 +1,8 @@
 ;; Generate matrices used in tests of linear algebra functions
 ;; Liam Healy 2009-09-19 18:28:31EDT matrix-generation.lisp
-;; Time-stamp: <2009-12-27 09:54:58EST matrix-generation.lisp>
+;; Time-stamp: <2010-06-29 21:48:06EDT matrix-generation.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
@@ -38,13 +38,13 @@
    based on a function of the element indices i, j."
   (grid:map-grid
    :source function
-   :destination-gtype `((marray ,(if dim1 2 1)) ,element-type)
+   :destination-gtype `((foreign-array ,(if dim1 2 1)) ,element-type)
    :source-dims (if dim1 (list dim0 dim1) (list dim0))))
 
 (defun constant-matrix
     (constant dim0 &optional (dim1 dim0) (element-type 'double-float))
   (grid:make-grid
-   `((marray ,dim0 ,dim1) ,element-type)
+   `((foreign-array ,dim0 ,dim1) ,element-type)
    :initial-element constant))
 
 ;;;;****************************************************************************
diff --git a/polynomial.lisp b/polynomial.lisp
index 839ecf8df4e7b6cff3b695203b04b8b2af16deba..b24e11a72773faaea68b333f75ab8c108202812b 100644
--- a/polynomial.lisp
+++ b/polynomial.lisp
@@ -1,6 +1,6 @@
 ;; Polynomials
 ;; Liam Healy, Tue Mar 21 2006 - 18:33
-;; Time-stamp: <2010-06-27 18:14:53EDT polynomial.lisp>
+;; Time-stamp: <2010-06-29 20:56:39EDT polynomial.lisp>
 ;;
 ;; Copyright 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -27,7 +27,7 @@
 ;;;;****************************************************************************
 
 (defmfun evaluate
-    ((coefficients vector-double-float) (x float) &key divided-difference)
+    ((coefficients grid:vector-double-float) (x float) &key divided-difference)
   ("gsl_poly_eval" "gsl_poly_dd_eval")
   ((((foreign-pointer coefficients) :pointer) ((dim0 coefficients) sizet)
     (x :double))
@@ -43,7 +43,7 @@
 
 #+fsbv
 (defmfun evaluate
-    ((coefficients vector-double-float) (x complex)
+    ((coefficients grid:vector-double-float) (x complex)
      &key)
   "gsl_poly_complex_eval"
   (((foreign-pointer coefficients) :pointer) ((dim0 coefficients) sizet)
@@ -57,7 +57,7 @@
 
 #+fsbv
 (defmfun evaluate
-    ((coefficients vector-complex-double-float) (x complex)
+    ((coefficients grid:vector-complex-double-float) (x complex)
      &key)
   "gsl_complex_poly_complex_eval"
   (((foreign-pointer coefficients) :pointer) ((dim0 coefficients) sizet)
diff --git a/random/generators.lisp b/random/generators.lisp
index 73e70a0210707e9e6bf7717e9c346706c66551d9..4b218ea44818bf68e201f03c2c86a09308fd2cbd 100644
--- a/random/generators.lisp
+++ b/random/generators.lisp
@@ -1,6 +1,6 @@
 ;; Generators of random numbers.
 ;; Liam Healy, Sat Jul 15 2006 - 14:43
-;; Time-stamp: <2010-06-27 18:07:07EDT generators.lisp>
+;; Time-stamp: <2010-06-29 21:11:04EDT generators.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -176,6 +176,7 @@
 ;;;; Copying state
 ;;;;****************************************************************************
 
+#|
 (defmfun grid:copy-to-destination
     ((source random-number-generator) (destination random-number-generator))
   "gsl_rng_memcpy"
@@ -193,6 +194,7 @@
   :definition :method
   :c-return :pointer
   :index copy)
+|#
 
 ;;;;****************************************************************************
 ;;;; Examples and unit test
diff --git a/random/quasi.lisp b/random/quasi.lisp
index 0a7253903d49aa5ae0ea3db801c03a2054a1cedc..3501fae7dbbf9d53d4f0242d204c18501b88face 100644
--- a/random/quasi.lisp
+++ b/random/quasi.lisp
@@ -1,6 +1,6 @@
 ;; Quasi-random sequences in arbitrary dimensions.
 ;; Liam Healy, Sun Jul 16 2006 - 15:54
-;; Time-stamp: <2010-06-27 18:13:45EDT quasi.lisp>
+;; Time-stamp: <2010-06-29 21:11:34EDT quasi.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -64,6 +64,7 @@
   :export nil
   :index gsl-random-state)
 
+#|
 (defmfun grid:copy-to-destination
     ((source quasi-random-number-generator)
      (destination quasi-random-number-generator))
@@ -81,6 +82,7 @@
   :definition :method
   :c-return :pointer
   :index copy)
+|#
 
 (def-rng-type +niederreiter2+
     ;; FDL