[Yt-svn] yt-commit r1607 - in trunk/yt: . _amr_utils extensions/volume_rendering

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Wed Feb 3 23:15:33 PST 2010


Author: mturk
Date: Wed Feb  3 23:15:27 2010
New Revision: 1607
URL: http://yt.enzotools.org/changeset/1607

Log:
Making nsamples an option to the direct_ray_cast function, moving it into the
TransferFunctionProxy object and re-cythonizing



Modified:
   trunk/yt/_amr_utils/VolumeIntegrator.pyx
   trunk/yt/amr_utils.c
   trunk/yt/extensions/volume_rendering/software_sampler.py

Modified: trunk/yt/_amr_utils/VolumeIntegrator.pyx
==============================================================================
--- trunk/yt/_amr_utils/VolumeIntegrator.pyx	(original)
+++ trunk/yt/_amr_utils/VolumeIntegrator.pyx	Wed Feb  3 23:15:27 2010
@@ -75,6 +75,7 @@
     cdef np.float64_t x_bounds[2]
     cdef np.float64_t *vs[4]
     cdef int nbins
+    cdef public int ns
     cdef np.float64_t dbin
     cdef np.float64_t light_color[3]
     cdef np.float64_t light_dir[3]
@@ -215,7 +216,6 @@
     cdef np.float64_t right_edge[3]
     cdef np.float64_t dds[3]
     cdef public np.float64_t min_dds
-    cdef int ns
     cdef int dims[3]
 
     @cython.boundscheck(False)
@@ -244,7 +244,6 @@
         # turn.  Might benefit from a more sophisticated intersection check,
         # like http://courses.csusm.edu/cs697exz/ray_box.htm
         cdef int vi, vj, hit, i, ni, nj, nn
-        self.ns = 5 #* (1 + <int> log2(self.dds[0] / self.min_dds))
         cdef int iter[4]
         cdef np.float64_t v_pos[3], v_dir[3], rgba[4], extrema[4]
         self.calculate_extent(vp, extrema)
@@ -396,8 +395,8 @@
         cdef np.float64_t cp[3], dp[3], temp, dt, t, dv
         cdef np.float64_t grad[3]
         cdef int dti, i
-        dt = (exit_t - enter_t) / (self.ns-1) # five samples, so divide by four
-        for dti in range(self.ns - 1):
+        dt = (exit_t - enter_t) / (tf.ns-1) # five samples, so divide by four
+        for dti in range(tf.ns - 1):
             t = enter_t + dt * dti
             for i in range(3):
                 cp[i] = v_pos[i] + t * v_dir[i]

Modified: trunk/yt/amr_utils.c
==============================================================================
--- trunk/yt/amr_utils.c	(original)
+++ trunk/yt/amr_utils.c	Wed Feb  3 23:15:27 2010
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.11.3 on Thu Jan 21 20:35:22 2010 */
+/* Generated by Cython 0.12.1 on Wed Feb  3 23:14:23 2010 */
 
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
@@ -6,6 +6,7 @@
 #ifndef Py_PYTHON_H
     #error Python headers needed to compile C extensions, please install development version of Python.
 #else
+
 #ifndef PY_LONG_LONG
   #define PY_LONG_LONG LONG_LONG
 #endif
@@ -15,7 +16,9 @@
 #if PY_VERSION_HEX < 0x02040000
   #define METH_COEXIST 0
   #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
+  #define PyDict_Contains(d,o)   PySequence_Contains(d,o)
 #endif
+
 #if PY_VERSION_HEX < 0x02050000
   typedef int Py_ssize_t;
   #define PY_SSIZE_T_MAX INT_MAX
@@ -25,7 +28,9 @@
   #define PyInt_AsSsize_t(o)   PyInt_AsLong(o)
   #define PyNumber_Index(o)    PyNumber_Int(o)
   #define PyIndex_Check(o)     PyNumber_Check(o)
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
 #endif
+
 #if PY_VERSION_HEX < 0x02060000
   #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
   #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
@@ -35,17 +40,17 @@
   #define PyType_Modified(t)
 
   typedef struct {
-       void *buf;
-       PyObject *obj;
-       Py_ssize_t len;
-       Py_ssize_t itemsize;
-       int readonly;
-       int ndim;
-       char *format;
-       Py_ssize_t *shape;
-       Py_ssize_t *strides;
-       Py_ssize_t *suboffsets;
-       void *internal;
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
   } Py_buffer;
 
   #define PyBUF_SIMPLE 0
@@ -59,22 +64,32 @@
   #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
 
 #endif
+
 #if PY_MAJOR_VERSION < 3
   #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
 #else
   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
 #endif
+
 #if PY_MAJOR_VERSION >= 3
   #define Py_TPFLAGS_CHECKTYPES 0
   #define Py_TPFLAGS_HAVE_INDEX 0
 #endif
+
 #if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
   #define Py_TPFLAGS_HAVE_NEWBUFFER 0
 #endif
+
 #if PY_MAJOR_VERSION >= 3
   #define PyBaseString_Type            PyUnicode_Type
-  #define PyString_Type                PyBytes_Type
-  #define PyString_CheckExact          PyBytes_CheckExact
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#else
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_CheckExact           PyString_CheckExact
+#endif
+
+#if PY_MAJOR_VERSION >= 3
   #define PyInt_Type                   PyLong_Type
   #define PyInt_Check(op)              PyLong_Check(op)
   #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
@@ -89,13 +104,17 @@
   #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
   #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
 #else
   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
-  #define PyBytes_Type                 PyString_Type
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+
 #endif
+
 #if PY_MAJOR_VERSION >= 3
   #define PyMethod_New(func, self, klass) PyInstanceMethod_New(func)
 #endif
+
 #if !defined(WIN32) && !defined(MS_WINDOWS)
   #ifndef __stdcall
     #define __stdcall
@@ -109,6 +128,7 @@
 #else
   #define _USE_MATH_DEFINES
 #endif
+
 #if PY_VERSION_HEX < 0x02050000
   #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
   #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
@@ -118,6 +138,7 @@
   #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
   #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
 #endif
+
 #if PY_VERSION_HEX < 0x02050000
   #define __Pyx_NAMESTR(n) ((char *)(n))
   #define __Pyx_DOCSTR(n)  ((char *)(n))
@@ -135,24 +156,21 @@
 #include "stdlib.h"
 #include "stdio.h"
 #include "numpy/arrayobject.h"
+#include "numpy/ufuncobject.h"
 #include "math.h"
 #include "FixedInterpolator.h"
-#define __PYX_USE_C99_COMPLEX defined(_Complex_I)
 
-
-#ifdef __GNUC__
-#define INLINE __inline__
-#elif _WIN32
-#define INLINE __inline
-#else
-#define INLINE 
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #else
+    #define CYTHON_INLINE 
+  #endif
 #endif
 
-typedef struct {PyObject **p; char *s; long n; char is_unicode; char intern; char is_identifier;} __Pyx_StringTabEntry; /*proto*/
-
-
-
-static int __pyx_skip_dispatch = 0;
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
 
 
 /* Type Conversion Predeclarations */
@@ -171,8 +189,8 @@
 #define __Pyx_PyBytes_AsUString(s)        ((unsigned char*) __Pyx_PyBytes_AsString(s))
 
 #define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
-static INLINE int __Pyx_PyObject_IsTrue(PyObject*);
-static INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
 
 #if !defined(T_PYSSIZET)
 #if PY_VERSION_HEX < 0x02050000
@@ -236,9 +254,9 @@
 #endif
 #endif
 
-static INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
-static INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
-static INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
 
 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
 
@@ -267,607 +285,152 @@
 static const char *__pyx_filename;
 static const char **__pyx_f;
 
-static char __pyx_mdoc[] = "\nContainer file to hold all our Cython routines.  This is to avoid problems with\nstatic linking.\n\nAuthor: Matthew Turk <matthewturk at gmail.com>\nAffiliation: KIPAC/SLAC/Stanford\nHomepage: http://yt.enzotools.org/\nLicense:\n  Copyright (C) 2008 Matthew Turk.  All Rights Reserved.\n\n  This file is part of yt.\n\n  yt is free software; you can redistribute it and/or modify\n  it under the terms of the GNU General Public License as published by\n  the Free Software Foundation; either version 3 of the License, or\n  (at your option) any later version.\n\n  This program is distributed in the hope that it will be useful,\n  but WITHOUT ANY WARRANTY; without even the implied warranty of\n  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  GNU General Public License for more details.\n\n  You should have received a copy of the GNU General Public License\n  along with this program.  If not, see <http://www.gnu.org/licenses/>.\n";
-
-
-#ifdef CYTHON_REFNANNY
-typedef struct {
-  void (*INCREF)(void*, PyObject*, int);
-  void (*DECREF)(void*, PyObject*, int);
-  void (*GOTREF)(void*, PyObject*, int);
-  void (*GIVEREF)(void*, PyObject*, int);
-  void* (*NewContext)(const char*, int, const char*);
-  void (*FinishContext)(void**);
-} __Pyx_RefnannyAPIStruct;
-static __Pyx_RefnannyAPIStruct *__Pyx_Refnanny = NULL;
-#define __Pyx_ImportRefcountAPI(name)   (__Pyx_RefnannyAPIStruct *) PyCObject_Import((char *)name, (char *)"RefnannyAPI")
-#define __Pyx_INCREF(r) __Pyx_Refnanny->INCREF(__pyx_refchk, (PyObject *)(r), __LINE__)
-#define __Pyx_DECREF(r) __Pyx_Refnanny->DECREF(__pyx_refchk, (PyObject *)(r), __LINE__)
-#define __Pyx_GOTREF(r) __Pyx_Refnanny->GOTREF(__pyx_refchk, (PyObject *)(r), __LINE__)
-#define __Pyx_GIVEREF(r) __Pyx_Refnanny->GIVEREF(__pyx_refchk, (PyObject *)(r), __LINE__)
-#define __Pyx_XDECREF(r) if((r) == NULL) ; else __Pyx_DECREF(r)
-#define __Pyx_SetupRefcountContext(name)   void* __pyx_refchk = __Pyx_Refnanny->NewContext((name), __LINE__, __FILE__)
-#define __Pyx_FinishRefcountContext()   __Pyx_Refnanny->FinishContext(&__pyx_refchk)
-#else
-#define __Pyx_INCREF(r) Py_INCREF(r)
-#define __Pyx_DECREF(r) Py_DECREF(r)
-#define __Pyx_GOTREF(r)
-#define __Pyx_GIVEREF(r)
-#define __Pyx_XDECREF(r) Py_XDECREF(r)
-#define __Pyx_SetupRefcountContext(name)
-#define __Pyx_FinishRefcountContext()
-#endif /* CYTHON_REFNANNY */
-#define __Pyx_XGIVEREF(r) if((r) == NULL) ; else __Pyx_GIVEREF(r)
-#define __Pyx_XGOTREF(r) if((r) == NULL) ; else __Pyx_GOTREF(r)
-
-static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
-    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
-
-static INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict,
-    const char* function_name, int kw_allowed); /*proto*/
-
-static void __Pyx_RaiseDoubleKeywordsError(
-    const char* func_name, PyObject* kw_name); /*proto*/
-
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/
-
-/* Run-time type information about structs used with buffers */
-struct __Pyx_StructField_;
-
-typedef struct {
-  const char* name; /* for error messages only */
-  struct __Pyx_StructField_* fields;
-  size_t size;     /* sizeof(type) */
-  char typegroup; /* _R_eal, _C_omplex, Signed _I_nt, _U_nsigned int, _S_truct, _P_ointer, _O_bject */
-} __Pyx_TypeInfo;
-
-typedef struct __Pyx_StructField_ {
-  __Pyx_TypeInfo* type;
-  const char* name;
-  size_t offset;
-} __Pyx_StructField;
 
-typedef struct {
-  __Pyx_StructField* field;
-  size_t parent_offset;
-} __Pyx_BufFmt_StackElem;
+#if !defined(CYTHON_CCOMPLEX)
+  #if defined(__cplusplus)
+    #define CYTHON_CCOMPLEX 1
+  #elif defined(_Complex_I)
+    #define CYTHON_CCOMPLEX 1
+  #else
+    #define CYTHON_CCOMPLEX 0
+  #endif
+#endif
 
+#if CYTHON_CCOMPLEX
+  #ifdef __cplusplus
+    #include <complex>
+  #else
+    #include <complex.h>
+  #endif
+#endif
 
-static INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
-static int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
+#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
+  #undef _Complex_I
+  #define _Complex_I 1.0fj
+#endif
 
-static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
-static INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+typedef npy_int8 __pyx_t_5numpy_int8_t;
 
+typedef npy_int16 __pyx_t_5numpy_int16_t;
 
-static INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
-    PyObject *r;
-    if (!j) return NULL;
-    r = PyObject_GetItem(o, j);
-    Py_DECREF(j);
-    return r;
-}
+typedef npy_int32 __pyx_t_5numpy_int32_t;
 
+typedef npy_int64 __pyx_t_5numpy_int64_t;
 
-#define __Pyx_GetItemInt_List(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
-                                                    __Pyx_GetItemInt_List_Fast(o, i, size <= sizeof(long)) : \
-                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+typedef npy_uint8 __pyx_t_5numpy_uint8_t;
 
-static INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
-    if (likely(o != Py_None)) {
-        if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
-            PyObject *r = PyList_GET_ITEM(o, i);
-            Py_INCREF(r);
-            return r;
-        }
-        else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
-            PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
-            Py_INCREF(r);
-            return r;
-        }
-    }
-    return __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
-}
+typedef npy_uint16 __pyx_t_5numpy_uint16_t;
 
-#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
-                                                    __Pyx_GetItemInt_Tuple_Fast(o, i, size <= sizeof(long)) : \
-                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+typedef npy_uint32 __pyx_t_5numpy_uint32_t;
 
-static INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
-    if (likely(o != Py_None)) {
-        if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
-            PyObject *r = PyTuple_GET_ITEM(o, i);
-            Py_INCREF(r);
-            return r;
-        }
-        else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
-            PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
-            Py_INCREF(r);
-            return r;
-        }
-    }
-    return __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
-}
+typedef npy_uint64 __pyx_t_5numpy_uint64_t;
 
+typedef npy_float32 __pyx_t_5numpy_float32_t;
 
-#define __Pyx_GetItemInt(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
-                                                    __Pyx_GetItemInt_Fast(o, i, size <= sizeof(long)) : \
-                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+typedef npy_float64 __pyx_t_5numpy_float64_t;
 
-static INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
-    PyObject *r;
-    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
-        r = PyList_GET_ITEM(o, i);
-        Py_INCREF(r);
-    }
-    else if (PyTuple_CheckExact(o) && ((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
-        r = PyTuple_GET_ITEM(o, i);
-        Py_INCREF(r);
-    }
-    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_item && (likely(i >= 0))) {
-        r = PySequence_GetItem(o, i);
-    }
-    else {
-        r = __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
-    }
-    return r;
-}
+typedef npy_long __pyx_t_5numpy_int_t;
 
-static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
-#define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0)
-#define __Pyx_BufPtrStrided4d(type, buf, i0, s0, i1, s1, i2, s2, i3, s3) (type)((char*)buf + i0 * s0 + i1 * s1 + i2 * s2 + i3 * s3)
-#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1)
+typedef npy_longlong __pyx_t_5numpy_long_t;
 
-static void __Pyx_RaiseBufferFallbackError(void); /*proto*/
-#define __Pyx_BufPtrStrided3d(type, buf, i0, s0, i1, s1, i2, s2) (type)((char*)buf + i0 * s0 + i1 * s1 + i2 * s2)
-static void __Pyx_RaiseBufferIndexError(int axis); /*proto*/
+typedef npy_intp __pyx_t_5numpy_intp_t;
 
-#define __Pyx_SetItemInt(o, i, v, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
-                                                    __Pyx_SetItemInt_Fast(o, i, v, size <= sizeof(long)) : \
-                                                    __Pyx_SetItemInt_Generic(o, to_py_func(i), v))
+typedef npy_uintp __pyx_t_5numpy_uintp_t;
 
-static INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
-    int r;
-    if (!j) return -1;
-    r = PyObject_SetItem(o, j, v);
-    Py_DECREF(j);
-    return r;
-}
+typedef npy_ulong __pyx_t_5numpy_uint_t;
 
-static INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int fits_long) {
-    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
-        Py_INCREF(v);
-        Py_DECREF(PyList_GET_ITEM(o, i));
-        PyList_SET_ITEM(o, i, v);
-        return 1;
-    }
-    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_ass_item && (likely(i >= 0)))
-        return PySequence_SetItem(o, i, v);
-    else {
-        PyObject *j = fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i);
-        return __Pyx_SetItemInt_Generic(o, j, v);
-    }
-}
+typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
 
-static INLINE void __Pyx_RaiseNoneNotIterableError(void);
+typedef npy_double __pyx_t_5numpy_float_t;
 
-static INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
+typedef npy_double __pyx_t_5numpy_double_t;
 
-static INLINE void __Pyx_RaiseTooManyValuesError(void);
+typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
 
-static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /*proto*/
+#if CYTHON_CCOMPLEX
+  #ifdef __cplusplus
+    typedef ::std::complex< float > __pyx_t_float_complex;
+  #else
+    typedef float _Complex __pyx_t_float_complex;
+  #endif
+#else
+    typedef struct { float real, imag; } __pyx_t_float_complex;
+#endif
 
-static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact); /*proto*/
-#if PY_MAJOR_VERSION < 3
-static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
-static void __Pyx_ReleaseBuffer(Py_buffer *view);
+#if CYTHON_CCOMPLEX
+  #ifdef __cplusplus
+    typedef ::std::complex< double > __pyx_t_double_complex;
+  #else
+    typedef double _Complex __pyx_t_double_complex;
+  #endif
 #else
-#define __Pyx_GetBuffer PyObject_GetBuffer
-#define __Pyx_ReleaseBuffer PyBuffer_Release
+    typedef struct { double real, imag; } __pyx_t_double_complex;
 #endif
 
-Py_ssize_t __Pyx_zeros[] = {0, 0, 0, 0};
-Py_ssize_t __Pyx_minusones[] = {-1, -1, -1, -1};
+/* Type declarations */
 
-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
+typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
 
-static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
 
-static INLINE PyObject *__Pyx_PyInt_to_py_npy_intp(npy_intp);
+typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
 
-static INLINE npy_int32 __Pyx_PyInt_from_py_npy_int32(PyObject *);
+typedef npy_cdouble __pyx_t_5numpy_complex_t;
 
-static INLINE PyObject *__Pyx_PyInt_to_py_npy_int32(npy_int32);
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":74
+ * cdef class VectorPlane
+ * 
+ * cdef class TransferFunctionProxy:             # <<<<<<<<<<<<<<
+ *     cdef np.float64_t x_bounds[2]
+ *     cdef np.float64_t *vs[4]
+ */
 
-static int __Pyx_Print(PyObject *, int); /*proto*/
-#if PY_MAJOR_VERSION >= 3
-static PyObject* __pyx_print = 0;
-static PyObject* __pyx_print_kwargs = 0;
-#endif
+struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_2yt_9amr_utils_TransferFunctionProxy *__pyx_vtab;
+  __pyx_t_5numpy_float64_t x_bounds[2];
+  __pyx_t_5numpy_float64_t *vs[4];
+  int nbins;
+  int ns;
+  __pyx_t_5numpy_float64_t dbin;
+  __pyx_t_5numpy_float64_t light_color[3];
+  __pyx_t_5numpy_float64_t light_dir[3];
+  int use_light;
+  PyObject *tf_obj;
+};
 
-static INLINE npy_int64 __Pyx_PyInt_from_py_npy_int64(PyObject *);
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":36
+ *         self.refined_pos = 0
+ * 
+ * cdef class OctreeGrid:             # <<<<<<<<<<<<<<
+ *     cdef public object child_indices, fields, left_edges, dimensions, dx
+ *     cdef public int level
+ */
 
-static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
-static int __Pyx_EndUnpack(PyObject *); /*proto*/
+struct __pyx_obj_2yt_9amr_utils_OctreeGrid {
+  PyObject_HEAD
+  PyObject *child_indices;
+  PyObject *fields;
+  PyObject *left_edges;
+  PyObject *dimensions;
+  PyObject *dx;
+  int level;
+};
 
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":53
+ *         self.level = level
+ * 
+ * cdef class OctreeGridList:             # <<<<<<<<<<<<<<
+ *     cdef public object grids
+ *     def __cinit__(self, grids):
+ */
 
-static INLINE PyObject *__Pyx_PyInt_to_py_npy_int64(npy_int64);
+struct __pyx_obj_2yt_9amr_utils_OctreeGridList {
+  PyObject_HEAD
+  PyObject *grids;
+};
 
-static INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
-    if (likely(PyList_CheckExact(L))) {
-        if (PyList_Append(L, x) < 0) return NULL;
-        Py_INCREF(Py_None);
-        return Py_None; /* this is just to have an accurate signature */
-    }
-    else {
-        PyObject *r, *m;
-        m = __Pyx_GetAttrString(L, "append");
-        if (!m) return NULL;
-        r = PyObject_CallFunctionObjArgs(m, x, NULL);
-        Py_DECREF(m);
-        return r;
-    }
-}
-
-#if __PYX_USE_C99_COMPLEX
-    #define __Pyx_REAL_PART(z) __real__(z)
-    #define __Pyx_IMAG_PART(z) __imag__(z)
-#else
-    #define __Pyx_REAL_PART(z) ((z).real)
-    #define __Pyx_IMAG_PART(z) ((z).imag)
-#endif
-
-#define __pyx_PyObject_from_complex(z) PyComplex_FromDoubles((double)__Pyx_REAL_PART(z), (double)__Pyx_IMAG_PART(z))
-
-#if __PYX_USE_C99_COMPLEX
-
-    typedef float _Complex __pyx_t_float_complex;
-    static INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
-      return x + y*(__pyx_t_float_complex)_Complex_I;
-    }
-    
-    #define __pyx_t_float_complex_is_zero(a) ((a) == 0)
-    #define __pyx_t_float_complex_eq(a, b) ((a) == (b))
-    #define __pyx_t_float_complex_add(a, b) ((a)+(b))
-    #define __pyx_t_float_complex_sub(a, b) ((a)-(b))
-    #define __pyx_t_float_complex_mul(a, b) ((a)*(b))
-    #define __pyx_t_float_complex_div(a, b) ((a)/(b))
-    #define __pyx_t_float_complex_neg(a) (-(a))
-
-#else
-
-    typedef struct { float real, imag; } __pyx_t_float_complex;
-    static INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
-      __pyx_t_float_complex c; c.real = x; c.imag = y; return c;
-    }
-    
-    static INLINE int __pyx_t_float_complex_is_zero(__pyx_t_float_complex a) {
-       return (a.real == 0) & (a.imag == 0);
-    }
-
-    static INLINE int __pyx_t_float_complex_eq(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-       return (a.real == b.real) & (a.imag == b.imag);
-    }
-
-    static INLINE __pyx_t_float_complex __pyx_t_float_complex_add(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-        __pyx_t_float_complex z;
-        z.real = a.real + b.real;
-        z.imag = a.imag + b.imag;
-        return z;
-    }
-
-    static INLINE __pyx_t_float_complex __pyx_t_float_complex_sub(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-        __pyx_t_float_complex z;
-        z.real = a.real - b.real;
-        z.imag = a.imag - b.imag;
-        return z;
-    }
-
-    static INLINE __pyx_t_float_complex __pyx_t_float_complex_mul(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-        __pyx_t_float_complex z;
-        z.real = a.real * b.real - a.imag * b.imag;
-        z.imag = a.real * b.imag + a.imag * b.real;
-        return z;
-    }
-
-    static INLINE __pyx_t_float_complex __pyx_t_float_complex_div(__pyx_t_float_complex a, __pyx_t_float_complex b) {
-        __pyx_t_float_complex z;
-        float denom = b.real*b.real + b.imag*b.imag;
-        z.real = (a.real * b.real + a.imag * b.imag) / denom;
-        z.imag = (a.imag * b.real - a.real * b.imag) / denom;
-        return z;
-    }
-
-    static INLINE __pyx_t_float_complex __pyx_t_float_complex_neg(__pyx_t_float_complex a) {
-        __pyx_t_float_complex z;
-        z.real = -a.real;
-        z.imag = -a.imag;
-        return z;
-    }
-
-#endif
-
-#if __PYX_USE_C99_COMPLEX
-
-    typedef double _Complex __pyx_t_double_complex;
-    static INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
-      return x + y*(__pyx_t_double_complex)_Complex_I;
-    }
-    
-    #define __pyx_t_double_complex_is_zero(a) ((a) == 0)
-    #define __pyx_t_double_complex_eq(a, b) ((a) == (b))
-    #define __pyx_t_double_complex_add(a, b) ((a)+(b))
-    #define __pyx_t_double_complex_sub(a, b) ((a)-(b))
-    #define __pyx_t_double_complex_mul(a, b) ((a)*(b))
-    #define __pyx_t_double_complex_div(a, b) ((a)/(b))
-    #define __pyx_t_double_complex_neg(a) (-(a))
-
-#else
-
-    typedef struct { double real, imag; } __pyx_t_double_complex;
-    static INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
-      __pyx_t_double_complex c; c.real = x; c.imag = y; return c;
-    }
-    
-    static INLINE int __pyx_t_double_complex_is_zero(__pyx_t_double_complex a) {
-       return (a.real == 0) & (a.imag == 0);
-    }
-
-    static INLINE int __pyx_t_double_complex_eq(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-       return (a.real == b.real) & (a.imag == b.imag);
-    }
-
-    static INLINE __pyx_t_double_complex __pyx_t_double_complex_add(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-        __pyx_t_double_complex z;
-        z.real = a.real + b.real;
-        z.imag = a.imag + b.imag;
-        return z;
-    }
-
-    static INLINE __pyx_t_double_complex __pyx_t_double_complex_sub(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-        __pyx_t_double_complex z;
-        z.real = a.real - b.real;
-        z.imag = a.imag - b.imag;
-        return z;
-    }
-
-    static INLINE __pyx_t_double_complex __pyx_t_double_complex_mul(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-        __pyx_t_double_complex z;
-        z.real = a.real * b.real - a.imag * b.imag;
-        z.imag = a.real * b.imag + a.imag * b.real;
-        return z;
-    }
-
-    static INLINE __pyx_t_double_complex __pyx_t_double_complex_div(__pyx_t_double_complex a, __pyx_t_double_complex b) {
-        __pyx_t_double_complex z;
-        double denom = b.real*b.real + b.imag*b.imag;
-        z.real = (a.real * b.real + a.imag * b.imag) / denom;
-        z.imag = (a.imag * b.real - a.real * b.imag) / denom;
-        return z;
-    }
-
-    static INLINE __pyx_t_double_complex __pyx_t_double_complex_neg(__pyx_t_double_complex a) {
-        __pyx_t_double_complex z;
-        z.real = -a.real;
-        z.imag = -a.imag;
-        return z;
-    }
-
-#endif
-
-#if __PYX_USE_C99_COMPLEX
-
-    typedef long double _Complex __pyx_t_long__double_complex;
-    static INLINE __pyx_t_long__double_complex __pyx_t_long__double_complex_from_parts(long double x, long double y) {
-      return x + y*(__pyx_t_long__double_complex)_Complex_I;
-    }
-    
-    #define __pyx_t_long__double_complex_is_zero(a) ((a) == 0)
-    #define __pyx_t_long__double_complex_eq(a, b) ((a) == (b))
-    #define __pyx_t_long__double_complex_add(a, b) ((a)+(b))
-    #define __pyx_t_long__double_complex_sub(a, b) ((a)-(b))
-    #define __pyx_t_long__double_complex_mul(a, b) ((a)*(b))
-    #define __pyx_t_long__double_complex_div(a, b) ((a)/(b))
-    #define __pyx_t_long__double_complex_neg(a) (-(a))
-
-#else
-
-    typedef struct { long double real, imag; } __pyx_t_long__double_complex;
-    static INLINE __pyx_t_long__double_complex __pyx_t_long__double_complex_from_parts(long double x, long double y) {
-      __pyx_t_long__double_complex c; c.real = x; c.imag = y; return c;
-    }
-    
-    static INLINE int __pyx_t_long__double_complex_is_zero(__pyx_t_long__double_complex a) {
-       return (a.real == 0) & (a.imag == 0);
-    }
-
-    static INLINE int __pyx_t_long__double_complex_eq(__pyx_t_long__double_complex a, __pyx_t_long__double_complex b) {
-       return (a.real == b.real) & (a.imag == b.imag);
-    }
-
-    static INLINE __pyx_t_long__double_complex __pyx_t_long__double_complex_add(__pyx_t_long__double_complex a, __pyx_t_long__double_complex b) {
-        __pyx_t_long__double_complex z;
-        z.real = a.real + b.real;
-        z.imag = a.imag + b.imag;
-        return z;
-    }
-
-    static INLINE __pyx_t_long__double_complex __pyx_t_long__double_complex_sub(__pyx_t_long__double_complex a, __pyx_t_long__double_complex b) {
-        __pyx_t_long__double_complex z;
-        z.real = a.real - b.real;
-        z.imag = a.imag - b.imag;
-        return z;
-    }
-
-    static INLINE __pyx_t_long__double_complex __pyx_t_long__double_complex_mul(__pyx_t_long__double_complex a, __pyx_t_long__double_complex b) {
-        __pyx_t_long__double_complex z;
-        z.real = a.real * b.real - a.imag * b.imag;
-        z.imag = a.real * b.imag + a.imag * b.real;
-        return z;
-    }
-
-    static INLINE __pyx_t_long__double_complex __pyx_t_long__double_complex_div(__pyx_t_long__double_complex a, __pyx_t_long__double_complex b) {
-        __pyx_t_long__double_complex z;
-        long double denom = b.real*b.real + b.imag*b.imag;
-        z.real = (a.real * b.real + a.imag * b.imag) / denom;
-        z.imag = (a.imag * b.real - a.real * b.imag) / denom;
-        return z;
-    }
-
-    static INLINE __pyx_t_long__double_complex __pyx_t_long__double_complex_neg(__pyx_t_long__double_complex a) {
-        __pyx_t_long__double_complex z;
-        z.real = -a.real;
-        z.imag = -a.imag;
-        return z;
-    }
-
-#endif
-
-static INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
-
-static INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
-
-static INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
-
-static INLINE char __Pyx_PyInt_AsChar(PyObject *);
-
-static INLINE short __Pyx_PyInt_AsShort(PyObject *);
-
-static INLINE int __Pyx_PyInt_AsInt(PyObject *);
-
-static INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
-
-static INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
-
-static INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
-
-static INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
-
-static INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
-
-static INLINE long __Pyx_PyInt_AsLong(PyObject *);
-
-static INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
-
-static INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
-
-static INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
-
-static void __Pyx_WriteUnraisable(const char *name); /*proto*/
-
-static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
-
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, long size);  /*proto*/
-
-static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
-
-static void __Pyx_AddTraceback(const char *funcname); /*proto*/
-
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
-
-/* Type declarations */
-
-typedef npy_int8 __pyx_t_5numpy_int8_t;
-
-typedef npy_int16 __pyx_t_5numpy_int16_t;
-
-typedef npy_int32 __pyx_t_5numpy_int32_t;
-
-typedef npy_int64 __pyx_t_5numpy_int64_t;
-
-typedef npy_uint8 __pyx_t_5numpy_uint8_t;
-
-typedef npy_uint16 __pyx_t_5numpy_uint16_t;
-
-typedef npy_uint32 __pyx_t_5numpy_uint32_t;
-
-typedef npy_uint64 __pyx_t_5numpy_uint64_t;
-
-typedef npy_float32 __pyx_t_5numpy_float32_t;
-
-typedef npy_float64 __pyx_t_5numpy_float64_t;
-
-typedef __pyx_t_float_complex __pyx_t_5numpy_complex64_t;
-
-typedef __pyx_t_double_complex __pyx_t_5numpy_complex128_t;
-
-typedef npy_long __pyx_t_5numpy_int_t;
-
-typedef npy_longlong __pyx_t_5numpy_long_t;
-
-typedef npy_ulong __pyx_t_5numpy_uint_t;
-
-typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
-
-typedef npy_double __pyx_t_5numpy_float_t;
-
-typedef npy_double __pyx_t_5numpy_double_t;
-
-typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
-
-typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
-
-typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
-
-typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
-
-typedef npy_cdouble __pyx_t_5numpy_complex_t;
-
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":74
- * cdef class VectorPlane
- * 
- * cdef class TransferFunctionProxy:             # <<<<<<<<<<<<<<
- *     cdef np.float64_t x_bounds[2]
- *     cdef np.float64_t *vs[4]
- */
-
-struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy {
-  PyObject_HEAD
-  struct __pyx_vtabstruct_2yt_9amr_utils_TransferFunctionProxy *__pyx_vtab;
-  __pyx_t_5numpy_float64_t x_bounds[2];
-  __pyx_t_5numpy_float64_t *vs[4];
-  int nbins;
-  __pyx_t_5numpy_float64_t dbin;
-  __pyx_t_5numpy_float64_t light_color[3];
-  __pyx_t_5numpy_float64_t light_dir[3];
-  int use_light;
-  PyObject *tf_obj;
-};
-
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":36
- *         self.refined_pos = 0
- * 
- * cdef class OctreeGrid:             # <<<<<<<<<<<<<<
- *     cdef public object child_indices, fields, left_edges, dimensions, dx
- *     cdef public int level
- */
-
-struct __pyx_obj_2yt_9amr_utils_OctreeGrid {
-  PyObject_HEAD
-  PyObject *child_indices;
-  PyObject *fields;
-  PyObject *left_edges;
-  PyObject *dimensions;
-  PyObject *dx;
-  int level;
-};
-
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":53
- *         self.level = level
- * 
- * cdef class OctreeGridList:             # <<<<<<<<<<<<<<
- *     cdef public object grids
- *     def __cinit__(self, grids):
- */
-
-struct __pyx_obj_2yt_9amr_utils_OctreeGridList {
-  PyObject_HEAD
-  PyObject *grids;
-};
-
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":442
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":441
  *         return 1
  * 
  * cdef class ProtoPrism:             # <<<<<<<<<<<<<<
@@ -899,7 +462,7 @@
   int refined_pos;
 };
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":410
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":409
  *             tf.eval_transfer(dt, dv, rgba, grad)
  * 
  * cdef class GridFace:             # <<<<<<<<<<<<<<
@@ -945,7 +508,7 @@
   __pyx_t_5numpy_float64_t *y_vec;
 };
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":209
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":210
  *             tv[(((k*self.nv)+j)*self.nv+i)] = fv[k]
  * 
  * cdef class PartitionedGrid:             # <<<<<<<<<<<<<<
@@ -964,12 +527,11 @@
   __pyx_t_5numpy_float64_t right_edge[3];
   __pyx_t_5numpy_float64_t dds[3];
   __pyx_t_5numpy_float64_t min_dds;
-  int ns;
   int dims[3];
 };
 
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":442
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":441
  *         return 1
  * 
  * cdef class ProtoPrism:             # <<<<<<<<<<<<<<
@@ -983,7 +545,7 @@
 static struct __pyx_vtabstruct_2yt_9amr_utils_ProtoPrism *__pyx_vtabptr_2yt_9amr_utils_ProtoPrism;
 
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":149
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":150
  *         #  dst.a   = dst.a   + (1 - dst.a) * src.a
  * 
  * cdef class VectorPlane:             # <<<<<<<<<<<<<<
@@ -999,7 +561,7 @@
 static struct __pyx_vtabstruct_2yt_9amr_utils_VectorPlane *__pyx_vtabptr_2yt_9amr_utils_VectorPlane;
 
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":209
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":210
  *             tv[(((k*self.nv)+j)*self.nv+i)] = fv[k]
  * 
  * cdef class PartitionedGrid:             # <<<<<<<<<<<<<<
@@ -1015,7 +577,7 @@
 static struct __pyx_vtabstruct_2yt_9amr_utils_PartitionedGrid *__pyx_vtabptr_2yt_9amr_utils_PartitionedGrid;
 
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":410
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":409
  *             tf.eval_transfer(dt, dv, rgba, grad)
  * 
  * cdef class GridFace:             # <<<<<<<<<<<<<<
@@ -1029,20 +591,404 @@
 static struct __pyx_vtabstruct_2yt_9amr_utils_GridFace *__pyx_vtabptr_2yt_9amr_utils_GridFace;
 
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":74
- * cdef class VectorPlane
- * 
- * cdef class TransferFunctionProxy:             # <<<<<<<<<<<<<<
- *     cdef np.float64_t x_bounds[2]
- *     cdef np.float64_t *vs[4]
- */
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":74
+ * cdef class VectorPlane
+ * 
+ * cdef class TransferFunctionProxy:             # <<<<<<<<<<<<<<
+ *     cdef np.float64_t x_bounds[2]
+ *     cdef np.float64_t *vs[4]
+ */
+
+struct __pyx_vtabstruct_2yt_9amr_utils_TransferFunctionProxy {
+  void (*eval_transfer)(struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *, __pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t *, __pyx_t_5numpy_float64_t *);
+};
+static struct __pyx_vtabstruct_2yt_9amr_utils_TransferFunctionProxy *__pyx_vtabptr_2yt_9amr_utils_TransferFunctionProxy;
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct * __Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+  end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+  }
+  #define __Pyx_RefNannySetupContext(name)           void *__pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+  #define __Pyx_RefNannyFinishContext()           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r);} } while(0)
+#else
+  #define __Pyx_RefNannySetupContext(name)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);} } while(0)
+#define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r);} } while(0)
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict,
+    const char* function_name, int kw_allowed); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/
+
+/* Run-time type information about structs used with buffers */
+struct __Pyx_StructField_;
+
+typedef struct {
+  const char* name; /* for error messages only */
+  struct __Pyx_StructField_* fields;
+  size_t size;     /* sizeof(type) */
+  char typegroup; /* _R_eal, _C_omplex, Signed _I_nt, _U_nsigned int, _S_truct, _P_ointer, _O_bject */
+} __Pyx_TypeInfo;
+
+typedef struct __Pyx_StructField_ {
+  __Pyx_TypeInfo* type;
+  const char* name;
+  size_t offset;
+} __Pyx_StructField;
+
+typedef struct {
+  __Pyx_StructField* field;
+  size_t parent_offset;
+} __Pyx_BufFmt_StackElem;
+
+
+static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
+static int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+    PyObject *r;
+    if (!j) return NULL;
+    r = PyObject_GetItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+
+
+#define __Pyx_GetItemInt_List(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_List_Fast(o, i, size <= sizeof(long)) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
+    if (likely(o != Py_None)) {
+        if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+            PyObject *r = PyList_GET_ITEM(o, i);
+            Py_INCREF(r);
+            return r;
+        }
+        else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
+            PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
+            Py_INCREF(r);
+            return r;
+        }
+    }
+    return __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
+}
+
+#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Tuple_Fast(o, i, size <= sizeof(long)) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
+    if (likely(o != Py_None)) {
+        if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+            PyObject *r = PyTuple_GET_ITEM(o, i);
+            Py_INCREF(r);
+            return r;
+        }
+        else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
+            PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
+            Py_INCREF(r);
+            return r;
+        }
+    }
+    return __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
+}
+
+
+#define __Pyx_GetItemInt(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Fast(o, i, size <= sizeof(long)) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
+    PyObject *r;
+    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+        r = PyList_GET_ITEM(o, i);
+        Py_INCREF(r);
+    }
+    else if (PyTuple_CheckExact(o) && ((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+        r = PyTuple_GET_ITEM(o, i);
+        Py_INCREF(r);
+    }
+    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_item && (likely(i >= 0))) {
+        r = PySequence_GetItem(o, i);
+    }
+    else {
+        r = __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
+    }
+    return r;
+}
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+#define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0)
+#define __Pyx_BufPtrStrided4d(type, buf, i0, s0, i1, s1, i2, s2, i3, s3) (type)((char*)buf + i0 * s0 + i1 * s1 + i2 * s2 + i3 * s3)
+#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1)
+
+static void __Pyx_RaiseBufferFallbackError(void); /*proto*/
+#define __Pyx_BufPtrStrided3d(type, buf, i0, s0, i1, s1, i2, s2) (type)((char*)buf + i0 * s0 + i1 * s1 + i2 * s2)
+
+static CYTHON_INLINE long __Pyx_mod_long(long, long); /* proto */
+static void __Pyx_RaiseBufferIndexError(int axis); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
+
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(void);
+
+static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
+static int __Pyx_EndUnpack(PyObject *); /*proto*/
+
+#define __Pyx_SetItemInt(o, i, v, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_SetItemInt_Fast(o, i, v, size <= sizeof(long)) : \
+                                                    __Pyx_SetItemInt_Generic(o, to_py_func(i), v))
+
+static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
+    int r;
+    if (!j) return -1;
+    r = PyObject_SetItem(o, j, v);
+    Py_DECREF(j);
+    return r;
+}
+
+static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int fits_long) {
+    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+        Py_INCREF(v);
+        Py_DECREF(PyList_GET_ITEM(o, i));
+        PyList_SET_ITEM(o, i, v);
+        return 1;
+    }
+    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_ass_item && (likely(i >= 0)))
+        return PySequence_SetItem(o, i, v);
+    else {
+        PyObject *j = fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i);
+        return __Pyx_SetItemInt_Generic(o, j, v);
+    }
+}
+
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
+    if (likely(PyList_CheckExact(L))) {
+        if (PyList_Append(L, x) < 0) return NULL;
+        Py_INCREF(Py_None);
+        return Py_None; /* this is just to have an accurate signature */
+    }
+    else {
+        PyObject *r, *m;
+        m = __Pyx_GetAttrString(L, "append");
+        if (!m) return NULL;
+        r = PyObject_CallFunctionObjArgs(m, x, NULL);
+        Py_DECREF(m);
+        return r;
+    }
+}
+
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
+
+static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+#if PY_MAJOR_VERSION < 3
+static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
+static void __Pyx_ReleaseBuffer(Py_buffer *view);
+#else
+#define __Pyx_GetBuffer PyObject_GetBuffer
+#define __Pyx_ReleaseBuffer PyBuffer_Release
+#endif
+
+Py_ssize_t __Pyx_zeros[] = {0, 0, 0, 0};
+Py_ssize_t __Pyx_minusones[] = {-1, -1, -1, -1};
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_intp(npy_intp);
+
+static CYTHON_INLINE npy_int32 __Pyx_PyInt_from_py_npy_int32(PyObject *);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_int32(npy_int32);
+
+static int __Pyx_Print(PyObject *, int); /*proto*/
+#if PY_MAJOR_VERSION >= 3
+static PyObject* __pyx_print = 0;
+static PyObject* __pyx_print_kwargs = 0;
+#endif
+
+static CYTHON_INLINE npy_int64 __Pyx_PyInt_from_py_npy_int64(PyObject *);
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_int64(npy_int64);
+
+#if CYTHON_CCOMPLEX
+  #ifdef __cplusplus
+    #define __Pyx_CREAL(z) ((z).real())
+    #define __Pyx_CIMAG(z) ((z).imag())
+  #else
+    #define __Pyx_CREAL(z) (__real__(z))
+    #define __Pyx_CIMAG(z) (__imag__(z))
+  #endif
+#else
+    #define __Pyx_CREAL(z) ((z).real)
+    #define __Pyx_CIMAG(z) ((z).imag)
+#endif
+
+#if defined(_WIN32) && defined(__cplusplus) && CYTHON_CCOMPLEX
+    #define __Pyx_SET_CREAL(z,x) ((z).real(x))
+    #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
+#else
+    #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
+    #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
+#endif
+
+static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
+
+#if CYTHON_CCOMPLEX
+    #define __Pyx_c_eqf(a, b)   ((a)==(b))
+    #define __Pyx_c_sumf(a, b)  ((a)+(b))
+    #define __Pyx_c_difff(a, b) ((a)-(b))
+    #define __Pyx_c_prodf(a, b) ((a)*(b))
+    #define __Pyx_c_quotf(a, b) ((a)/(b))
+    #define __Pyx_c_negf(a)     (-(a))
+  #ifdef __cplusplus
+    #define __Pyx_c_is_zerof(z) ((z)==(float)0)
+    #define __Pyx_c_conjf(z)    (::std::conj(z))
+    /*#define __Pyx_c_absf(z)     (::std::abs(z))*/
+  #else
+    #define __Pyx_c_is_zerof(z) ((z)==0)
+    #define __Pyx_c_conjf(z)    (conjf(z))
+    /*#define __Pyx_c_absf(z)     (cabsf(z))*/
+ #endif
+#else
+    static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex, __pyx_t_float_complex);
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_complex, __pyx_t_float_complex);
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_complex, __pyx_t_float_complex);
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_complex, __pyx_t_float_complex);
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_complex, __pyx_t_float_complex);
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_complex);
+    static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex);
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_complex);
+    /*static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex);*/
+#endif
+
+static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
+
+#if CYTHON_CCOMPLEX
+    #define __Pyx_c_eq(a, b)   ((a)==(b))
+    #define __Pyx_c_sum(a, b)  ((a)+(b))
+    #define __Pyx_c_diff(a, b) ((a)-(b))
+    #define __Pyx_c_prod(a, b) ((a)*(b))
+    #define __Pyx_c_quot(a, b) ((a)/(b))
+    #define __Pyx_c_neg(a)     (-(a))
+  #ifdef __cplusplus
+    #define __Pyx_c_is_zero(z) ((z)==(double)0)
+    #define __Pyx_c_conj(z)    (::std::conj(z))
+    /*#define __Pyx_c_abs(z)     (::std::abs(z))*/
+  #else
+    #define __Pyx_c_is_zero(z) ((z)==0)
+    #define __Pyx_c_conj(z)    (conj(z))
+    /*#define __Pyx_c_abs(z)     (cabs(z))*/
+ #endif
+#else
+    static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex, __pyx_t_double_complex);
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_complex, __pyx_t_double_complex);
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_complex, __pyx_t_double_complex);
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_complex, __pyx_t_double_complex);
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_complex, __pyx_t_double_complex);
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_complex);
+    static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex);
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_complex);
+    /*static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex);*/
+#endif
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static void __Pyx_WriteUnraisable(const char *name); /*proto*/
+
+static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, long size, int strict);  /*proto*/
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
 
-struct __pyx_vtabstruct_2yt_9amr_utils_TransferFunctionProxy {
-  void (*eval_transfer)(struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *, __pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t *, __pyx_t_5numpy_float64_t *);
-};
-static struct __pyx_vtabstruct_2yt_9amr_utils_TransferFunctionProxy *__pyx_vtabptr_2yt_9amr_utils_TransferFunctionProxy;
+static void __Pyx_AddTraceback(const char *funcname); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
 /* Module declarations from python_buffer */
 
+/* Module declarations from python_ref */
+
 /* Module declarations from stdlib */
 
 /* Module declarations from stdio */
@@ -1055,7 +1001,15 @@
 static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0;
 static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0;
 static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
-static INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/
+static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0;
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *); /*proto*/
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *, PyObject *); /*proto*/
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *, PyObject *, PyObject *); /*proto*/
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
+static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/
+static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *, PyObject *); /*proto*/
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *); /*proto*/
 /* Module declarations from cython */
 
 /* Module declarations from yt.amr_utils */
@@ -1068,14 +1022,14 @@
 static PyTypeObject *__pyx_ptype_2yt_9amr_utils_PartitionedGrid = 0;
 static PyTypeObject *__pyx_ptype_2yt_9amr_utils_GridFace = 0;
 static PyTypeObject *__pyx_ptype_2yt_9amr_utils_ProtoPrism = 0;
-static INLINE int __pyx_f_2yt_9amr_utils_imax(int, int); /*proto*/
-static INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fmax(__pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t); /*proto*/
-static INLINE int __pyx_f_2yt_9amr_utils_imin(int, int); /*proto*/
-static INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fmin(__pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t); /*proto*/
-static INLINE int __pyx_f_2yt_9amr_utils_iclip(int, int, int); /*proto*/
-static INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fclip(__pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t); /*proto*/
-static INLINE __pyx_t_5numpy_int64_t __pyx_f_2yt_9amr_utils_i64max(__pyx_t_5numpy_int64_t, __pyx_t_5numpy_int64_t); /*proto*/
-static INLINE __pyx_t_5numpy_int64_t __pyx_f_2yt_9amr_utils_i64min(__pyx_t_5numpy_int64_t, __pyx_t_5numpy_int64_t); /*proto*/
+static CYTHON_INLINE int __pyx_f_2yt_9amr_utils_imax(int, int); /*proto*/
+static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fmax(__pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t); /*proto*/
+static CYTHON_INLINE int __pyx_f_2yt_9amr_utils_imin(int, int); /*proto*/
+static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fmin(__pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t); /*proto*/
+static CYTHON_INLINE int __pyx_f_2yt_9amr_utils_iclip(int, int, int); /*proto*/
+static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fclip(__pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t, __pyx_t_5numpy_float64_t); /*proto*/
+static CYTHON_INLINE __pyx_t_5numpy_int64_t __pyx_f_2yt_9amr_utils_i64max(__pyx_t_5numpy_int64_t, __pyx_t_5numpy_int64_t); /*proto*/
+static CYTHON_INLINE __pyx_t_5numpy_int64_t __pyx_f_2yt_9amr_utils_i64min(__pyx_t_5numpy_int64_t, __pyx_t_5numpy_int64_t); /*proto*/
 static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t = { "numpy.int32_t", NULL, sizeof(__pyx_t_5numpy_int32_t), 'I' };
 static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t = { "numpy.float64_t", NULL, sizeof(__pyx_t_5numpy_float64_t), 'R' };
 static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_int_t = { "numpy.int_t", NULL, sizeof(__pyx_t_5numpy_int_t), 'I' };
@@ -1087,312 +1041,365 @@
 int __pyx_module_is_main_yt__amr_utils = 0;
 
 /* Implementation of yt.amr_utils */
-static PyObject *__pyx_int_2;
-static PyObject *__pyx_int_1;
-static PyObject *__pyx_int_3;
-static PyObject *__pyx_int_4;
-static PyObject *__pyx_int_0;
-static char __pyx_k___main__[] = "__main__";
-static PyObject *__pyx_kp___main__;
-static char __pyx_k___cinit__[] = "__cinit__";
-static PyObject *__pyx_kp___cinit__;
-static char __pyx_k___getitem__[] = "__getitem__";
-static PyObject *__pyx_kp___getitem__;
-static char __pyx_k_cast_plane[] = "cast_plane";
-static PyObject *__pyx_kp_cast_plane;
-static char __pyx_k___init__[] = "__init__";
-static PyObject *__pyx_kp___init__;
-static char __pyx_k_sweep[] = "sweep";
-static PyObject *__pyx_kp_sweep;
-static char __pyx_k_get_brick[] = "get_brick";
-static PyObject *__pyx_kp_get_brick;
-static char __pyx_k_child_indices[] = "child_indices";
-static PyObject *__pyx_kp_child_indices;
-static char __pyx_k_fields[] = "fields";
-static PyObject *__pyx_kp_fields;
-static char __pyx_k_left_edges[] = "left_edges";
-static PyObject *__pyx_kp_left_edges;
-static char __pyx_k_dimensions[] = "dimensions";
-static PyObject *__pyx_kp_dimensions;
-static char __pyx_k_dx[] = "dx";
-static PyObject *__pyx_kp_dx;
-static char __pyx_k_level[] = "level";
-static PyObject *__pyx_kp_level;
-static char __pyx_k_grids[] = "grids";
-static PyObject *__pyx_kp_grids;
-static char __pyx_k_item[] = "item";
-static PyObject *__pyx_kp_item;
-static char __pyx_k_i_i[] = "i_i";
-static PyObject *__pyx_kp_i_i;
-static char __pyx_k_j_i[] = "j_i";
-static PyObject *__pyx_kp_j_i;
-static char __pyx_k_k_i[] = "k_i";
-static PyObject *__pyx_kp_k_i;
-static char __pyx_k_i_f[] = "i_f";
-static PyObject *__pyx_kp_i_f;
-static char __pyx_k_j_f[] = "j_f";
-static PyObject *__pyx_kp_j_f;
-static char __pyx_k_k_f[] = "k_f";
-static PyObject *__pyx_kp_k_f;
-static char __pyx_k_curpos[] = "curpos";
-static PyObject *__pyx_kp_curpos;
-static char __pyx_k_gi[] = "gi";
-static PyObject *__pyx_kp_gi;
-static char __pyx_k_output[] = "output";
-static PyObject *__pyx_kp_output;
-static char __pyx_k_refined[] = "refined";
-static PyObject *__pyx_kp_refined;
-static char __pyx_k_genealogy[] = "genealogy";
-static PyObject *__pyx_kp_genealogy;
-static char __pyx_k_corners[] = "corners";
-static PyObject *__pyx_kp_corners;
-static char __pyx_k_table[] = "table";
-static PyObject *__pyx_kp_table;
-static char __pyx_k_x_vals[] = "x_vals";
-static PyObject *__pyx_kp_x_vals;
-static char __pyx_k_x_bins[] = "x_bins";
-static PyObject *__pyx_kp_x_bins;
-static char __pyx_k_x_is[] = "x_is";
-static PyObject *__pyx_kp_x_is;
-static char __pyx_k_y_vals[] = "y_vals";
-static PyObject *__pyx_kp_y_vals;
-static char __pyx_k_y_bins[] = "y_bins";
-static PyObject *__pyx_kp_y_bins;
-static char __pyx_k_y_is[] = "y_is";
-static PyObject *__pyx_kp_y_is;
-static char __pyx_k_z_vals[] = "z_vals";
-static PyObject *__pyx_kp_z_vals;
-static char __pyx_k_z_bins[] = "z_bins";
-static PyObject *__pyx_kp_z_bins;
-static char __pyx_k_z_is[] = "z_is";
-static PyObject *__pyx_kp_z_is;
-static char __pyx_k_points[] = "points";
-static PyObject *__pyx_kp_points;
-static char __pyx_k_pmask[] = "pmask";
-static PyObject *__pyx_kp_pmask;
-static char __pyx_k_left_edge[] = "left_edge";
-static PyObject *__pyx_kp_left_edge;
-static char __pyx_k_right_edge[] = "right_edge";
-static PyObject *__pyx_kp_right_edge;
-static char __pyx_k_mask[] = "mask";
-static PyObject *__pyx_kp_mask;
-static char __pyx_k_i_s[] = "i_s";
-static PyObject *__pyx_kp_i_s;
-static char __pyx_k_o_s[] = "o_s";
-static PyObject *__pyx_kp_o_s;
-static char __pyx_k_e[] = "e";
-static PyObject *__pyx_kp_e;
-static char __pyx_k_a[] = "a";
-static PyObject *__pyx_kp_a;
-static char __pyx_k_imin[] = "imin";
-static PyObject *__pyx_kp_imin;
-static char __pyx_k_imax[] = "imax";
-static PyObject *__pyx_kp_imax;
-static char __pyx_k_jmin[] = "jmin";
-static PyObject *__pyx_kp_jmin;
-static char __pyx_k_jmax[] = "jmax";
-static PyObject *__pyx_kp_jmax;
-static char __pyx_k_kmin[] = "kmin";
-static PyObject *__pyx_kp_kmin;
-static char __pyx_k_kmax[] = "kmax";
-static PyObject *__pyx_kp_kmax;
-static char __pyx_k_istride[] = "istride";
-static PyObject *__pyx_kp_istride;
-static char __pyx_k_jstride[] = "jstride";
-static PyObject *__pyx_kp_jstride;
-static char __pyx_k_data[] = "data";
-static PyObject *__pyx_kp_data;
-static char __pyx_k_shells[] = "shells";
-static PyObject *__pyx_kp_shells;
-static char __pyx_k_grid_mask[] = "grid_mask";
-static PyObject *__pyx_kp_grid_mask;
-static char __pyx_k_grid_t[] = "grid_t";
-static PyObject *__pyx_kp_grid_t;
-static char __pyx_k_grid_dt[] = "grid_dt";
-static PyObject *__pyx_kp_grid_dt;
-static char __pyx_k_u[] = "u";
-static PyObject *__pyx_kp_u;
-static char __pyx_k_v[] = "v";
-static PyObject *__pyx_kp_v;
-static char __pyx_k_ug[] = "ug";
-static PyObject *__pyx_kp_ug;
-static char __pyx_k_image[] = "image";
-static PyObject *__pyx_kp_image;
-static char __pyx_k_nshells[] = "nshells";
-static PyObject *__pyx_kp_nshells;
-static char __pyx_k_ind[] = "ind";
-static PyObject *__pyx_kp_ind;
-static char __pyx_k_tf_obj[] = "tf_obj";
-static PyObject *__pyx_kp_tf_obj;
-static char __pyx_k_vp_pos[] = "vp_pos";
-static PyObject *__pyx_kp_vp_pos;
-static char __pyx_k_vp_dir[] = "vp_dir";
-static PyObject *__pyx_kp_vp_dir;
-static char __pyx_k_center[] = "center";
-static PyObject *__pyx_kp_center;
-static char __pyx_k_bounds[] = "bounds";
-static PyObject *__pyx_kp_bounds;
-static char __pyx_k_x_vec[] = "x_vec";
-static PyObject *__pyx_kp_x_vec;
-static char __pyx_k_y_vec[] = "y_vec";
-static PyObject *__pyx_kp_y_vec;
-static char __pyx_k_dims[] = "dims";
-static PyObject *__pyx_kp_dims;
-static char __pyx_k_tf[] = "tf";
-static PyObject *__pyx_kp_tf;
-static char __pyx_k_vp[] = "vp";
-static PyObject *__pyx_kp_vp;
-static char __pyx_k_grid[] = "grid";
-static PyObject *__pyx_kp_grid;
-static char __pyx_k_direction[] = "direction";
-static PyObject *__pyx_kp_direction;
-static char __pyx_k_left[] = "left";
-static PyObject *__pyx_kp_left;
-static char __pyx_k_subgrid_faces[] = "subgrid_faces";
-static PyObject *__pyx_kp_subgrid_faces;
-static char __pyx_k_stack[] = "stack";
-static PyObject *__pyx_kp_stack;
-static char __pyx_k_grid_left_edge[] = "grid_left_edge";
-static PyObject *__pyx_kp_grid_left_edge;
-static char __pyx_k_grid_dds[] = "grid_dds";
-static PyObject *__pyx_kp_grid_dds;
-static char __pyx_k_child_mask[] = "child_mask";
-static PyObject *__pyx_kp_child_mask;
-static char __pyx_k_posx[] = "posx";
-static PyObject *__pyx_kp_posx;
-static char __pyx_k_posy[] = "posy";
-static PyObject *__pyx_kp_posy;
-static char __pyx_k_posz[] = "posz";
-static PyObject *__pyx_kp_posz;
-static char __pyx_k_mass[] = "mass";
-static PyObject *__pyx_kp_mass;
-static char __pyx_k_npositions[] = "npositions";
-static PyObject *__pyx_kp_npositions;
-static char __pyx_k_field[] = "field";
-static PyObject *__pyx_kp_field;
-static char __pyx_k_leftEdge[] = "leftEdge";
-static PyObject *__pyx_kp_leftEdge;
-static char __pyx_k_gridDimension[] = "gridDimension";
-static PyObject *__pyx_kp_gridDimension;
-static char __pyx_k_cellSize[] = "cellSize";
-static PyObject *__pyx_kp_cellSize;
-static char __pyx_k_contour_ids[] = "contour_ids";
-static PyObject *__pyx_kp_contour_ids;
-static char __pyx_k_numpy[] = "numpy";
-static PyObject *__pyx_kp_numpy;
-static char __pyx_k_np[] = "np";
-static PyObject *__pyx_kp_np;
-static char __pyx_k_range[] = "range";
-static PyObject *__pyx_kp_range;
-static char __pyx_k_31[] = "RecurseOctreeDepthFirst";
-static PyObject *__pyx_kp_31;
-static char __pyx_k_32[] = "RecurseOctreeByLevels";
-static PyObject *__pyx_kp_32;
-static char __pyx_k_zeros[] = "zeros";
-static PyObject *__pyx_kp_zeros;
-static char __pyx_k_dtype[] = "dtype";
-static PyObject *__pyx_kp_dtype;
-static char __pyx_k_33[] = "int8";
-static PyObject *__pyx_kp_33;
-static char __pyx_k_xrange[] = "xrange";
-static PyObject *__pyx_kp_xrange;
-static char __pyx_k_empty[] = "empty";
-static PyObject *__pyx_kp_empty;
-static char __pyx_k_34[] = "int32";
-static PyObject *__pyx_kp_34;
-static char __pyx_k_35[] = "int64";
-static PyObject *__pyx_kp_35;
-static char __pyx_k_36[] = "float64";
-static PyObject *__pyx_kp_36;
-static char __pyx_k_floor[] = "floor";
-static PyObject *__pyx_kp_floor;
-static char __pyx_k_integrate_ray[] = "integrate_ray";
-static PyObject *__pyx_kp_integrate_ray;
-static char __pyx_k_red[] = "red";
-static PyObject *__pyx_kp_red;
-static char __pyx_k_y[] = "y";
-static PyObject *__pyx_kp_y;
-static char __pyx_k_green[] = "green";
-static PyObject *__pyx_kp_green;
-static char __pyx_k_blue[] = "blue";
-static PyObject *__pyx_kp_blue;
-static char __pyx_k_alpha[] = "alpha";
-static PyObject *__pyx_kp_alpha;
-static char __pyx_k_x_bounds[] = "x_bounds";
-static PyObject *__pyx_kp_x_bounds;
-static char __pyx_k_nbins[] = "nbins";
-static PyObject *__pyx_kp_nbins;
-static char __pyx_k_light_color[] = "light_color";
-static PyObject *__pyx_kp_light_color;
-static char __pyx_k_light_dir[] = "light_dir";
-static PyObject *__pyx_kp_light_dir;
-static char __pyx_k_use_light[] = "use_light";
-static PyObject *__pyx_kp_use_light;
-static char __pyx_k_LeftEdge[] = "LeftEdge";
-static PyObject *__pyx_kp_LeftEdge;
-static char __pyx_k_RightEdge[] = "RightEdge";
-static PyObject *__pyx_kp_RightEdge;
-static char __pyx_k_RuntimeError[] = "RuntimeError";
-static PyObject *__pyx_kp_RuntimeError;
-static char __pyx_k_copy[] = "copy";
-static PyObject *__pyx_kp_copy;
-static char __pyx_k_37[] = "int64";
-static PyObject *__pyx_kp_37;
-static char __pyx_k_append[] = "append";
-static PyObject *__pyx_kp_append;
 static PyObject *__pyx_builtin_range;
 static PyObject *__pyx_builtin_xrange;
 static PyObject *__pyx_builtin_RuntimeError;
-static PyObject *__pyx_int_15;
-static char __pyx_k___getbuffer__[] = "__getbuffer__";
-static PyObject *__pyx_kp___getbuffer__;
-static char __pyx_k___releasebuffer__[] = "__releasebuffer__";
-static PyObject *__pyx_kp___releasebuffer__;
-static char __pyx_k_info[] = "info";
-static PyObject *__pyx_kp_info;
-static char __pyx_k_flags[] = "flags";
-static PyObject *__pyx_kp_flags;
-static char __pyx_k_ValueError[] = "ValueError";
-static PyObject *__pyx_kp_ValueError;
-static PyObject *__pyx_kp_1;
-static PyObject *__pyx_kp_2;
-static PyObject *__pyx_kp_5;
-static PyObject *__pyx_kp_23;
 static PyObject *__pyx_builtin_ValueError;
-static char __pyx_k_1[] = "ndarray is not C contiguous";
-static char __pyx_k_2[] = "ndarray is not Fortran contiguous";
-static char __pyx_k_3[] = ">";
-static char __pyx_k_4[] = "<";
+static char __pyx_k_1[] = "RecurseOctreeDepthFirst";
+static char __pyx_k_2[] = "RecurseOctreeByLevels";
+static char __pyx_k_3[] = "ndarray is not C contiguous";
+static char __pyx_k_4[] = "ndarray is not Fortran contiguous";
 static char __pyx_k_5[] = "Non-native byte order not supported";
-static char __pyx_k_6[] = "b";
-static char __pyx_k_7[] = "B";
-static char __pyx_k_8[] = "h";
-static char __pyx_k_9[] = "H";
-static char __pyx_k_10[] = "i";
-static char __pyx_k_11[] = "I";
-static char __pyx_k_12[] = "l";
-static char __pyx_k_13[] = "L";
-static char __pyx_k_14[] = "q";
-static char __pyx_k_15[] = "Q";
-static char __pyx_k_16[] = "f";
-static char __pyx_k_17[] = "d";
-static char __pyx_k_18[] = "g";
-static char __pyx_k_19[] = "Zf";
-static char __pyx_k_20[] = "Zd";
-static char __pyx_k_21[] = "Zg";
-static char __pyx_k_22[] = "O";
-static char __pyx_k_23[] = "unknown dtype code in numpy.pxd (%d)";
-static char __pyx_k_24[] = "^";
-static PyObject *__pyx_kp_25;
-static PyObject *__pyx_kp_28;
-static PyObject *__pyx_kp_29;
-static PyObject *__pyx_kp_30;
-static char __pyx_k_25[] = "Format string allocated too short, see comment in numpy.pxd";
-static char __pyx_k_26[] = ">";
-static char __pyx_k_27[] = "<";
-static char __pyx_k_28[] = "Non-native byte order not supported";
-static char __pyx_k_29[] = "Format string allocated too short.";
-static char __pyx_k_30[] = "unknown dtype code in numpy.pxd (%d)";
+static char __pyx_k_6[] = "unknown dtype code in numpy.pxd (%d)";
+static char __pyx_k_7[] = "Format string allocated too short, see comment in numpy.pxd";
+static char __pyx_k_8[] = "Format string allocated too short.";
+static char __pyx_k_9[] = "\nContainer file to hold all our Cython routines.  This is to avoid problems with\nstatic linking.\n\nAuthor: Matthew Turk <matthewturk at gmail.com>\nAffiliation: KIPAC/SLAC/Stanford\nHomepage: http://yt.enzotools.org/\nLicense:\n  Copyright (C) 2008 Matthew Turk.  All Rights Reserved.\n\n  This file is part of yt.\n\n  yt is free software; you can redistribute it and/or modify\n  it under the terms of the GNU General Public License as published by\n  the Free Software Foundation; either version 3 of the License, or\n  (at your option) any later version.\n\n  This program is distributed in the hope that it will be useful,\n  but WITHOUT ANY WARRANTY; without even the implied warranty of\n  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  GNU General Public License for more details.\n\n  You should have received a copy of the GNU General Public License\n  along with this program.  If not, see <http://www.gnu.org/licenses/>.\n";
+static char __pyx_k_10[] = "Transfer3D (line 36)";
+static char __pyx_k_11[] = "TransferShells (line 74)";
+static char __pyx_k__B[] = "B";
+static char __pyx_k__H[] = "H";
+static char __pyx_k__I[] = "I";
+static char __pyx_k__L[] = "L";
+static char __pyx_k__O[] = "O";
+static char __pyx_k__Q[] = "Q";
+static char __pyx_k__a[] = "a";
+static char __pyx_k__b[] = "b";
+static char __pyx_k__d[] = "d";
+static char __pyx_k__e[] = "e";
+static char __pyx_k__f[] = "f";
+static char __pyx_k__g[] = "g";
+static char __pyx_k__h[] = "h";
+static char __pyx_k__i[] = "i";
+static char __pyx_k__l[] = "l";
+static char __pyx_k__q[] = "q";
+static char __pyx_k__u[] = "u";
+static char __pyx_k__v[] = "v";
+static char __pyx_k__y[] = "y";
+static char __pyx_k__Zd[] = "Zd";
+static char __pyx_k__Zf[] = "Zf";
+static char __pyx_k__Zg[] = "Zg";
+static char __pyx_k__dx[] = "dx";
+static char __pyx_k__gi[] = "gi";
+static char __pyx_k__np[] = "np";
+static char __pyx_k__ns[] = "ns";
+static char __pyx_k__nv[] = "nv";
+static char __pyx_k__tf[] = "tf";
+static char __pyx_k__ug[] = "ug";
+static char __pyx_k__vp[] = "vp";
+static char __pyx_k__vs[] = "vs";
+static char __pyx_k__buf[] = "buf";
+static char __pyx_k__dds[] = "dds";
+static char __pyx_k__i_f[] = "i_f";
+static char __pyx_k__i_i[] = "i_i";
+static char __pyx_k__i_s[] = "i_s";
+static char __pyx_k__ind[] = "ind";
+static char __pyx_k__j_f[] = "j_f";
+static char __pyx_k__j_i[] = "j_i";
+static char __pyx_k__k_f[] = "k_f";
+static char __pyx_k__k_i[] = "k_i";
+static char __pyx_k__o_s[] = "o_s";
+static char __pyx_k__obj[] = "obj";
+static char __pyx_k__pdx[] = "pdx";
+static char __pyx_k__pdy[] = "pdy";
+static char __pyx_k__red[] = "red";
+static char __pyx_k__base[] = "base";
+static char __pyx_k__blue[] = "blue";
+static char __pyx_k__copy[] = "copy";
+static char __pyx_k__data[] = "data";
+static char __pyx_k__dbin[] = "dbin";
+static char __pyx_k__dims[] = "dims";
+static char __pyx_k__grid[] = "grid";
+static char __pyx_k__imax[] = "imax";
+static char __pyx_k__imin[] = "imin";
+static char __pyx_k__int8[] = "int8";
+static char __pyx_k__jmax[] = "jmax";
+static char __pyx_k__jmin[] = "jmin";
+static char __pyx_k__kmax[] = "kmax";
+static char __pyx_k__kmin[] = "kmin";
+static char __pyx_k__left[] = "left";
+static char __pyx_k__mask[] = "mask";
+static char __pyx_k__mass[] = "mass";
+static char __pyx_k__ndim[] = "ndim";
+static char __pyx_k__posx[] = "posx";
+static char __pyx_k__posy[] = "posy";
+static char __pyx_k__posz[] = "posz";
+static char __pyx_k__x_is[] = "x_is";
+static char __pyx_k__y_is[] = "y_is";
+static char __pyx_k__z_is[] = "z_is";
+static char __pyx_k__alpha[] = "alpha";
+static char __pyx_k__coord[] = "coord";
+static char __pyx_k__descr[] = "descr";
+static char __pyx_k__dtype[] = "dtype";
+static char __pyx_k__empty[] = "empty";
+static char __pyx_k__field[] = "field";
+static char __pyx_k__floor[] = "floor";
+static char __pyx_k__green[] = "green";
+static char __pyx_k__grids[] = "grids";
+static char __pyx_k__image[] = "image";
+static char __pyx_k__int32[] = "int32";
+static char __pyx_k__int64[] = "int64";
+static char __pyx_k__level[] = "level";
+static char __pyx_k__names[] = "names";
+static char __pyx_k__nbins[] = "nbins";
+static char __pyx_k__numpy[] = "numpy";
+static char __pyx_k__pmask[] = "pmask";
+static char __pyx_k__range[] = "range";
+static char __pyx_k__shape[] = "shape";
+static char __pyx_k__split[] = "split";
+static char __pyx_k__stack[] = "stack";
+static char __pyx_k__sweep[] = "sweep";
+static char __pyx_k__table[] = "table";
+static char __pyx_k__x_vec[] = "x_vec";
+static char __pyx_k__y_vec[] = "y_vec";
+static char __pyx_k__zeros[] = "zeros";
+static char __pyx_k__aimage[] = "aimage";
+static char __pyx_k__ax_vec[] = "ax_vec";
+static char __pyx_k__ay_vec[] = "ay_vec";
+static char __pyx_k__bounds[] = "bounds";
+static char __pyx_k__center[] = "center";
+static char __pyx_k__curpos[] = "curpos";
+static char __pyx_k__fields[] = "fields";
+static char __pyx_k__format[] = "format";
+static char __pyx_k__grid_t[] = "grid_t";
+static char __pyx_k__output[] = "output";
+static char __pyx_k__points[] = "points";
+static char __pyx_k__shells[] = "shells";
+static char __pyx_k__tf_obj[] = "tf_obj";
+static char __pyx_k__vp_dir[] = "vp_dir";
+static char __pyx_k__vp_pos[] = "vp_pos";
+static char __pyx_k__x_bins[] = "x_bins";
+static char __pyx_k__x_vals[] = "x_vals";
+static char __pyx_k__xrange[] = "xrange";
+static char __pyx_k__y_bins[] = "y_bins";
+static char __pyx_k__y_vals[] = "y_vals";
+static char __pyx_k__z_bins[] = "z_bins";
+static char __pyx_k__z_vals[] = "z_vals";
+static char __pyx_k__acenter[] = "acenter";
+static char __pyx_k__avp_dir[] = "avp_dir";
+static char __pyx_k__avp_pos[] = "avp_pos";
+static char __pyx_k__corners[] = "corners";
+static char __pyx_k__float64[] = "float64";
+static char __pyx_k__grid_dt[] = "grid_dt";
+static char __pyx_k__istride[] = "istride";
+static char __pyx_k__jstride[] = "jstride";
+static char __pyx_k__my_data[] = "my_data";
+static char __pyx_k__nshells[] = "nshells";
+static char __pyx_k__refined[] = "refined";
+static char __pyx_k__strides[] = "strides";
+static char __pyx_k__LeftEdge[] = "LeftEdge";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__cellSize[] = "cellSize";
+static char __pyx_k__grid_dds[] = "grid_dds";
+static char __pyx_k__itemsize[] = "itemsize";
+static char __pyx_k__leftEdge[] = "leftEdge";
+static char __pyx_k__readonly[] = "readonly";
+static char __pyx_k__type_num[] = "type_num";
+static char __pyx_k__x_bounds[] = "x_bounds";
+static char __pyx_k__RightEdge[] = "RightEdge";
+static char __pyx_k__byteorder[] = "byteorder";
+static char __pyx_k__copy_back[] = "copy_back";
+static char __pyx_k__copy_into[] = "copy_into";
+static char __pyx_k__direction[] = "direction";
+static char __pyx_k__genealogy[] = "genealogy";
+static char __pyx_k__grid_mask[] = "grid_mask";
+static char __pyx_k__left_edge[] = "left_edge";
+static char __pyx_k__light_dir[] = "light_dir";
+static char __pyx_k__use_light[] = "use_light";
+static char __pyx_k__Transfer3D[] = "Transfer3D";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__child_mask[] = "child_mask";
+static char __pyx_k__dimensions[] = "dimensions";
+static char __pyx_k__left_edges[] = "left_edges";
+static char __pyx_k__npositions[] = "npositions";
+static char __pyx_k__output_pos[] = "output_pos";
+static char __pyx_k__right_edge[] = "right_edge";
+static char __pyx_k__suboffsets[] = "suboffsets";
+static char __pyx_k__light_color[] = "light_color";
+static char __pyx_k__refined_pos[] = "refined_pos";
+static char __pyx_k__RuntimeError[] = "RuntimeError";
+static char __pyx_k__proj_overlap[] = "proj_overlap";
+static char __pyx_k__child_indices[] = "child_indices";
+static char __pyx_k__eval_transfer[] = "eval_transfer";
+static char __pyx_k__gridDimension[] = "gridDimension";
+static char __pyx_k__integrate_ray[] = "integrate_ray";
+static char __pyx_k__sample_values[] = "sample_values";
+static char __pyx_k__subgrid_faces[] = "subgrid_faces";
+static char __pyx_k__TransferShells[] = "TransferShells";
+static char __pyx_k__get_start_stop[] = "get_start_stop";
+static char __pyx_k__grid_left_edge[] = "grid_left_edge";
+static char __pyx_k__calculate_extent[] = "calculate_extent";
+static PyObject *__pyx_n_s_1;
+static PyObject *__pyx_kp_u_10;
+static PyObject *__pyx_kp_u_11;
+static PyObject *__pyx_n_s_2;
+static PyObject *__pyx_kp_u_3;
+static PyObject *__pyx_kp_u_4;
+static PyObject *__pyx_kp_u_5;
+static PyObject *__pyx_kp_u_6;
+static PyObject *__pyx_kp_u_7;
+static PyObject *__pyx_kp_u_8;
+static PyObject *__pyx_n_s__LeftEdge;
+static PyObject *__pyx_n_s__RightEdge;
+static PyObject *__pyx_n_s__RuntimeError;
+static PyObject *__pyx_n_s__Transfer3D;
+static PyObject *__pyx_n_s__TransferShells;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s__a;
+static PyObject *__pyx_n_s__acenter;
+static PyObject *__pyx_n_s__aimage;
+static PyObject *__pyx_n_s__alpha;
+static PyObject *__pyx_n_s__avp_dir;
+static PyObject *__pyx_n_s__avp_pos;
+static PyObject *__pyx_n_s__ax_vec;
+static PyObject *__pyx_n_s__ay_vec;
+static PyObject *__pyx_n_s__base;
+static PyObject *__pyx_n_s__blue;
+static PyObject *__pyx_n_s__bounds;
+static PyObject *__pyx_n_s__buf;
+static PyObject *__pyx_n_s__byteorder;
+static PyObject *__pyx_n_s__calculate_extent;
+static PyObject *__pyx_n_s__cellSize;
+static PyObject *__pyx_n_s__center;
+static PyObject *__pyx_n_s__child_indices;
+static PyObject *__pyx_n_s__child_mask;
+static PyObject *__pyx_n_s__coord;
+static PyObject *__pyx_n_s__copy;
+static PyObject *__pyx_n_s__copy_back;
+static PyObject *__pyx_n_s__copy_into;
+static PyObject *__pyx_n_s__corners;
+static PyObject *__pyx_n_s__curpos;
+static PyObject *__pyx_n_s__data;
+static PyObject *__pyx_n_s__dbin;
+static PyObject *__pyx_n_s__dds;
+static PyObject *__pyx_n_s__descr;
+static PyObject *__pyx_n_s__dimensions;
+static PyObject *__pyx_n_s__dims;
+static PyObject *__pyx_n_s__direction;
+static PyObject *__pyx_n_s__dtype;
+static PyObject *__pyx_n_s__dx;
+static PyObject *__pyx_n_s__e;
+static PyObject *__pyx_n_s__empty;
+static PyObject *__pyx_n_s__eval_transfer;
+static PyObject *__pyx_n_s__field;
+static PyObject *__pyx_n_s__fields;
+static PyObject *__pyx_n_s__float64;
+static PyObject *__pyx_n_s__floor;
+static PyObject *__pyx_n_s__format;
+static PyObject *__pyx_n_s__genealogy;
+static PyObject *__pyx_n_s__get_start_stop;
+static PyObject *__pyx_n_s__gi;
+static PyObject *__pyx_n_s__green;
+static PyObject *__pyx_n_s__grid;
+static PyObject *__pyx_n_s__gridDimension;
+static PyObject *__pyx_n_s__grid_dds;
+static PyObject *__pyx_n_s__grid_dt;
+static PyObject *__pyx_n_s__grid_left_edge;
+static PyObject *__pyx_n_s__grid_mask;
+static PyObject *__pyx_n_s__grid_t;
+static PyObject *__pyx_n_s__grids;
+static PyObject *__pyx_n_s__i_f;
+static PyObject *__pyx_n_s__i_i;
+static PyObject *__pyx_n_s__i_s;
+static PyObject *__pyx_n_s__image;
+static PyObject *__pyx_n_s__imax;
+static PyObject *__pyx_n_s__imin;
+static PyObject *__pyx_n_s__ind;
+static PyObject *__pyx_n_s__int32;
+static PyObject *__pyx_n_s__int64;
+static PyObject *__pyx_n_s__int8;
+static PyObject *__pyx_n_s__integrate_ray;
+static PyObject *__pyx_n_s__istride;
+static PyObject *__pyx_n_s__itemsize;
+static PyObject *__pyx_n_s__j_f;
+static PyObject *__pyx_n_s__j_i;
+static PyObject *__pyx_n_s__jmax;
+static PyObject *__pyx_n_s__jmin;
+static PyObject *__pyx_n_s__jstride;
+static PyObject *__pyx_n_s__k_f;
+static PyObject *__pyx_n_s__k_i;
+static PyObject *__pyx_n_s__kmax;
+static PyObject *__pyx_n_s__kmin;
+static PyObject *__pyx_n_s__left;
+static PyObject *__pyx_n_s__leftEdge;
+static PyObject *__pyx_n_s__left_edge;
+static PyObject *__pyx_n_s__left_edges;
+static PyObject *__pyx_n_s__level;
+static PyObject *__pyx_n_s__light_color;
+static PyObject *__pyx_n_s__light_dir;
+static PyObject *__pyx_n_s__mask;
+static PyObject *__pyx_n_s__mass;
+static PyObject *__pyx_n_s__my_data;
+static PyObject *__pyx_n_s__names;
+static PyObject *__pyx_n_s__nbins;
+static PyObject *__pyx_n_s__ndim;
+static PyObject *__pyx_n_s__np;
+static PyObject *__pyx_n_s__npositions;
+static PyObject *__pyx_n_s__ns;
+static PyObject *__pyx_n_s__nshells;
+static PyObject *__pyx_n_s__numpy;
+static PyObject *__pyx_n_s__nv;
+static PyObject *__pyx_n_s__o_s;
+static PyObject *__pyx_n_s__obj;
+static PyObject *__pyx_n_s__output;
+static PyObject *__pyx_n_s__output_pos;
+static PyObject *__pyx_n_s__pdx;
+static PyObject *__pyx_n_s__pdy;
+static PyObject *__pyx_n_s__pmask;
+static PyObject *__pyx_n_s__points;
+static PyObject *__pyx_n_s__posx;
+static PyObject *__pyx_n_s__posy;
+static PyObject *__pyx_n_s__posz;
+static PyObject *__pyx_n_s__proj_overlap;
+static PyObject *__pyx_n_s__range;
+static PyObject *__pyx_n_s__readonly;
+static PyObject *__pyx_n_s__red;
+static PyObject *__pyx_n_s__refined;
+static PyObject *__pyx_n_s__refined_pos;
+static PyObject *__pyx_n_s__right_edge;
+static PyObject *__pyx_n_s__sample_values;
+static PyObject *__pyx_n_s__shape;
+static PyObject *__pyx_n_s__shells;
+static PyObject *__pyx_n_s__split;
+static PyObject *__pyx_n_s__stack;
+static PyObject *__pyx_n_s__strides;
+static PyObject *__pyx_n_s__subgrid_faces;
+static PyObject *__pyx_n_s__suboffsets;
+static PyObject *__pyx_n_s__sweep;
+static PyObject *__pyx_n_s__table;
+static PyObject *__pyx_n_s__tf;
+static PyObject *__pyx_n_s__tf_obj;
+static PyObject *__pyx_n_s__type_num;
+static PyObject *__pyx_n_s__u;
+static PyObject *__pyx_n_s__ug;
+static PyObject *__pyx_n_s__use_light;
+static PyObject *__pyx_n_s__v;
+static PyObject *__pyx_n_s__vp;
+static PyObject *__pyx_n_s__vp_dir;
+static PyObject *__pyx_n_s__vp_pos;
+static PyObject *__pyx_n_s__vs;
+static PyObject *__pyx_n_s__x_bins;
+static PyObject *__pyx_n_s__x_bounds;
+static PyObject *__pyx_n_s__x_is;
+static PyObject *__pyx_n_s__x_vals;
+static PyObject *__pyx_n_s__x_vec;
+static PyObject *__pyx_n_s__xrange;
+static PyObject *__pyx_n_s__y;
+static PyObject *__pyx_n_s__y_bins;
+static PyObject *__pyx_n_s__y_is;
+static PyObject *__pyx_n_s__y_vals;
+static PyObject *__pyx_n_s__y_vec;
+static PyObject *__pyx_n_s__z_bins;
+static PyObject *__pyx_n_s__z_is;
+static PyObject *__pyx_n_s__z_vals;
+static PyObject *__pyx_n_s__zeros;
+static PyObject *__pyx_int_0;
+static PyObject *__pyx_int_1;
+static PyObject *__pyx_int_2;
+static PyObject *__pyx_int_3;
+static PyObject *__pyx_int_15;
 
 /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":32
  * cdef class position:
@@ -1405,7 +1412,7 @@
 static int __pyx_pf_2yt_9amr_utils_8position___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_pf_2yt_9amr_utils_8position___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int __pyx_r;
-  __Pyx_SetupRefcountContext("__cinit__");
+  __Pyx_RefNannySetupContext("__cinit__");
   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
     __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
@@ -1429,7 +1436,7 @@
   ((struct __pyx_obj_2yt_9amr_utils_position *)__pyx_v_self)->refined_pos = 0;
 
   __pyx_r = 0;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -1475,8 +1482,8 @@
   Py_ssize_t __pyx_bstride_0_dimensions = 0;
   Py_ssize_t __pyx_bshape_0_dimensions = 0;
   int __pyx_r;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_child_indices,&__pyx_kp_fields,&__pyx_kp_left_edges,&__pyx_kp_dimensions,&__pyx_kp_dx,&__pyx_kp_level,0};
-  __Pyx_SetupRefcountContext("__cinit__");
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__child_indices,&__pyx_n_s__fields,&__pyx_n_s__left_edges,&__pyx_n_s__dimensions,&__pyx_n_s__dx,&__pyx_n_s__level,0};
+  __Pyx_RefNannySetupContext("__cinit__");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[6] = {0,0,0,0,0,0};
@@ -1492,49 +1499,49 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_child_indices);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__child_indices);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_fields);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fields);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_left_edges);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left_edges);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 2); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dimensions);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dimensions);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 3); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dx);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dx);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 4); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_level);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__level);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 5); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_child_indices = ((PyArrayObject *)values[0]);
     __pyx_v_fields = ((PyArrayObject *)values[1]);
     __pyx_v_left_edges = ((PyArrayObject *)values[2]);
     __pyx_v_dimensions = ((PyArrayObject *)values[3]);
     __pyx_v_dx = ((PyArrayObject *)values[4]);
-    __pyx_v_level = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_level = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
     goto __pyx_L5_argtuple_error;
   } else {
@@ -1543,11 +1550,11 @@
     __pyx_v_left_edges = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 2));
     __pyx_v_dimensions = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 3));
     __pyx_v_dx = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 4));
-    __pyx_v_level = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_level = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.OctreeGrid.__cinit__");
   return -1;
@@ -1557,38 +1564,38 @@
   __pyx_bstruct_left_edges.buf = NULL;
   __pyx_bstruct_dimensions.buf = NULL;
   __pyx_bstruct_dx.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child_indices), __pyx_ptype_5numpy_ndarray, 1, "child_indices", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fields), __pyx_ptype_5numpy_ndarray, 1, "fields", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edges), __pyx_ptype_5numpy_ndarray, 1, "left_edges", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), __pyx_ptype_5numpy_ndarray, 1, "dimensions", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child_indices), __pyx_ptype_5numpy_ndarray, 1, "child_indices", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fields), __pyx_ptype_5numpy_ndarray, 1, "fields", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edges), __pyx_ptype_5numpy_ndarray, 1, "left_edges", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), __pyx_ptype_5numpy_ndarray, 1, "dimensions", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_child_indices, (PyObject*)__pyx_v_child_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_child_indices, (PyObject*)__pyx_v_child_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_child_indices = __pyx_bstruct_child_indices.strides[0]; __pyx_bstride_1_child_indices = __pyx_bstruct_child_indices.strides[1]; __pyx_bstride_2_child_indices = __pyx_bstruct_child_indices.strides[2];
   __pyx_bshape_0_child_indices = __pyx_bstruct_child_indices.shape[0]; __pyx_bshape_1_child_indices = __pyx_bstruct_child_indices.shape[1]; __pyx_bshape_2_child_indices = __pyx_bstruct_child_indices.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_fields, (PyObject*)__pyx_v_fields, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_fields, (PyObject*)__pyx_v_fields, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_fields = __pyx_bstruct_fields.strides[0]; __pyx_bstride_1_fields = __pyx_bstruct_fields.strides[1]; __pyx_bstride_2_fields = __pyx_bstruct_fields.strides[2]; __pyx_bstride_3_fields = __pyx_bstruct_fields.strides[3];
   __pyx_bshape_0_fields = __pyx_bstruct_fields.shape[0]; __pyx_bshape_1_fields = __pyx_bstruct_fields.shape[1]; __pyx_bshape_2_fields = __pyx_bstruct_fields.shape[2]; __pyx_bshape_3_fields = __pyx_bstruct_fields.shape[3];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edges, (PyObject*)__pyx_v_left_edges, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edges, (PyObject*)__pyx_v_left_edges, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_left_edges = __pyx_bstruct_left_edges.strides[0];
   __pyx_bshape_0_left_edges = __pyx_bstruct_left_edges.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dimensions, (PyObject*)__pyx_v_dimensions, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dimensions, (PyObject*)__pyx_v_dimensions, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_dimensions = __pyx_bstruct_dimensions.strides[0];
   __pyx_bshape_0_dimensions = __pyx_bstruct_dimensions.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_dx = __pyx_bstruct_dx.strides[0];
   __pyx_bshape_0_dx = __pyx_bstruct_dx.shape[0];
@@ -1688,7 +1695,7 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left_edges);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_dimensions);
   __pyx_L2:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -1704,8 +1711,8 @@
 static int __pyx_pf_2yt_9amr_utils_14OctreeGridList___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_grids = 0;
   int __pyx_r;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_grids,0};
-  __Pyx_SetupRefcountContext("__cinit__");
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__grids,0};
+  __Pyx_RefNannySetupContext("__cinit__");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[1] = {0};
@@ -1716,12 +1723,12 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_grids);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grids);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_grids = values[0];
   } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
@@ -1731,7 +1738,7 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.OctreeGridList.__cinit__");
   return -1;
@@ -1751,7 +1758,7 @@
   ((struct __pyx_obj_2yt_9amr_utils_OctreeGridList *)__pyx_v_self)->grids = __pyx_v_grids;
 
   __pyx_r = 0;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -1767,10 +1774,10 @@
 static PyObject *__pyx_pf_2yt_9amr_utils_14OctreeGridList___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_arg_item) {
   int __pyx_v_item;
   PyObject *__pyx_r = NULL;
-  PyObject *__pyx_1 = 0;
-  __Pyx_SetupRefcountContext("__getitem__");
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__getitem__");
   assert(__pyx_arg_item); {
-    __pyx_v_item = __Pyx_PyInt_AsInt(__pyx_arg_item); if (unlikely((__pyx_v_item == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_item = __Pyx_PyInt_AsInt(__pyx_arg_item); if (unlikely((__pyx_v_item == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -1786,21 +1793,21 @@
  * @cython.boundscheck(False)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_1 = __Pyx_GetItemInt(((struct __pyx_obj_2yt_9amr_utils_OctreeGridList *)__pyx_v_self)->grids, __pyx_v_item, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __pyx_r = __pyx_1;
-  __pyx_1 = 0;
+  __pyx_t_1 = __Pyx_GetItemInt(((struct __pyx_obj_2yt_9amr_utils_OctreeGridList *)__pyx_v_self)->grids, __pyx_v_item, sizeof(int), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
   goto __pyx_L0;
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
+  __Pyx_XDECREF(__pyx_t_1);
   __Pyx_AddTraceback("yt.amr_utils.OctreeGridList.__getitem__");
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -1883,42 +1890,46 @@
   Py_ssize_t __pyx_bshape_0_output = 0;
   Py_ssize_t __pyx_bshape_1_output = 0;
   PyObject *__pyx_r = NULL;
-  PyObject *__pyx_1 = 0;
   long __pyx_t_1;
-  PyArrayObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_2 = NULL;
   PyArrayObject *__pyx_t_3 = NULL;
   PyArrayObject *__pyx_t_4 = NULL;
   PyArrayObject *__pyx_t_5 = NULL;
-  __pyx_t_5numpy_float64_t __pyx_t_6;
-  int __pyx_t_7;
+  PyArrayObject *__pyx_t_6 = NULL;
+  __pyx_t_5numpy_float64_t __pyx_t_7;
   int __pyx_t_8;
-  long __pyx_t_9;
+  int __pyx_t_9;
   int __pyx_t_10;
-  long __pyx_t_11;
-  PyObject *__pyx_t_12 = NULL;
-  PyObject *__pyx_t_13 = NULL;
-  PyObject *__pyx_t_14 = NULL;
-  PyObject *__pyx_t_15 = NULL;
-  int __pyx_t_16;
-  int __pyx_t_17;
-  int __pyx_t_18;
+  int __pyx_t_11;
+  long __pyx_t_12;
+  int __pyx_t_13;
+  int __pyx_t_14;
+  long __pyx_t_15;
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
   int __pyx_t_19;
   int __pyx_t_20;
-  int __pyx_t_21;
+  npy_intp __pyx_t_21;
   int __pyx_t_22;
   int __pyx_t_23;
   int __pyx_t_24;
-  long __pyx_t_25;
-  PyArrayObject *__pyx_t_26 = NULL;
+  int __pyx_t_25;
+  int __pyx_t_26;
   int __pyx_t_27;
-  PyObject *__pyx_t_28 = NULL;
-  PyObject *__pyx_t_29 = NULL;
-  PyObject *__pyx_t_30 = NULL;
-  long __pyx_t_31;
-  long __pyx_t_32;
+  int __pyx_t_28;
+  long __pyx_t_29;
+  PyArrayObject *__pyx_t_30 = NULL;
+  int __pyx_t_31;
+  PyObject *__pyx_t_32 = NULL;
   PyObject *__pyx_t_33 = NULL;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_i_i,&__pyx_kp_j_i,&__pyx_kp_k_i,&__pyx_kp_i_f,&__pyx_kp_j_f,&__pyx_kp_k_f,&__pyx_kp_curpos,&__pyx_kp_gi,&__pyx_kp_output,&__pyx_kp_refined,&__pyx_kp_grids,0};
-  __Pyx_SetupRefcountContext("RecurseOctreeDepthFirst");
+  PyObject *__pyx_t_34 = NULL;
+  long __pyx_t_35;
+  long __pyx_t_36;
+  PyObject *__pyx_t_37 = NULL;
+  PyObject *__pyx_t_38 = NULL;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__i_i,&__pyx_n_s__j_i,&__pyx_n_s__k_i,&__pyx_n_s__i_f,&__pyx_n_s__j_f,&__pyx_n_s__k_f,&__pyx_n_s__curpos,&__pyx_n_s__gi,&__pyx_n_s__output,&__pyx_n_s__refined,&__pyx_n_s__grids,0};
+  __Pyx_RefNannySetupContext("RecurseOctreeDepthFirst");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -1940,106 +1951,110 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_i_i);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i_i);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_j_i);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j_i);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_k_i);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__k_i);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 2); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_i_f);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i_f);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 3); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_j_f);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j_f);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 4); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_k_f);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__k_f);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 5); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_curpos);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__curpos);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 6); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
-      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_kp_gi);
+      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__gi);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 7); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  8:
-      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_kp_output);
+      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__output);
       if (likely(values[8])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 8); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  9:
-      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_kp_refined);
+      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__refined);
       if (likely(values[9])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 9); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case 10:
-      values[10] = PyDict_GetItem(__pyx_kwds, __pyx_kp_grids);
+      values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grids);
       if (likely(values[10])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 10); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, 10); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "RecurseOctreeDepthFirst") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "RecurseOctreeDepthFirst") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
-    __pyx_v_i_i = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_i_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_j_i = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_j_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_k_i = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_k_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_i_f = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_i_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_j_f = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_j_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_k_f = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_k_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_i = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_i_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_j_i = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_j_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_k_i = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_k_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_f = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_i_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_j_f = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_j_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_k_f = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_k_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_curpos = ((struct __pyx_obj_2yt_9amr_utils_position *)values[6]);
-    __pyx_v_gi = __Pyx_PyInt_AsInt(values[7]); if (unlikely((__pyx_v_gi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_gi = __Pyx_PyInt_AsInt(values[7]); if (unlikely((__pyx_v_gi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_output = ((PyArrayObject *)values[8]);
     __pyx_v_refined = ((PyArrayObject *)values[9]);
     __pyx_v_grids = ((struct __pyx_obj_2yt_9amr_utils_OctreeGridList *)values[10]);
   } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
     goto __pyx_L5_argtuple_error;
   } else {
-    __pyx_v_i_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_i_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_j_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_j_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_k_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_k_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_i_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_i_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_j_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_j_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_k_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_k_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_i_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_j_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_j_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_k_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_k_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_i_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_j_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_j_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_k_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_k_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_curpos = ((struct __pyx_obj_2yt_9amr_utils_position *)PyTuple_GET_ITEM(__pyx_args, 6));
-    __pyx_v_gi = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 7)); if (unlikely((__pyx_v_gi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_gi = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 7)); if (unlikely((__pyx_v_gi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_output = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 8));
     __pyx_v_refined = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 9));
     __pyx_v_grids = ((struct __pyx_obj_2yt_9amr_utils_OctreeGridList *)PyTuple_GET_ITEM(__pyx_args, 10));
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("RecurseOctreeDepthFirst", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.RecurseOctreeDepthFirst");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_curpos);
+  __Pyx_INCREF((PyObject *)__pyx_v_output);
+  __Pyx_INCREF((PyObject *)__pyx_v_refined);
+  __Pyx_INCREF((PyObject *)__pyx_v_grids);
   __pyx_v_child_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_child_leftedges = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_s = Py_None; __Pyx_INCREF(Py_None);
@@ -2050,19 +2065,19 @@
   __pyx_bstruct_child_leftedges.buf = NULL;
   __pyx_bstruct_output.buf = NULL;
   __pyx_bstruct_refined.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_curpos), __pyx_ptype_2yt_9amr_utils_position, 1, "curpos", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_refined), __pyx_ptype_5numpy_ndarray, 1, "refined", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grids), __pyx_ptype_2yt_9amr_utils_OctreeGridList, 1, "grids", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_curpos), __pyx_ptype_2yt_9amr_utils_position, 1, "curpos", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_refined), __pyx_ptype_5numpy_ndarray, 1, "refined", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grids), __pyx_ptype_2yt_9amr_utils_OctreeGridList, 1, "grids", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_output = __pyx_bstruct_output.strides[0]; __pyx_bstride_1_output = __pyx_bstruct_output.strides[1];
   __pyx_bshape_0_output = __pyx_bstruct_output.shape[0]; __pyx_bshape_1_output = __pyx_bstruct_output.shape[1];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_refined, (PyObject*)__pyx_v_refined, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_refined, (PyObject*)__pyx_v_refined, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_refined = __pyx_bstruct_refined.strides[0];
   __pyx_bshape_0_refined = __pyx_bstruct_refined.shape[0];
@@ -2075,11 +2090,11 @@
  *     cdef np.ndarray[np.int32_t, ndim=1] dimensions = grid.dimensions
  */
   __pyx_t_1 = (__pyx_v_gi - 1);
-  __pyx_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grids), __pyx_t_1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_2yt_9amr_utils_OctreeGrid))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)__pyx_1);
-  __pyx_1 = 0;
+  __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grids), __pyx_t_1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_2yt_9amr_utils_OctreeGrid))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)__pyx_t_2);
+  __pyx_t_2 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":72
  *     cdef OctreeGrid child_grid
@@ -2088,18 +2103,18 @@
  *     cdef np.ndarray[np.int32_t, ndim=1] dimensions = grid.dimensions
  *     cdef np.ndarray[np.float64_t, ndim=4] fields = grid.fields
  */
-  if (!(__Pyx_TypeTest(__pyx_v_grid->child_indices, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = ((PyArrayObject *)__pyx_v_grid->child_indices);
+  if (!(likely(((__pyx_v_grid->child_indices) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grid->child_indices, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((PyArrayObject *)__pyx_v_grid->child_indices);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_child_indices, (PyObject*)__pyx_t_2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_child_indices, (PyObject*)__pyx_t_3, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
       __pyx_v_child_indices = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_child_indices.buf = NULL;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_child_indices = __pyx_bstruct_child_indices.strides[0]; __pyx_bstride_1_child_indices = __pyx_bstruct_child_indices.strides[1]; __pyx_bstride_2_child_indices = __pyx_bstruct_child_indices.strides[2];
       __pyx_bshape_0_child_indices = __pyx_bstruct_child_indices.shape[0]; __pyx_bshape_1_child_indices = __pyx_bstruct_child_indices.shape[1]; __pyx_bshape_2_child_indices = __pyx_bstruct_child_indices.shape[2];
     }
   }
-  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
   __Pyx_INCREF(__pyx_v_grid->child_indices);
   __pyx_v_child_indices = ((PyArrayObject *)__pyx_v_grid->child_indices);
 
@@ -2110,18 +2125,18 @@
  *     cdef np.ndarray[np.float64_t, ndim=4] fields = grid.fields
  *     cdef np.ndarray[np.float64_t, ndim=1] leftedges = grid.left_edges
  */
-  if (!(__Pyx_TypeTest(__pyx_v_grid->dimensions, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = ((PyArrayObject *)__pyx_v_grid->dimensions);
+  if (!(likely(((__pyx_v_grid->dimensions) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grid->dimensions, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((PyArrayObject *)__pyx_v_grid->dimensions);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dimensions, (PyObject*)__pyx_t_3, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dimensions, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_dimensions = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_dimensions.buf = NULL;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_dimensions = __pyx_bstruct_dimensions.strides[0];
       __pyx_bshape_0_dimensions = __pyx_bstruct_dimensions.shape[0];
     }
   }
-  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
   __Pyx_INCREF(__pyx_v_grid->dimensions);
   __pyx_v_dimensions = ((PyArrayObject *)__pyx_v_grid->dimensions);
 
@@ -2132,18 +2147,18 @@
  *     cdef np.ndarray[np.float64_t, ndim=1] leftedges = grid.left_edges
  *     cdef np.float64_t dx = grid.dx[0]
  */
-  if (!(__Pyx_TypeTest(__pyx_v_grid->fields, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = ((PyArrayObject *)__pyx_v_grid->fields);
+  if (!(likely(((__pyx_v_grid->fields) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grid->fields, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = ((PyArrayObject *)__pyx_v_grid->fields);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_fields, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_fields, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {
       __pyx_v_fields = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_fields.buf = NULL;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_fields = __pyx_bstruct_fields.strides[0]; __pyx_bstride_1_fields = __pyx_bstruct_fields.strides[1]; __pyx_bstride_2_fields = __pyx_bstruct_fields.strides[2]; __pyx_bstride_3_fields = __pyx_bstruct_fields.strides[3];
       __pyx_bshape_0_fields = __pyx_bstruct_fields.shape[0]; __pyx_bshape_1_fields = __pyx_bstruct_fields.shape[1]; __pyx_bshape_2_fields = __pyx_bstruct_fields.shape[2]; __pyx_bshape_3_fields = __pyx_bstruct_fields.shape[3];
     }
   }
-  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
   __Pyx_INCREF(__pyx_v_grid->fields);
   __pyx_v_fields = ((PyArrayObject *)__pyx_v_grid->fields);
 
@@ -2154,18 +2169,18 @@
  *     cdef np.float64_t dx = grid.dx[0]
  *     cdef np.float64_t child_dx
  */
-  if (!(__Pyx_TypeTest(__pyx_v_grid->left_edges, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = ((PyArrayObject *)__pyx_v_grid->left_edges);
+  if (!(likely(((__pyx_v_grid->left_edges) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grid->left_edges, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = ((PyArrayObject *)__pyx_v_grid->left_edges);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_leftedges, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_leftedges, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_leftedges = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_leftedges.buf = NULL;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_leftedges = __pyx_bstruct_leftedges.strides[0];
       __pyx_bshape_0_leftedges = __pyx_bstruct_leftedges.shape[0];
     }
   }
-  __pyx_t_5 = 0;
+  __pyx_t_6 = 0;
   __Pyx_INCREF(__pyx_v_grid->left_edges);
   __pyx_v_leftedges = ((PyArrayObject *)__pyx_v_grid->left_edges);
 
@@ -2176,11 +2191,11 @@
  *     cdef np.float64_t child_dx
  *     cdef np.ndarray[np.float64_t, ndim=1] child_leftedges
  */
-  __pyx_1 = __Pyx_GetItemInt(__pyx_v_grid->dx, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_v_dx = __pyx_t_6;
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_grid->dx, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_7 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_dx = __pyx_t_7;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":80
  *     cdef np.ndarray[np.float64_t, ndim=1] child_leftedges
@@ -2189,8 +2204,9 @@
  *         k = k_off + k_i
  *         cz = (leftedges[2] + k*dx)
  */
-  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_v_k_f; __pyx_t_7+=1) {
-    __pyx_v_k_off = __pyx_t_7;
+  __pyx_t_8 = __pyx_v_k_f;
+  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
+    __pyx_v_k_off = __pyx_t_9;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":81
  *     cdef np.float64_t cx, cy, cz
@@ -2219,8 +2235,9 @@
  *             j = j_off + j_i
  *             cy = (leftedges[1] + j*dx)
  */
-    for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_v_j_f; __pyx_t_8+=1) {
-      __pyx_v_j_off = __pyx_t_8;
+    __pyx_t_10 = __pyx_v_j_f;
+    for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
+      __pyx_v_j_off = __pyx_t_11;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":84
  *         cz = (leftedges[2] + k*dx)
@@ -2238,9 +2255,9 @@
  *             for i_off in range(i_f):
  *                 i = i_off + i_i
  */
-      __pyx_t_9 = 1;
-      if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_bshape_0_leftedges;
-      __pyx_v_cy = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_leftedges.buf, __pyx_t_9, __pyx_bstride_0_leftedges)) + (__pyx_v_j * __pyx_v_dx));
+      __pyx_t_12 = 1;
+      if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_0_leftedges;
+      __pyx_v_cy = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_leftedges.buf, __pyx_t_12, __pyx_bstride_0_leftedges)) + (__pyx_v_j * __pyx_v_dx));
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":86
  *             j = j_off + j_i
@@ -2249,8 +2266,9 @@
  *                 i = i_off + i_i
  *                 cx = (leftedges[0] + i*dx)
  */
-      for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_v_i_f; __pyx_t_10+=1) {
-        __pyx_v_i_off = __pyx_t_10;
+      __pyx_t_13 = __pyx_v_i_f;
+      for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+        __pyx_v_i_off = __pyx_t_14;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":87
  *             cy = (leftedges[1] + j*dx)
@@ -2268,9 +2286,9 @@
  *                 ci = grid.child_indices[i,j,k]
  *                 if ci == -1:
  */
-        __pyx_t_11 = 0;
-        if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_0_leftedges;
-        __pyx_v_cx = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_leftedges.buf, __pyx_t_11, __pyx_bstride_0_leftedges)) + (__pyx_v_i * __pyx_v_dx));
+        __pyx_t_15 = 0;
+        if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_leftedges;
+        __pyx_v_cx = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_leftedges.buf, __pyx_t_15, __pyx_bstride_0_leftedges)) + (__pyx_v_i * __pyx_v_dx));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":89
  *                 i = i_off + i_i
@@ -2279,29 +2297,29 @@
  *                 if ci == -1:
  *                     for fi in range(fields.shape[0]):
  */
-        __pyx_t_12 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_13 = PyInt_FromLong(__pyx_v_j); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_13);
-        __pyx_t_14 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_14);
-        __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(((PyObject *)__pyx_t_15));
-        PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_12);
-        __Pyx_GIVEREF(__pyx_t_12);
-        PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_13);
-        __Pyx_GIVEREF(__pyx_t_13);
-        PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_14);
-        __Pyx_GIVEREF(__pyx_t_14);
-        __pyx_t_12 = 0;
-        __pyx_t_13 = 0;
-        __pyx_t_14 = 0;
-        __pyx_1 = PyObject_GetItem(__pyx_v_grid->child_indices, ((PyObject *)__pyx_t_15)); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_1);
-        __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
-        __pyx_t_16 = __Pyx_PyInt_AsInt(__pyx_1); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-        __pyx_v_ci = __pyx_t_16;
+        __pyx_t_2 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_16 = PyInt_FromLong(__pyx_v_j); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_16);
+        __pyx_t_17 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_17);
+        __pyx_t_18 = PyTuple_New(3); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_18);
+        PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_2);
+        __Pyx_GIVEREF(__pyx_t_2);
+        PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_t_16);
+        __Pyx_GIVEREF(__pyx_t_16);
+        PyTuple_SET_ITEM(__pyx_t_18, 2, __pyx_t_17);
+        __Pyx_GIVEREF(__pyx_t_17);
+        __pyx_t_2 = 0;
+        __pyx_t_16 = 0;
+        __pyx_t_17 = 0;
+        __pyx_t_17 = PyObject_GetItem(__pyx_v_grid->child_indices, __pyx_t_18); if (!__pyx_t_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_17);
+        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+        __pyx_t_19 = __Pyx_PyInt_AsInt(__pyx_t_17); if (unlikely((__pyx_t_19 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+        __pyx_v_ci = __pyx_t_19;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":90
  *                 cx = (leftedges[0] + i*dx)
@@ -2310,8 +2328,8 @@
  *                     for fi in range(fields.shape[0]):
  *                         output[curpos.output_pos,fi] = fields[fi,i,j,k]
  */
-        __pyx_t_17 = (__pyx_v_ci == -1);
-        if (__pyx_t_17) {
+        __pyx_t_20 = (__pyx_v_ci == -1);
+        if (__pyx_t_20) {
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":91
  *                 ci = grid.child_indices[i,j,k]
@@ -2320,8 +2338,9 @@
  *                         output[curpos.output_pos,fi] = fields[fi,i,j,k]
  *                     refined[curpos.refined_pos] = 0
  */
-          for (__pyx_t_16 = 0; __pyx_t_16 < (__pyx_v_fields->dimensions[0]); __pyx_t_16+=1) {
-            __pyx_v_fi = __pyx_t_16;
+          __pyx_t_21 = (__pyx_v_fields->dimensions[0]);
+          for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_21; __pyx_t_19+=1) {
+            __pyx_v_fi = __pyx_t_19;
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":92
  *                 if ci == -1:
@@ -2330,19 +2349,19 @@
  *                     refined[curpos.refined_pos] = 0
  *                     curpos.output_pos += 1
  */
-            __pyx_t_18 = __pyx_v_fi;
-            __pyx_t_19 = __pyx_v_i;
-            __pyx_t_20 = __pyx_v_j;
-            __pyx_t_21 = __pyx_v_k;
-            if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_0_fields;
-            if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_1_fields;
-            if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_2_fields;
-            if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_3_fields;
-            __pyx_t_22 = __pyx_v_curpos->output_pos;
-            __pyx_t_23 = __pyx_v_fi;
-            if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_0_output;
-            if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_1_output;
-            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_22, __pyx_bstride_0_output, __pyx_t_23, __pyx_bstride_1_output) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_fields.buf, __pyx_t_18, __pyx_bstride_0_fields, __pyx_t_19, __pyx_bstride_1_fields, __pyx_t_20, __pyx_bstride_2_fields, __pyx_t_21, __pyx_bstride_3_fields));
+            __pyx_t_22 = __pyx_v_fi;
+            __pyx_t_23 = __pyx_v_i;
+            __pyx_t_24 = __pyx_v_j;
+            __pyx_t_25 = __pyx_v_k;
+            if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_0_fields;
+            if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_1_fields;
+            if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_2_fields;
+            if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_3_fields;
+            __pyx_t_26 = __pyx_v_curpos->output_pos;
+            __pyx_t_27 = __pyx_v_fi;
+            if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_0_output;
+            if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_1_output;
+            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_26, __pyx_bstride_0_output, __pyx_t_27, __pyx_bstride_1_output) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_fields.buf, __pyx_t_22, __pyx_bstride_0_fields, __pyx_t_23, __pyx_bstride_1_fields, __pyx_t_24, __pyx_bstride_2_fields, __pyx_t_25, __pyx_bstride_3_fields));
           }
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":93
@@ -2352,9 +2371,9 @@
  *                     curpos.output_pos += 1
  *                     curpos.refined_pos += 1
  */
-          __pyx_t_16 = __pyx_v_curpos->refined_pos;
-          if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_0_refined;
-          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_refined.buf, __pyx_t_16, __pyx_bstride_0_refined) = 0;
+          __pyx_t_19 = __pyx_v_curpos->refined_pos;
+          if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_0_refined;
+          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_refined.buf, __pyx_t_19, __pyx_bstride_0_refined) = 0;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":94
  *                         output[curpos.output_pos,fi] = fields[fi,i,j,k]
@@ -2384,9 +2403,9 @@
  *                     curpos.refined_pos += 1
  *                     child_grid = grids[ci-1]
  */
-          __pyx_t_24 = __pyx_v_curpos->refined_pos;
-          if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_0_refined;
-          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_refined.buf, __pyx_t_24, __pyx_bstride_0_refined) = 1;
+          __pyx_t_28 = __pyx_v_curpos->refined_pos;
+          if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_0_refined;
+          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_refined.buf, __pyx_t_28, __pyx_bstride_0_refined) = 1;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":98
  *                 else:
@@ -2404,13 +2423,13 @@
  *                     child_dx = child_grid.dx[0]
  *                     child_leftedges = child_grid.left_edges
  */
-          __pyx_t_25 = (__pyx_v_ci - 1);
-          __pyx_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grids), __pyx_t_25, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_1);
-          if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_2yt_9amr_utils_OctreeGrid))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_29 = (__pyx_v_ci - 1);
+          __pyx_t_17 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grids), __pyx_t_29, sizeof(long), PyInt_FromLong); if (!__pyx_t_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_17);
+          if (!(likely(((__pyx_t_17) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_17, __pyx_ptype_2yt_9amr_utils_OctreeGrid))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(((PyObject *)__pyx_v_child_grid));
-          __pyx_v_child_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)__pyx_1);
-          __pyx_1 = 0;
+          __pyx_v_child_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)__pyx_t_17);
+          __pyx_t_17 = 0;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":100
  *                     curpos.refined_pos += 1
@@ -2419,11 +2438,11 @@
  *                     child_leftedges = child_grid.left_edges
  *                     child_i = int((cx - child_leftedges[0])/child_dx)
  */
-          __pyx_1 = __Pyx_GetItemInt(__pyx_v_child_grid->dx, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_1);
-          __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-          __pyx_v_child_dx = __pyx_t_6;
+          __pyx_t_17 = __Pyx_GetItemInt(__pyx_v_child_grid->dx, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_17) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_17);
+          __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_17); if (unlikely((__pyx_t_7 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+          __pyx_v_child_dx = __pyx_t_7;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":101
  *                     child_grid = grids[ci-1]
@@ -2432,26 +2451,26 @@
  *                     child_i = int((cx - child_leftedges[0])/child_dx)
  *                     child_j = int((cy - child_leftedges[1])/child_dx)
  */
-          if (!(__Pyx_TypeTest(__pyx_v_child_grid->left_edges, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __pyx_t_26 = ((PyArrayObject *)__pyx_v_child_grid->left_edges);
+          if (!(likely(((__pyx_v_child_grid->left_edges) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child_grid->left_edges, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_30 = ((PyArrayObject *)__pyx_v_child_grid->left_edges);
           {
             __Pyx_BufFmt_StackElem __pyx_stack[1];
             __Pyx_SafeReleaseBuffer(&__pyx_bstruct_child_leftedges);
-            __pyx_t_27 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_child_leftedges, (PyObject*)__pyx_t_26, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-            if (unlikely(__pyx_t_27 < 0)) {
-              PyErr_Fetch(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
+            __pyx_t_31 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_child_leftedges, (PyObject*)__pyx_t_30, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+            if (unlikely(__pyx_t_31 < 0)) {
+              PyErr_Fetch(&__pyx_t_32, &__pyx_t_33, &__pyx_t_34);
               if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_child_leftedges, (PyObject*)__pyx_v_child_leftedges, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-                Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_29); Py_XDECREF(__pyx_t_30);
+                Py_XDECREF(__pyx_t_32); Py_XDECREF(__pyx_t_33); Py_XDECREF(__pyx_t_34);
                 __Pyx_RaiseBufferFallbackError();
               } else {
-                PyErr_Restore(__pyx_t_28, __pyx_t_29, __pyx_t_30);
+                PyErr_Restore(__pyx_t_32, __pyx_t_33, __pyx_t_34);
               }
             }
             __pyx_bstride_0_child_leftedges = __pyx_bstruct_child_leftedges.strides[0];
             __pyx_bshape_0_child_leftedges = __pyx_bstruct_child_leftedges.shape[0];
-            if (unlikely(__pyx_t_27 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            if (unlikely(__pyx_t_31 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
-          __pyx_t_26 = 0;
+          __pyx_t_30 = 0;
           __Pyx_INCREF(__pyx_v_child_grid->left_edges);
           __Pyx_DECREF(((PyObject *)__pyx_v_child_leftedges));
           __pyx_v_child_leftedges = ((PyArrayObject *)__pyx_v_child_grid->left_edges);
@@ -2463,21 +2482,14 @@
  *                     child_j = int((cy - child_leftedges[1])/child_dx)
  *                     child_k = int((cz - child_leftedges[2])/child_dx)
  */
-          __pyx_t_25 = 0;
-          if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_0_child_leftedges;
-          __pyx_t_15 = PyFloat_FromDouble(((__pyx_v_cx - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_25, __pyx_bstride_0_child_leftedges))) / __pyx_v_child_dx)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_15);
-          __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(((PyObject *)__pyx_t_14));
-          PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15);
-          __Pyx_GIVEREF(__pyx_t_15);
-          __pyx_t_15 = 0;
-          __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_15);
-          __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
-          __pyx_t_27 = __Pyx_PyInt_AsInt(__pyx_t_15); if (unlikely((__pyx_t_27 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __pyx_v_child_i = __pyx_t_27;
+          __pyx_t_29 = 0;
+          if (__pyx_t_29 < 0) __pyx_t_29 += __pyx_bshape_0_child_leftedges;
+          __pyx_t_7 = (__pyx_v_cx - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_29, __pyx_bstride_0_child_leftedges)));
+          if (unlikely(__pyx_v_child_dx == 0)) {
+            PyErr_Format(PyExc_ZeroDivisionError, "float division");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          }
+          __pyx_v_child_i = ((int)(__pyx_t_7 / __pyx_v_child_dx));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":103
  *                     child_leftedges = child_grid.left_edges
@@ -2486,21 +2498,14 @@
  *                     child_k = int((cz - child_leftedges[2])/child_dx)
  *                     s = RecurseOctreeDepthFirst(child_i, child_j, child_k, 2, 2, 2,
  */
-          __pyx_t_31 = 1;
-          if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_bshape_0_child_leftedges;
-          __pyx_t_15 = PyFloat_FromDouble(((__pyx_v_cy - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_31, __pyx_bstride_0_child_leftedges))) / __pyx_v_child_dx)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_15);
-          __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(((PyObject *)__pyx_t_14));
-          PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15);
-          __Pyx_GIVEREF(__pyx_t_15);
-          __pyx_t_15 = 0;
-          __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_15);
-          __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
-          __pyx_t_27 = __Pyx_PyInt_AsInt(__pyx_t_15); if (unlikely((__pyx_t_27 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __pyx_v_child_j = __pyx_t_27;
+          __pyx_t_35 = 1;
+          if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_bshape_0_child_leftedges;
+          __pyx_t_7 = (__pyx_v_cy - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_35, __pyx_bstride_0_child_leftedges)));
+          if (unlikely(__pyx_v_child_dx == 0)) {
+            PyErr_Format(PyExc_ZeroDivisionError, "float division");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          }
+          __pyx_v_child_j = ((int)(__pyx_t_7 / __pyx_v_child_dx));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":104
  *                     child_i = int((cx - child_leftedges[0])/child_dx)
@@ -2509,21 +2514,14 @@
  *                     s = RecurseOctreeDepthFirst(child_i, child_j, child_k, 2, 2, 2,
  *                                         curpos, ci, output, refined, grids)
  */
-          __pyx_t_32 = 2;
-          if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_bshape_0_child_leftedges;
-          __pyx_t_15 = PyFloat_FromDouble(((__pyx_v_cz - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_32, __pyx_bstride_0_child_leftedges))) / __pyx_v_child_dx)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_15);
-          __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(((PyObject *)__pyx_t_14));
-          PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15);
-          __Pyx_GIVEREF(__pyx_t_15);
-          __pyx_t_15 = 0;
-          __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_15);
-          __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
-          __pyx_t_27 = __Pyx_PyInt_AsInt(__pyx_t_15); if (unlikely((__pyx_t_27 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __pyx_v_child_k = __pyx_t_27;
+          __pyx_t_36 = 2;
+          if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_bshape_0_child_leftedges;
+          __pyx_t_7 = (__pyx_v_cz - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_36, __pyx_bstride_0_child_leftedges)));
+          if (unlikely(__pyx_v_child_dx == 0)) {
+            PyErr_Format(PyExc_ZeroDivisionError, "float division");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          }
+          __pyx_v_child_k = ((int)(__pyx_t_7 / __pyx_v_child_dx));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":105
  *                     child_j = int((cy - child_leftedges[1])/child_dx)
@@ -2532,14 +2530,14 @@
  *                                         curpos, ci, output, refined, grids)
  *     return s
  */
-          __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_31); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_1);
-          __pyx_t_15 = PyInt_FromLong(__pyx_v_child_i); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_15);
-          __pyx_t_14 = PyInt_FromLong(__pyx_v_child_j); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_14);
-          __pyx_t_13 = PyInt_FromLong(__pyx_v_child_k); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_17 = __Pyx_GetName(__pyx_m, __pyx_n_s_1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_17);
+          __pyx_t_18 = PyInt_FromLong(__pyx_v_child_i); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_18);
+          __pyx_t_16 = PyInt_FromLong(__pyx_v_child_j); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_16);
+          __pyx_t_2 = PyInt_FromLong(__pyx_v_child_k); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_2);
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":106
  *                     child_k = int((cz - child_leftedges[2])/child_dx)
@@ -2548,50 +2546,50 @@
  *     return s
  * 
  */
-          __pyx_t_12 = PyInt_FromLong(__pyx_v_ci); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_12);
-          __pyx_t_33 = PyTuple_New(11); if (unlikely(!__pyx_t_33)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(((PyObject *)__pyx_t_33));
-          PyTuple_SET_ITEM(__pyx_t_33, 0, __pyx_t_15);
-          __Pyx_GIVEREF(__pyx_t_15);
-          PyTuple_SET_ITEM(__pyx_t_33, 1, __pyx_t_14);
-          __Pyx_GIVEREF(__pyx_t_14);
-          PyTuple_SET_ITEM(__pyx_t_33, 2, __pyx_t_13);
-          __Pyx_GIVEREF(__pyx_t_13);
+          __pyx_t_37 = PyInt_FromLong(__pyx_v_ci); if (unlikely(!__pyx_t_37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_37);
+          __pyx_t_38 = PyTuple_New(11); if (unlikely(!__pyx_t_38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_38);
+          PyTuple_SET_ITEM(__pyx_t_38, 0, __pyx_t_18);
+          __Pyx_GIVEREF(__pyx_t_18);
+          PyTuple_SET_ITEM(__pyx_t_38, 1, __pyx_t_16);
+          __Pyx_GIVEREF(__pyx_t_16);
+          PyTuple_SET_ITEM(__pyx_t_38, 2, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
           __Pyx_INCREF(__pyx_int_2);
-          PyTuple_SET_ITEM(__pyx_t_33, 3, __pyx_int_2);
+          PyTuple_SET_ITEM(__pyx_t_38, 3, __pyx_int_2);
           __Pyx_GIVEREF(__pyx_int_2);
           __Pyx_INCREF(__pyx_int_2);
-          PyTuple_SET_ITEM(__pyx_t_33, 4, __pyx_int_2);
+          PyTuple_SET_ITEM(__pyx_t_38, 4, __pyx_int_2);
           __Pyx_GIVEREF(__pyx_int_2);
           __Pyx_INCREF(__pyx_int_2);
-          PyTuple_SET_ITEM(__pyx_t_33, 5, __pyx_int_2);
+          PyTuple_SET_ITEM(__pyx_t_38, 5, __pyx_int_2);
           __Pyx_GIVEREF(__pyx_int_2);
           __Pyx_INCREF(((PyObject *)__pyx_v_curpos));
-          PyTuple_SET_ITEM(__pyx_t_33, 6, ((PyObject *)__pyx_v_curpos));
+          PyTuple_SET_ITEM(__pyx_t_38, 6, ((PyObject *)__pyx_v_curpos));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_curpos));
-          PyTuple_SET_ITEM(__pyx_t_33, 7, __pyx_t_12);
-          __Pyx_GIVEREF(__pyx_t_12);
+          PyTuple_SET_ITEM(__pyx_t_38, 7, __pyx_t_37);
+          __Pyx_GIVEREF(__pyx_t_37);
           __Pyx_INCREF(((PyObject *)__pyx_v_output));
-          PyTuple_SET_ITEM(__pyx_t_33, 8, ((PyObject *)__pyx_v_output));
+          PyTuple_SET_ITEM(__pyx_t_38, 8, ((PyObject *)__pyx_v_output));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_output));
           __Pyx_INCREF(((PyObject *)__pyx_v_refined));
-          PyTuple_SET_ITEM(__pyx_t_33, 9, ((PyObject *)__pyx_v_refined));
+          PyTuple_SET_ITEM(__pyx_t_38, 9, ((PyObject *)__pyx_v_refined));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_refined));
           __Pyx_INCREF(((PyObject *)__pyx_v_grids));
-          PyTuple_SET_ITEM(__pyx_t_33, 10, ((PyObject *)__pyx_v_grids));
+          PyTuple_SET_ITEM(__pyx_t_38, 10, ((PyObject *)__pyx_v_grids));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_grids));
-          __pyx_t_15 = 0;
-          __pyx_t_14 = 0;
-          __pyx_t_13 = 0;
-          __pyx_t_12 = 0;
-          __pyx_t_12 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_t_33), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_12);
-          __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-          __Pyx_DECREF(((PyObject *)__pyx_t_33)); __pyx_t_33 = 0;
+          __pyx_t_18 = 0;
+          __pyx_t_16 = 0;
+          __pyx_t_2 = 0;
+          __pyx_t_37 = 0;
+          __pyx_t_37 = PyObject_Call(__pyx_t_17, __pyx_t_38, NULL); if (unlikely(!__pyx_t_37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_37);
+          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+          __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0;
           __Pyx_DECREF(__pyx_v_s);
-          __pyx_v_s = __pyx_t_12;
-          __pyx_t_12 = 0;
+          __pyx_v_s = __pyx_t_37;
+          __pyx_t_37 = 0;
         }
         __pyx_L12:;
       }
@@ -2613,12 +2611,12 @@
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
-  __Pyx_XDECREF(__pyx_t_12);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_XDECREF(__pyx_t_14);
-  __Pyx_XDECREF(__pyx_t_15);
-  __Pyx_XDECREF(__pyx_t_33);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_16);
+  __Pyx_XDECREF(__pyx_t_17);
+  __Pyx_XDECREF(__pyx_t_18);
+  __Pyx_XDECREF(__pyx_t_37);
+  __Pyx_XDECREF(__pyx_t_38);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_leftedges);
@@ -2649,8 +2647,12 @@
   __Pyx_XDECREF((PyObject *)__pyx_v_leftedges);
   __Pyx_DECREF((PyObject *)__pyx_v_child_leftedges);
   __Pyx_DECREF(__pyx_v_s);
+  __Pyx_DECREF((PyObject *)__pyx_v_curpos);
+  __Pyx_DECREF((PyObject *)__pyx_v_output);
+  __Pyx_DECREF((PyObject *)__pyx_v_refined);
+  __Pyx_DECREF((PyObject *)__pyx_v_grids);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -2746,58 +2748,62 @@
   Py_ssize_t __pyx_bshape_0_output = 0;
   Py_ssize_t __pyx_bshape_1_output = 0;
   PyObject *__pyx_r = NULL;
-  PyObject *__pyx_1 = 0;
   long __pyx_t_1;
-  PyArrayObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_2 = NULL;
   PyArrayObject *__pyx_t_3 = NULL;
   PyArrayObject *__pyx_t_4 = NULL;
   PyArrayObject *__pyx_t_5 = NULL;
-  __pyx_t_5numpy_float64_t __pyx_t_6;
-  __pyx_t_5numpy_int32_t __pyx_t_7;
+  PyArrayObject *__pyx_t_6 = NULL;
+  __pyx_t_5numpy_float64_t __pyx_t_7;
   int __pyx_t_8;
-  PyObject *__pyx_t_9 = NULL;
-  PyObject *__pyx_t_10 = NULL;
+  __pyx_t_5numpy_int32_t __pyx_t_9;
+  int __pyx_t_10;
   PyObject *__pyx_t_11 = NULL;
-  __pyx_t_5numpy_int32_t __pyx_t_12;
-  long __pyx_t_13;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
   __pyx_t_5numpy_int32_t __pyx_t_14;
   long __pyx_t_15;
   int __pyx_t_16;
-  int __pyx_t_17;
+  __pyx_t_5numpy_int32_t __pyx_t_17;
   long __pyx_t_18;
   int __pyx_t_19;
-  long __pyx_t_20;
-  int __pyx_t_21;
-  long __pyx_t_22;
-  int __pyx_t_23;
-  __pyx_t_5numpy_int32_t __pyx_t_24;
+  int __pyx_t_20;
+  long __pyx_t_21;
+  int __pyx_t_22;
+  long __pyx_t_23;
+  int __pyx_t_24;
   long __pyx_t_25;
-  __pyx_t_5numpy_int32_t __pyx_t_26;
+  int __pyx_t_26;
   __pyx_t_5numpy_int32_t __pyx_t_27;
-  __pyx_t_5numpy_int32_t __pyx_t_28;
-  __pyx_t_5numpy_int32_t __pyx_t_29;
+  long __pyx_t_28;
+  npy_intp __pyx_t_29;
   __pyx_t_5numpy_int32_t __pyx_t_30;
-  int __pyx_t_31;
+  __pyx_t_5numpy_int32_t __pyx_t_31;
   __pyx_t_5numpy_int32_t __pyx_t_32;
   __pyx_t_5numpy_int32_t __pyx_t_33;
   __pyx_t_5numpy_int32_t __pyx_t_34;
-  long __pyx_t_35;
-  PyArrayObject *__pyx_t_36 = NULL;
-  int __pyx_t_37;
-  PyObject *__pyx_t_38 = NULL;
-  PyObject *__pyx_t_39 = NULL;
-  PyObject *__pyx_t_40 = NULL;
-  long __pyx_t_41;
-  long __pyx_t_42;
-  long __pyx_t_43;
-  long __pyx_t_44;
+  int __pyx_t_35;
+  __pyx_t_5numpy_int32_t __pyx_t_36;
+  __pyx_t_5numpy_int32_t __pyx_t_37;
+  __pyx_t_5numpy_int32_t __pyx_t_38;
+  long __pyx_t_39;
+  PyArrayObject *__pyx_t_40 = NULL;
+  int __pyx_t_41;
+  PyObject *__pyx_t_42 = NULL;
+  PyObject *__pyx_t_43 = NULL;
+  PyObject *__pyx_t_44 = NULL;
   long __pyx_t_45;
   long __pyx_t_46;
-  PyObject *__pyx_t_47 = NULL;
-  PyObject *__pyx_t_48 = NULL;
-  int __pyx_t_49;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_i_i,&__pyx_kp_j_i,&__pyx_kp_k_i,&__pyx_kp_i_f,&__pyx_kp_j_f,&__pyx_kp_k_f,&__pyx_kp_curpos,&__pyx_kp_gi,&__pyx_kp_output,&__pyx_kp_genealogy,&__pyx_kp_corners,&__pyx_kp_grids,0};
-  __Pyx_SetupRefcountContext("RecurseOctreeByLevels");
+  long __pyx_t_47;
+  long __pyx_t_48;
+  long __pyx_t_49;
+  long __pyx_t_50;
+  PyObject *__pyx_t_51 = NULL;
+  PyObject *__pyx_t_52 = NULL;
+  PyObject *__pyx_t_53 = NULL;
+  int __pyx_t_54;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__i_i,&__pyx_n_s__j_i,&__pyx_n_s__k_i,&__pyx_n_s__i_f,&__pyx_n_s__j_f,&__pyx_n_s__k_f,&__pyx_n_s__curpos,&__pyx_n_s__gi,&__pyx_n_s__output,&__pyx_n_s__genealogy,&__pyx_n_s__corners,&__pyx_n_s__grids,0};
+  __Pyx_RefNannySetupContext("RecurseOctreeByLevels");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -2820,87 +2826,87 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_i_i);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i_i);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_j_i);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j_i);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_k_i);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__k_i);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 2); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_i_f);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i_f);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 3); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_j_f);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j_f);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 4); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_k_f);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__k_f);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 5); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_curpos);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__curpos);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 6); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
-      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_kp_gi);
+      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__gi);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 7); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  8:
-      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_kp_output);
+      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__output);
       if (likely(values[8])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 8); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  9:
-      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_kp_genealogy);
+      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__genealogy);
       if (likely(values[9])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 9); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case 10:
-      values[10] = PyDict_GetItem(__pyx_kwds, __pyx_kp_corners);
+      values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__corners);
       if (likely(values[10])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 10); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 10); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case 11:
-      values[11] = PyDict_GetItem(__pyx_kwds, __pyx_kp_grids);
+      values[11] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grids);
       if (likely(values[11])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 11); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, 11); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "RecurseOctreeByLevels") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "RecurseOctreeByLevels") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
-    __pyx_v_i_i = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_i_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_j_i = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_j_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_k_i = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_k_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_i_f = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_i_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_j_f = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_j_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_k_f = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_k_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_i = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_i_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_j_i = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_j_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_k_i = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_k_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_f = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_i_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_j_f = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_j_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_k_f = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_k_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_curpos = ((PyArrayObject *)values[6]);
-    __pyx_v_gi = __Pyx_PyInt_AsInt(values[7]); if (unlikely((__pyx_v_gi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_gi = __Pyx_PyInt_AsInt(values[7]); if (unlikely((__pyx_v_gi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_output = ((PyArrayObject *)values[8]);
     __pyx_v_genealogy = ((PyArrayObject *)values[9]);
     __pyx_v_corners = ((PyArrayObject *)values[10]);
@@ -2908,14 +2914,14 @@
   } else if (PyTuple_GET_SIZE(__pyx_args) != 12) {
     goto __pyx_L5_argtuple_error;
   } else {
-    __pyx_v_i_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_i_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_j_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_j_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_k_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_k_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_i_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_i_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_j_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_j_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_k_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_k_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_i_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_j_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_j_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_k_i = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_k_i == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_i_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_j_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_j_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_k_f = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_k_f == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_curpos = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 6));
-    __pyx_v_gi = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 7)); if (unlikely((__pyx_v_gi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_gi = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 7)); if (unlikely((__pyx_v_gi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_output = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 8));
     __pyx_v_genealogy = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 9));
     __pyx_v_corners = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 10));
@@ -2923,11 +2929,16 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("RecurseOctreeByLevels", 1, 12, 12, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.RecurseOctreeByLevels");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_curpos);
+  __Pyx_INCREF((PyObject *)__pyx_v_output);
+  __Pyx_INCREF((PyObject *)__pyx_v_genealogy);
+  __Pyx_INCREF((PyObject *)__pyx_v_corners);
+  __Pyx_INCREF((PyObject *)__pyx_v_grids);
   __pyx_v_child_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_child_leftedges = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_s = Py_None; __Pyx_INCREF(Py_None);
@@ -2940,32 +2951,32 @@
   __pyx_bstruct_output.buf = NULL;
   __pyx_bstruct_genealogy.buf = NULL;
   __pyx_bstruct_corners.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_curpos), __pyx_ptype_5numpy_ndarray, 1, "curpos", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_genealogy), __pyx_ptype_5numpy_ndarray, 1, "genealogy", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_corners), __pyx_ptype_5numpy_ndarray, 1, "corners", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grids), __pyx_ptype_2yt_9amr_utils_OctreeGridList, 1, "grids", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_curpos), __pyx_ptype_5numpy_ndarray, 1, "curpos", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_genealogy), __pyx_ptype_5numpy_ndarray, 1, "genealogy", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_corners), __pyx_ptype_5numpy_ndarray, 1, "corners", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grids), __pyx_ptype_2yt_9amr_utils_OctreeGridList, 1, "grids", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_curpos, (PyObject*)__pyx_v_curpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_curpos, (PyObject*)__pyx_v_curpos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_curpos = __pyx_bstruct_curpos.strides[0];
   __pyx_bshape_0_curpos = __pyx_bstruct_curpos.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_output = __pyx_bstruct_output.strides[0]; __pyx_bstride_1_output = __pyx_bstruct_output.strides[1];
   __pyx_bshape_0_output = __pyx_bstruct_output.shape[0]; __pyx_bshape_1_output = __pyx_bstruct_output.shape[1];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_genealogy, (PyObject*)__pyx_v_genealogy, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_genealogy, (PyObject*)__pyx_v_genealogy, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_genealogy = __pyx_bstruct_genealogy.strides[0]; __pyx_bstride_1_genealogy = __pyx_bstruct_genealogy.strides[1];
   __pyx_bshape_0_genealogy = __pyx_bstruct_genealogy.shape[0]; __pyx_bshape_1_genealogy = __pyx_bstruct_genealogy.shape[1];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_corners, (PyObject*)__pyx_v_corners, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_corners, (PyObject*)__pyx_v_corners, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_corners = __pyx_bstruct_corners.strides[0]; __pyx_bstride_1_corners = __pyx_bstruct_corners.strides[1];
   __pyx_bshape_0_corners = __pyx_bstruct_corners.shape[0]; __pyx_bshape_1_corners = __pyx_bstruct_corners.shape[1];
@@ -2978,11 +2989,11 @@
  *     cdef np.ndarray[np.int32_t, ndim=3] child_indices = grid.child_indices
  */
   __pyx_t_1 = (__pyx_v_gi - 1);
-  __pyx_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grids), __pyx_t_1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_2yt_9amr_utils_OctreeGrid))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)__pyx_1);
-  __pyx_1 = 0;
+  __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grids), __pyx_t_1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_2yt_9amr_utils_OctreeGrid))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)__pyx_t_2);
+  __pyx_t_2 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":122
  *     cdef OctreeGrid child_grid
@@ -3000,18 +3011,18 @@
  *     cdef np.ndarray[np.int32_t, ndim=1] dimensions = grid.dimensions
  *     cdef np.ndarray[np.float64_t, ndim=4] fields = grid.fields
  */
-  if (!(__Pyx_TypeTest(__pyx_v_grid->child_indices, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = ((PyArrayObject *)__pyx_v_grid->child_indices);
+  if (!(likely(((__pyx_v_grid->child_indices) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grid->child_indices, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((PyArrayObject *)__pyx_v_grid->child_indices);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_child_indices, (PyObject*)__pyx_t_2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_child_indices, (PyObject*)__pyx_t_3, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
       __pyx_v_child_indices = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_child_indices.buf = NULL;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_child_indices = __pyx_bstruct_child_indices.strides[0]; __pyx_bstride_1_child_indices = __pyx_bstruct_child_indices.strides[1]; __pyx_bstride_2_child_indices = __pyx_bstruct_child_indices.strides[2];
       __pyx_bshape_0_child_indices = __pyx_bstruct_child_indices.shape[0]; __pyx_bshape_1_child_indices = __pyx_bstruct_child_indices.shape[1]; __pyx_bshape_2_child_indices = __pyx_bstruct_child_indices.shape[2];
     }
   }
-  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
   __Pyx_INCREF(__pyx_v_grid->child_indices);
   __pyx_v_child_indices = ((PyArrayObject *)__pyx_v_grid->child_indices);
 
@@ -3022,18 +3033,18 @@
  *     cdef np.ndarray[np.float64_t, ndim=4] fields = grid.fields
  *     cdef np.ndarray[np.float64_t, ndim=1] leftedges = grid.left_edges
  */
-  if (!(__Pyx_TypeTest(__pyx_v_grid->dimensions, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = ((PyArrayObject *)__pyx_v_grid->dimensions);
+  if (!(likely(((__pyx_v_grid->dimensions) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grid->dimensions, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((PyArrayObject *)__pyx_v_grid->dimensions);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dimensions, (PyObject*)__pyx_t_3, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dimensions, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_dimensions = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_dimensions.buf = NULL;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_dimensions = __pyx_bstruct_dimensions.strides[0];
       __pyx_bshape_0_dimensions = __pyx_bstruct_dimensions.shape[0];
     }
   }
-  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
   __Pyx_INCREF(__pyx_v_grid->dimensions);
   __pyx_v_dimensions = ((PyArrayObject *)__pyx_v_grid->dimensions);
 
@@ -3044,18 +3055,18 @@
  *     cdef np.ndarray[np.float64_t, ndim=1] leftedges = grid.left_edges
  *     cdef np.float64_t dx = grid.dx[0]
  */
-  if (!(__Pyx_TypeTest(__pyx_v_grid->fields, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = ((PyArrayObject *)__pyx_v_grid->fields);
+  if (!(likely(((__pyx_v_grid->fields) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grid->fields, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = ((PyArrayObject *)__pyx_v_grid->fields);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_fields, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_fields, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {
       __pyx_v_fields = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_fields.buf = NULL;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_fields = __pyx_bstruct_fields.strides[0]; __pyx_bstride_1_fields = __pyx_bstruct_fields.strides[1]; __pyx_bstride_2_fields = __pyx_bstruct_fields.strides[2]; __pyx_bstride_3_fields = __pyx_bstruct_fields.strides[3];
       __pyx_bshape_0_fields = __pyx_bstruct_fields.shape[0]; __pyx_bshape_1_fields = __pyx_bstruct_fields.shape[1]; __pyx_bshape_2_fields = __pyx_bstruct_fields.shape[2]; __pyx_bshape_3_fields = __pyx_bstruct_fields.shape[3];
     }
   }
-  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
   __Pyx_INCREF(__pyx_v_grid->fields);
   __pyx_v_fields = ((PyArrayObject *)__pyx_v_grid->fields);
 
@@ -3066,18 +3077,18 @@
  *     cdef np.float64_t dx = grid.dx[0]
  *     cdef np.float64_t child_dx
  */
-  if (!(__Pyx_TypeTest(__pyx_v_grid->left_edges, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = ((PyArrayObject *)__pyx_v_grid->left_edges);
+  if (!(likely(((__pyx_v_grid->left_edges) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grid->left_edges, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = ((PyArrayObject *)__pyx_v_grid->left_edges);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_leftedges, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_leftedges, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_leftedges = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_leftedges.buf = NULL;
-      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_leftedges = __pyx_bstruct_leftedges.strides[0];
       __pyx_bshape_0_leftedges = __pyx_bstruct_leftedges.shape[0];
     }
   }
-  __pyx_t_5 = 0;
+  __pyx_t_6 = 0;
   __Pyx_INCREF(__pyx_v_grid->left_edges);
   __pyx_v_leftedges = ((PyArrayObject *)__pyx_v_grid->left_edges);
 
@@ -3088,11 +3099,11 @@
  *     cdef np.float64_t child_dx
  *     cdef np.ndarray[np.float64_t, ndim=1] child_leftedges
  */
-  __pyx_1 = __Pyx_GetItemInt(__pyx_v_grid->dx, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_v_dx = __pyx_t_6;
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_grid->dx, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_7 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_dx = __pyx_t_7;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":132
  *     cdef np.float64_t cx, cy, cz
@@ -3101,8 +3112,9 @@
  *         i = i_off + i_i
  *         cx = (leftedges[0] + i*dx)
  */
-  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_v_i_f; __pyx_t_7+=1) {
-    __pyx_v_i_off = __pyx_t_7;
+  __pyx_t_8 = __pyx_v_i_f;
+  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
+    __pyx_v_i_off = __pyx_t_9;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":133
  *     cdef int cp
@@ -3131,22 +3143,22 @@
  *         for j_off in range(j_f):
  *             j = j_off + j_i
  */
-    __pyx_t_8 = (__pyx_v_i_f > 2);
-    if (__pyx_t_8) {
-      __pyx_t_9 = __Pyx_PyInt_to_py_npy_int32(__pyx_v_k); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_10 = PyFloat_FromDouble(__pyx_v_cz); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_11));
-      PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
-      __Pyx_GIVEREF(__pyx_t_9);
-      PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_10);
-      __Pyx_GIVEREF(__pyx_t_10);
-      __pyx_t_9 = 0;
-      __pyx_t_10 = 0;
-      if (__Pyx_Print(((PyObject *)__pyx_t_11), 1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+    __pyx_t_10 = (__pyx_v_i_f > 2);
+    if (__pyx_t_10) {
+      __pyx_t_2 = __Pyx_PyInt_to_py_npy_int32(__pyx_v_k); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_11 = PyFloat_FromDouble(__pyx_v_cz); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_11);
+      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_12);
+      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_11);
+      __Pyx_GIVEREF(__pyx_t_11);
+      __pyx_t_2 = 0;
+      __pyx_t_11 = 0;
+      if (__Pyx_Print(__pyx_t_12, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       goto __pyx_L8;
     }
     __pyx_L8:;
@@ -3158,8 +3170,9 @@
  *             j = j_off + j_i
  *             cy = (leftedges[1] + j*dx)
  */
-    for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_v_j_f; __pyx_t_12+=1) {
-      __pyx_v_j_off = __pyx_t_12;
+    __pyx_t_13 = __pyx_v_j_f;
+    for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+      __pyx_v_j_off = __pyx_t_14;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":137
  *         if i_f > 2: print k, cz
@@ -3177,9 +3190,9 @@
  *             for k_off in range(k_f):
  *                 k = k_off + k_i
  */
-      __pyx_t_13 = 1;
-      if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_0_leftedges;
-      __pyx_v_cy = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_leftedges.buf, __pyx_t_13, __pyx_bstride_0_leftedges)) + (__pyx_v_j * __pyx_v_dx));
+      __pyx_t_15 = 1;
+      if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_leftedges;
+      __pyx_v_cy = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_leftedges.buf, __pyx_t_15, __pyx_bstride_0_leftedges)) + (__pyx_v_j * __pyx_v_dx));
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":139
  *             j = j_off + j_i
@@ -3188,8 +3201,9 @@
  *                 k = k_off + k_i
  *                 cz = (leftedges[2] + k*dx)
  */
-      for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_v_k_f; __pyx_t_14+=1) {
-        __pyx_v_k_off = __pyx_t_14;
+      __pyx_t_16 = __pyx_v_k_f;
+      for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
+        __pyx_v_k_off = __pyx_t_17;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":140
  *             cy = (leftedges[1] + j*dx)
@@ -3207,9 +3221,9 @@
  *                 cp = curpos[level]
  *                 corners[cp, 0] = cx
  */
-        __pyx_t_15 = 2;
-        if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_leftedges;
-        __pyx_v_cz = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_leftedges.buf, __pyx_t_15, __pyx_bstride_0_leftedges)) + (__pyx_v_k * __pyx_v_dx));
+        __pyx_t_18 = 2;
+        if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_0_leftedges;
+        __pyx_v_cz = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_leftedges.buf, __pyx_t_18, __pyx_bstride_0_leftedges)) + (__pyx_v_k * __pyx_v_dx));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":142
  *                 k = k_off + k_i
@@ -3218,9 +3232,9 @@
  *                 corners[cp, 0] = cx
  *                 corners[cp, 1] = cy
  */
-        __pyx_t_16 = __pyx_v_level;
-        if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_0_curpos;
-        __pyx_v_cp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_16, __pyx_bstride_0_curpos));
+        __pyx_t_19 = __pyx_v_level;
+        if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_0_curpos;
+        __pyx_v_cp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_19, __pyx_bstride_0_curpos));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":143
  *                 cz = (leftedges[2] + k*dx)
@@ -3229,11 +3243,11 @@
  *                 corners[cp, 1] = cy
  *                 corners[cp, 2] = cz
  */
-        __pyx_t_17 = __pyx_v_cp;
-        __pyx_t_18 = 0;
-        if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_0_corners;
-        if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_1_corners;
-        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_corners.buf, __pyx_t_17, __pyx_bstride_0_corners, __pyx_t_18, __pyx_bstride_1_corners) = __pyx_v_cx;
+        __pyx_t_20 = __pyx_v_cp;
+        __pyx_t_21 = 0;
+        if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_0_corners;
+        if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_1_corners;
+        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_corners.buf, __pyx_t_20, __pyx_bstride_0_corners, __pyx_t_21, __pyx_bstride_1_corners) = __pyx_v_cx;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":144
  *                 cp = curpos[level]
@@ -3242,11 +3256,11 @@
  *                 corners[cp, 2] = cz
  *                 genealogy[curpos[level], 2] = level
  */
-        __pyx_t_19 = __pyx_v_cp;
-        __pyx_t_20 = 1;
-        if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_0_corners;
-        if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_1_corners;
-        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_corners.buf, __pyx_t_19, __pyx_bstride_0_corners, __pyx_t_20, __pyx_bstride_1_corners) = __pyx_v_cy;
+        __pyx_t_22 = __pyx_v_cp;
+        __pyx_t_23 = 1;
+        if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_0_corners;
+        if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_1_corners;
+        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_corners.buf, __pyx_t_22, __pyx_bstride_0_corners, __pyx_t_23, __pyx_bstride_1_corners) = __pyx_v_cy;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":145
  *                 corners[cp, 0] = cx
@@ -3255,11 +3269,11 @@
  *                 genealogy[curpos[level], 2] = level
  *                 # always output data
  */
-        __pyx_t_21 = __pyx_v_cp;
-        __pyx_t_22 = 2;
-        if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_0_corners;
-        if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_1_corners;
-        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_corners.buf, __pyx_t_21, __pyx_bstride_0_corners, __pyx_t_22, __pyx_bstride_1_corners) = __pyx_v_cz;
+        __pyx_t_24 = __pyx_v_cp;
+        __pyx_t_25 = 2;
+        if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_0_corners;
+        if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_1_corners;
+        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_corners.buf, __pyx_t_24, __pyx_bstride_0_corners, __pyx_t_25, __pyx_bstride_1_corners) = __pyx_v_cz;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":146
  *                 corners[cp, 1] = cy
@@ -3268,13 +3282,13 @@
  *                 # always output data
  *                 for fi in range(fields.shape[0]):
  */
-        __pyx_t_23 = __pyx_v_level;
-        if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_0_curpos;
-        __pyx_t_24 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_23, __pyx_bstride_0_curpos));
-        __pyx_t_25 = 2;
-        if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_0_genealogy;
-        if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_1_genealogy;
-        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_genealogy.buf, __pyx_t_24, __pyx_bstride_0_genealogy, __pyx_t_25, __pyx_bstride_1_genealogy) = __pyx_v_level;
+        __pyx_t_26 = __pyx_v_level;
+        if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_0_curpos;
+        __pyx_t_27 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_26, __pyx_bstride_0_curpos));
+        __pyx_t_28 = 2;
+        if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_0_genealogy;
+        if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_1_genealogy;
+        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_genealogy.buf, __pyx_t_27, __pyx_bstride_0_genealogy, __pyx_t_28, __pyx_bstride_1_genealogy) = __pyx_v_level;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":148
  *                 genealogy[curpos[level], 2] = level
@@ -3283,8 +3297,9 @@
  *                     output[cp,fi] = fields[fi,i,j,k]
  *                 ci = child_indices[i,j,k]
  */
-        for (__pyx_t_26 = 0; __pyx_t_26 < (__pyx_v_fields->dimensions[0]); __pyx_t_26+=1) {
-          __pyx_v_fi = __pyx_t_26;
+        __pyx_t_29 = (__pyx_v_fields->dimensions[0]);
+        for (__pyx_t_30 = 0; __pyx_t_30 < __pyx_t_29; __pyx_t_30+=1) {
+          __pyx_v_fi = __pyx_t_30;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":149
  *                 # always output data
@@ -3293,19 +3308,19 @@
  *                 ci = child_indices[i,j,k]
  *                 if ci > -1:
  */
-          __pyx_t_27 = __pyx_v_fi;
-          __pyx_t_28 = __pyx_v_i;
-          __pyx_t_29 = __pyx_v_j;
-          __pyx_t_30 = __pyx_v_k;
-          if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_0_fields;
-          if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_1_fields;
-          if (__pyx_t_29 < 0) __pyx_t_29 += __pyx_bshape_2_fields;
-          if (__pyx_t_30 < 0) __pyx_t_30 += __pyx_bshape_3_fields;
-          __pyx_t_31 = __pyx_v_cp;
-          __pyx_t_32 = __pyx_v_fi;
-          if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_bshape_0_output;
-          if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_bshape_1_output;
-          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_31, __pyx_bstride_0_output, __pyx_t_32, __pyx_bstride_1_output) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_fields.buf, __pyx_t_27, __pyx_bstride_0_fields, __pyx_t_28, __pyx_bstride_1_fields, __pyx_t_29, __pyx_bstride_2_fields, __pyx_t_30, __pyx_bstride_3_fields));
+          __pyx_t_31 = __pyx_v_fi;
+          __pyx_t_32 = __pyx_v_i;
+          __pyx_t_33 = __pyx_v_j;
+          __pyx_t_34 = __pyx_v_k;
+          if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_bshape_0_fields;
+          if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_bshape_1_fields;
+          if (__pyx_t_33 < 0) __pyx_t_33 += __pyx_bshape_2_fields;
+          if (__pyx_t_34 < 0) __pyx_t_34 += __pyx_bshape_3_fields;
+          __pyx_t_35 = __pyx_v_cp;
+          __pyx_t_36 = __pyx_v_fi;
+          if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_bshape_0_output;
+          if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_bshape_1_output;
+          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_35, __pyx_bstride_0_output, __pyx_t_36, __pyx_bstride_1_output) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_fields.buf, __pyx_t_31, __pyx_bstride_0_fields, __pyx_t_32, __pyx_bstride_1_fields, __pyx_t_33, __pyx_bstride_2_fields, __pyx_t_34, __pyx_bstride_3_fields));
         }
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":150
@@ -3315,13 +3330,13 @@
  *                 if ci > -1:
  *                     child_grid = grids[ci-1]
  */
-        __pyx_t_26 = __pyx_v_i;
-        __pyx_t_33 = __pyx_v_j;
-        __pyx_t_34 = __pyx_v_k;
-        if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_0_child_indices;
-        if (__pyx_t_33 < 0) __pyx_t_33 += __pyx_bshape_1_child_indices;
-        if (__pyx_t_34 < 0) __pyx_t_34 += __pyx_bshape_2_child_indices;
-        __pyx_v_ci = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_child_indices.buf, __pyx_t_26, __pyx_bstride_0_child_indices, __pyx_t_33, __pyx_bstride_1_child_indices, __pyx_t_34, __pyx_bstride_2_child_indices));
+        __pyx_t_30 = __pyx_v_i;
+        __pyx_t_37 = __pyx_v_j;
+        __pyx_t_38 = __pyx_v_k;
+        if (__pyx_t_30 < 0) __pyx_t_30 += __pyx_bshape_0_child_indices;
+        if (__pyx_t_37 < 0) __pyx_t_37 += __pyx_bshape_1_child_indices;
+        if (__pyx_t_38 < 0) __pyx_t_38 += __pyx_bshape_2_child_indices;
+        __pyx_v_ci = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_child_indices.buf, __pyx_t_30, __pyx_bstride_0_child_indices, __pyx_t_37, __pyx_bstride_1_child_indices, __pyx_t_38, __pyx_bstride_2_child_indices));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":151
  *                     output[cp,fi] = fields[fi,i,j,k]
@@ -3330,8 +3345,8 @@
  *                     child_grid = grids[ci-1]
  *                     child_dx = child_grid.dx[0]
  */
-        __pyx_t_8 = (__pyx_v_ci > -1);
-        if (__pyx_t_8) {
+        __pyx_t_10 = (__pyx_v_ci > -1);
+        if (__pyx_t_10) {
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":152
  *                 ci = child_indices[i,j,k]
@@ -3340,13 +3355,13 @@
  *                     child_dx = child_grid.dx[0]
  *                     child_leftedges = child_grid.left_edges
  */
-          __pyx_t_35 = (__pyx_v_ci - 1);
-          __pyx_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grids), __pyx_t_35, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_1);
-          if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_2yt_9amr_utils_OctreeGrid))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_39 = (__pyx_v_ci - 1);
+          __pyx_t_12 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grids), __pyx_t_39, sizeof(long), PyInt_FromLong); if (!__pyx_t_12) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_2yt_9amr_utils_OctreeGrid))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(((PyObject *)__pyx_v_child_grid));
-          __pyx_v_child_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)__pyx_1);
-          __pyx_1 = 0;
+          __pyx_v_child_grid = ((struct __pyx_obj_2yt_9amr_utils_OctreeGrid *)__pyx_t_12);
+          __pyx_t_12 = 0;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":153
  *                 if ci > -1:
@@ -3355,11 +3370,11 @@
  *                     child_leftedges = child_grid.left_edges
  *                     child_i = int((cx-child_leftedges[0])/child_dx)
  */
-          __pyx_1 = __Pyx_GetItemInt(__pyx_v_child_grid->dx, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_1);
-          __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-          __pyx_v_child_dx = __pyx_t_6;
+          __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_child_grid->dx, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_12) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_7 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          __pyx_v_child_dx = __pyx_t_7;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":154
  *                     child_grid = grids[ci-1]
@@ -3368,26 +3383,26 @@
  *                     child_i = int((cx-child_leftedges[0])/child_dx)
  *                     child_j = int((cy-child_leftedges[1])/child_dx)
  */
-          if (!(__Pyx_TypeTest(__pyx_v_child_grid->left_edges, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __pyx_t_36 = ((PyArrayObject *)__pyx_v_child_grid->left_edges);
+          if (!(likely(((__pyx_v_child_grid->left_edges) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child_grid->left_edges, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_40 = ((PyArrayObject *)__pyx_v_child_grid->left_edges);
           {
             __Pyx_BufFmt_StackElem __pyx_stack[1];
             __Pyx_SafeReleaseBuffer(&__pyx_bstruct_child_leftedges);
-            __pyx_t_37 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_child_leftedges, (PyObject*)__pyx_t_36, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-            if (unlikely(__pyx_t_37 < 0)) {
-              PyErr_Fetch(&__pyx_t_38, &__pyx_t_39, &__pyx_t_40);
+            __pyx_t_41 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_child_leftedges, (PyObject*)__pyx_t_40, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+            if (unlikely(__pyx_t_41 < 0)) {
+              PyErr_Fetch(&__pyx_t_42, &__pyx_t_43, &__pyx_t_44);
               if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_child_leftedges, (PyObject*)__pyx_v_child_leftedges, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-                Py_XDECREF(__pyx_t_38); Py_XDECREF(__pyx_t_39); Py_XDECREF(__pyx_t_40);
+                Py_XDECREF(__pyx_t_42); Py_XDECREF(__pyx_t_43); Py_XDECREF(__pyx_t_44);
                 __Pyx_RaiseBufferFallbackError();
               } else {
-                PyErr_Restore(__pyx_t_38, __pyx_t_39, __pyx_t_40);
+                PyErr_Restore(__pyx_t_42, __pyx_t_43, __pyx_t_44);
               }
             }
             __pyx_bstride_0_child_leftedges = __pyx_bstruct_child_leftedges.strides[0];
             __pyx_bshape_0_child_leftedges = __pyx_bstruct_child_leftedges.shape[0];
-            if (unlikely(__pyx_t_37 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            if (unlikely(__pyx_t_41 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
-          __pyx_t_36 = 0;
+          __pyx_t_40 = 0;
           __Pyx_INCREF(__pyx_v_child_grid->left_edges);
           __Pyx_DECREF(((PyObject *)__pyx_v_child_leftedges));
           __pyx_v_child_leftedges = ((PyArrayObject *)__pyx_v_child_grid->left_edges);
@@ -3399,21 +3414,14 @@
  *                     child_j = int((cy-child_leftedges[1])/child_dx)
  *                     child_k = int((cz-child_leftedges[2])/child_dx)
  */
-          __pyx_t_35 = 0;
-          if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_bshape_0_child_leftedges;
-          __pyx_t_11 = PyFloat_FromDouble(((__pyx_v_cx - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_35, __pyx_bstride_0_child_leftedges))) / __pyx_v_child_dx)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_11);
-          __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(((PyObject *)__pyx_t_10));
-          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
-          __Pyx_GIVEREF(__pyx_t_11);
-          __pyx_t_11 = 0;
-          __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_11);
-          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
-          __pyx_t_37 = __Pyx_PyInt_AsInt(__pyx_t_11); if (unlikely((__pyx_t_37 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __pyx_v_child_i = __pyx_t_37;
+          __pyx_t_39 = 0;
+          if (__pyx_t_39 < 0) __pyx_t_39 += __pyx_bshape_0_child_leftedges;
+          __pyx_t_7 = (__pyx_v_cx - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_39, __pyx_bstride_0_child_leftedges)));
+          if (unlikely(__pyx_v_child_dx == 0)) {
+            PyErr_Format(PyExc_ZeroDivisionError, "float division");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          }
+          __pyx_v_child_i = ((int)(__pyx_t_7 / __pyx_v_child_dx));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":156
  *                     child_leftedges = child_grid.left_edges
@@ -3422,21 +3430,14 @@
  *                     child_k = int((cz-child_leftedges[2])/child_dx)
  *                     # set current child id to id of next cell to examine
  */
-          __pyx_t_41 = 1;
-          if (__pyx_t_41 < 0) __pyx_t_41 += __pyx_bshape_0_child_leftedges;
-          __pyx_t_11 = PyFloat_FromDouble(((__pyx_v_cy - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_41, __pyx_bstride_0_child_leftedges))) / __pyx_v_child_dx)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_11);
-          __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(((PyObject *)__pyx_t_10));
-          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
-          __Pyx_GIVEREF(__pyx_t_11);
-          __pyx_t_11 = 0;
-          __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_11);
-          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
-          __pyx_t_37 = __Pyx_PyInt_AsInt(__pyx_t_11); if (unlikely((__pyx_t_37 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __pyx_v_child_j = __pyx_t_37;
+          __pyx_t_45 = 1;
+          if (__pyx_t_45 < 0) __pyx_t_45 += __pyx_bshape_0_child_leftedges;
+          __pyx_t_7 = (__pyx_v_cy - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_45, __pyx_bstride_0_child_leftedges)));
+          if (unlikely(__pyx_v_child_dx == 0)) {
+            PyErr_Format(PyExc_ZeroDivisionError, "float division");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          }
+          __pyx_v_child_j = ((int)(__pyx_t_7 / __pyx_v_child_dx));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":157
  *                     child_i = int((cx-child_leftedges[0])/child_dx)
@@ -3445,21 +3446,14 @@
  *                     # set current child id to id of next cell to examine
  *                     genealogy[cp, 0] = curpos[level+1]
  */
-          __pyx_t_42 = 2;
-          if (__pyx_t_42 < 0) __pyx_t_42 += __pyx_bshape_0_child_leftedges;
-          __pyx_t_11 = PyFloat_FromDouble(((__pyx_v_cz - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_42, __pyx_bstride_0_child_leftedges))) / __pyx_v_child_dx)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_11);
-          __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(((PyObject *)__pyx_t_10));
-          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
-          __Pyx_GIVEREF(__pyx_t_11);
-          __pyx_t_11 = 0;
-          __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_11);
-          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
-          __pyx_t_37 = __Pyx_PyInt_AsInt(__pyx_t_11); if (unlikely((__pyx_t_37 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __pyx_v_child_k = __pyx_t_37;
+          __pyx_t_46 = 2;
+          if (__pyx_t_46 < 0) __pyx_t_46 += __pyx_bshape_0_child_leftedges;
+          __pyx_t_7 = (__pyx_v_cz - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_child_leftedges.buf, __pyx_t_46, __pyx_bstride_0_child_leftedges)));
+          if (unlikely(__pyx_v_child_dx == 0)) {
+            PyErr_Format(PyExc_ZeroDivisionError, "float division");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          }
+          __pyx_v_child_k = ((int)(__pyx_t_7 / __pyx_v_child_dx));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":159
  *                     child_k = int((cz-child_leftedges[2])/child_dx)
@@ -3468,13 +3462,13 @@
  *                     # set next parent id to id of current cell
  *                     genealogy[curpos[level+1]:curpos[level+1]+8, 1] = cp
  */
-          __pyx_t_43 = (__pyx_v_level + 1);
-          if (__pyx_t_43 < 0) __pyx_t_43 += __pyx_bshape_0_curpos;
-          __pyx_t_37 = __pyx_v_cp;
-          __pyx_t_44 = 0;
-          if (__pyx_t_37 < 0) __pyx_t_37 += __pyx_bshape_0_genealogy;
-          if (__pyx_t_44 < 0) __pyx_t_44 += __pyx_bshape_1_genealogy;
-          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_genealogy.buf, __pyx_t_37, __pyx_bstride_0_genealogy, __pyx_t_44, __pyx_bstride_1_genealogy) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_43, __pyx_bstride_0_curpos));
+          __pyx_t_47 = (__pyx_v_level + 1);
+          if (__pyx_t_47 < 0) __pyx_t_47 += __pyx_bshape_0_curpos;
+          __pyx_t_41 = __pyx_v_cp;
+          __pyx_t_48 = 0;
+          if (__pyx_t_41 < 0) __pyx_t_41 += __pyx_bshape_0_genealogy;
+          if (__pyx_t_48 < 0) __pyx_t_48 += __pyx_bshape_1_genealogy;
+          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_genealogy.buf, __pyx_t_41, __pyx_bstride_0_genealogy, __pyx_t_48, __pyx_bstride_1_genealogy) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_47, __pyx_bstride_0_curpos));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":161
  *                     genealogy[cp, 0] = curpos[level+1]
@@ -3483,31 +3477,31 @@
  *                     s = RecurseOctreeByLevels(child_i, child_j, child_k, 2, 2, 2,
  *                                               curpos, ci, output, genealogy,
  */
-          __pyx_t_11 = PyInt_FromLong(__pyx_v_cp); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_12 = PyInt_FromLong(__pyx_v_cp); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_49 = (__pyx_v_level + 1);
+          if (__pyx_t_49 < 0) __pyx_t_49 += __pyx_bshape_0_curpos;
+          __pyx_t_11 = __Pyx_PyInt_to_py_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_49, __pyx_bstride_0_curpos))); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_11);
-          __pyx_t_45 = (__pyx_v_level + 1);
-          if (__pyx_t_45 < 0) __pyx_t_45 += __pyx_bshape_0_curpos;
-          __pyx_t_10 = __Pyx_PyInt_to_py_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_45, __pyx_bstride_0_curpos))); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_10);
-          __pyx_t_46 = (__pyx_v_level + 1);
-          if (__pyx_t_46 < 0) __pyx_t_46 += __pyx_bshape_0_curpos;
-          __pyx_t_9 = PyInt_FromLong(((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_46, __pyx_bstride_0_curpos)) + 8)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_9);
-          __pyx_1 = PySlice_New(__pyx_t_10, __pyx_t_9, Py_None); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_1);
-          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(((PyObject *)__pyx_t_9));
-          PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_1);
-          __Pyx_GIVEREF(__pyx_1);
+          __pyx_t_50 = (__pyx_v_level + 1);
+          if (__pyx_t_50 < 0) __pyx_t_50 += __pyx_bshape_0_curpos;
+          __pyx_t_2 = PyInt_FromLong(((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_50, __pyx_bstride_0_curpos)) + 8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_51 = PySlice_New(__pyx_t_11, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_51);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_51);
+          __Pyx_GIVEREF(__pyx_t_51);
           __Pyx_INCREF(__pyx_int_1);
-          PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_1);
+          PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_1);
           __Pyx_GIVEREF(__pyx_int_1);
-          __pyx_1 = 0;
-          if (PyObject_SetItem(((PyObject *)__pyx_v_genealogy), ((PyObject *)__pyx_t_9), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
-          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __pyx_t_51 = 0;
+          if (PyObject_SetItem(((PyObject *)__pyx_v_genealogy), __pyx_t_2, __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":162
  *                     # set next parent id to id of current cell
@@ -3516,14 +3510,14 @@
  *                                               curpos, ci, output, genealogy,
  *                                               corners, grids)
  */
-          __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_32); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_1);
-          __pyx_t_11 = PyInt_FromLong(__pyx_v_child_i); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s_2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_2 = PyInt_FromLong(__pyx_v_child_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_51 = PyInt_FromLong(__pyx_v_child_j); if (unlikely(!__pyx_t_51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_51);
+          __pyx_t_11 = PyInt_FromLong(__pyx_v_child_k); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_11);
-          __pyx_t_9 = PyInt_FromLong(__pyx_v_child_j); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_9);
-          __pyx_t_10 = PyInt_FromLong(__pyx_v_child_k); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_10);
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":163
  *                     genealogy[curpos[level+1]:curpos[level+1]+8, 1] = cp
@@ -3532,8 +3526,8 @@
  *                                               corners, grids)
  *                 curpos[level] += 1
  */
-          __pyx_t_47 = __Pyx_PyInt_to_py_npy_int32(__pyx_v_ci); if (unlikely(!__pyx_t_47)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_47);
+          __pyx_t_52 = __Pyx_PyInt_to_py_npy_int32(__pyx_v_ci); if (unlikely(!__pyx_t_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_52);
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":164
  *                     s = RecurseOctreeByLevels(child_i, child_j, child_k, 2, 2, 2,
@@ -3542,51 +3536,51 @@
  *                 curpos[level] += 1
  *     return s
  */
-          __pyx_t_48 = PyTuple_New(12); if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(((PyObject *)__pyx_t_48));
-          PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_11);
+          __pyx_t_53 = PyTuple_New(12); if (unlikely(!__pyx_t_53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_53);
+          PyTuple_SET_ITEM(__pyx_t_53, 0, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_53, 1, __pyx_t_51);
+          __Pyx_GIVEREF(__pyx_t_51);
+          PyTuple_SET_ITEM(__pyx_t_53, 2, __pyx_t_11);
           __Pyx_GIVEREF(__pyx_t_11);
-          PyTuple_SET_ITEM(__pyx_t_48, 1, __pyx_t_9);
-          __Pyx_GIVEREF(__pyx_t_9);
-          PyTuple_SET_ITEM(__pyx_t_48, 2, __pyx_t_10);
-          __Pyx_GIVEREF(__pyx_t_10);
           __Pyx_INCREF(__pyx_int_2);
-          PyTuple_SET_ITEM(__pyx_t_48, 3, __pyx_int_2);
+          PyTuple_SET_ITEM(__pyx_t_53, 3, __pyx_int_2);
           __Pyx_GIVEREF(__pyx_int_2);
           __Pyx_INCREF(__pyx_int_2);
-          PyTuple_SET_ITEM(__pyx_t_48, 4, __pyx_int_2);
+          PyTuple_SET_ITEM(__pyx_t_53, 4, __pyx_int_2);
           __Pyx_GIVEREF(__pyx_int_2);
           __Pyx_INCREF(__pyx_int_2);
-          PyTuple_SET_ITEM(__pyx_t_48, 5, __pyx_int_2);
+          PyTuple_SET_ITEM(__pyx_t_53, 5, __pyx_int_2);
           __Pyx_GIVEREF(__pyx_int_2);
           __Pyx_INCREF(((PyObject *)__pyx_v_curpos));
-          PyTuple_SET_ITEM(__pyx_t_48, 6, ((PyObject *)__pyx_v_curpos));
+          PyTuple_SET_ITEM(__pyx_t_53, 6, ((PyObject *)__pyx_v_curpos));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_curpos));
-          PyTuple_SET_ITEM(__pyx_t_48, 7, __pyx_t_47);
-          __Pyx_GIVEREF(__pyx_t_47);
+          PyTuple_SET_ITEM(__pyx_t_53, 7, __pyx_t_52);
+          __Pyx_GIVEREF(__pyx_t_52);
           __Pyx_INCREF(((PyObject *)__pyx_v_output));
-          PyTuple_SET_ITEM(__pyx_t_48, 8, ((PyObject *)__pyx_v_output));
+          PyTuple_SET_ITEM(__pyx_t_53, 8, ((PyObject *)__pyx_v_output));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_output));
           __Pyx_INCREF(((PyObject *)__pyx_v_genealogy));
-          PyTuple_SET_ITEM(__pyx_t_48, 9, ((PyObject *)__pyx_v_genealogy));
+          PyTuple_SET_ITEM(__pyx_t_53, 9, ((PyObject *)__pyx_v_genealogy));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_genealogy));
           __Pyx_INCREF(((PyObject *)__pyx_v_corners));
-          PyTuple_SET_ITEM(__pyx_t_48, 10, ((PyObject *)__pyx_v_corners));
+          PyTuple_SET_ITEM(__pyx_t_53, 10, ((PyObject *)__pyx_v_corners));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_corners));
           __Pyx_INCREF(((PyObject *)__pyx_v_grids));
-          PyTuple_SET_ITEM(__pyx_t_48, 11, ((PyObject *)__pyx_v_grids));
+          PyTuple_SET_ITEM(__pyx_t_53, 11, ((PyObject *)__pyx_v_grids));
           __Pyx_GIVEREF(((PyObject *)__pyx_v_grids));
+          __pyx_t_2 = 0;
+          __pyx_t_51 = 0;
           __pyx_t_11 = 0;
-          __pyx_t_9 = 0;
-          __pyx_t_10 = 0;
-          __pyx_t_47 = 0;
-          __pyx_t_47 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_t_48), NULL); if (unlikely(!__pyx_t_47)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __Pyx_GOTREF(__pyx_t_47);
-          __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-          __Pyx_DECREF(((PyObject *)__pyx_t_48)); __pyx_t_48 = 0;
+          __pyx_t_52 = 0;
+          __pyx_t_52 = PyObject_Call(__pyx_t_12, __pyx_t_53, NULL); if (unlikely(!__pyx_t_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __Pyx_GOTREF(__pyx_t_52);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          __Pyx_DECREF(__pyx_t_53); __pyx_t_53 = 0;
           __Pyx_DECREF(__pyx_v_s);
-          __pyx_v_s = __pyx_t_47;
-          __pyx_t_47 = 0;
+          __pyx_v_s = __pyx_t_52;
+          __pyx_t_52 = 0;
           goto __pyx_L15;
         }
         __pyx_L15:;
@@ -3598,9 +3592,9 @@
  *     return s
  * 
  */
-        __pyx_t_49 = __pyx_v_level;
-        if (__pyx_t_49 < 0) __pyx_t_49 += __pyx_bshape_0_curpos;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_49, __pyx_bstride_0_curpos) += 1;
+        __pyx_t_54 = __pyx_v_level;
+        if (__pyx_t_54 < 0) __pyx_t_54 += __pyx_bshape_0_curpos;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_curpos.buf, __pyx_t_54, __pyx_bstride_0_curpos) += 1;
       }
     }
   }
@@ -3619,12 +3613,12 @@
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_XDECREF(__pyx_t_47);
-  __Pyx_XDECREF(__pyx_t_48);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_51);
+  __Pyx_XDECREF(__pyx_t_52);
+  __Pyx_XDECREF(__pyx_t_53);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_leftedges);
@@ -3659,8 +3653,13 @@
   __Pyx_XDECREF((PyObject *)__pyx_v_leftedges);
   __Pyx_DECREF((PyObject *)__pyx_v_child_leftedges);
   __Pyx_DECREF(__pyx_v_s);
+  __Pyx_DECREF((PyObject *)__pyx_v_curpos);
+  __Pyx_DECREF((PyObject *)__pyx_v_output);
+  __Pyx_DECREF((PyObject *)__pyx_v_genealogy);
+  __Pyx_DECREF((PyObject *)__pyx_v_corners);
+  __Pyx_DECREF((PyObject *)__pyx_v_grids);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -3701,21 +3700,23 @@
   Py_ssize_t __pyx_bstride_0_x_bins = 0;
   Py_ssize_t __pyx_bshape_0_x_bins = 0;
   PyObject *__pyx_r = NULL;
-  int __pyx_t_1;
+  npy_intp __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
-  long __pyx_t_4;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  int __pyx_t_7;
+  int __pyx_t_4;
+  long __pyx_t_5;
+  int __pyx_t_6;
+  __pyx_t_5numpy_float64_t __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
-  double __pyx_t_9;
-  long __pyx_t_10;
-  int __pyx_t_11;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  double __pyx_t_11;
   long __pyx_t_12;
   int __pyx_t_13;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_table,&__pyx_kp_x_vals,&__pyx_kp_x_bins,&__pyx_kp_x_is,&__pyx_kp_output,0};
-  __Pyx_SetupRefcountContext("UnilinearlyInterpolate");
+  long __pyx_t_14;
+  int __pyx_t_15;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__table,&__pyx_n_s__x_vals,&__pyx_n_s__x_bins,&__pyx_n_s__x_is,&__pyx_n_s__output,0};
+  __Pyx_RefNannySetupContext("UnilinearlyInterpolate");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -3731,36 +3732,36 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_table);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__table);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_vals);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_vals);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, 1); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_bins);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_bins);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, 2); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_is);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_is);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, 3); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, 3); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_output);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__output);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, 4); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, 4); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "UnilinearlyInterpolate") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "UnilinearlyInterpolate") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_table = ((PyArrayObject *)values[0]);
     __pyx_v_x_vals = ((PyArrayObject *)values[1]);
@@ -3778,49 +3779,54 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("UnilinearlyInterpolate", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.UnilinearlyInterpolate");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_table);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_vals);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_bins);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_is);
+  __Pyx_INCREF((PyObject *)__pyx_v_output);
   __pyx_v_dx_inv = Py_None; __Pyx_INCREF(Py_None);
   __pyx_bstruct_table.buf = NULL;
   __pyx_bstruct_x_vals.buf = NULL;
   __pyx_bstruct_x_bins.buf = NULL;
   __pyx_bstruct_x_is.buf = NULL;
   __pyx_bstruct_output.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table), __pyx_ptype_5numpy_ndarray, 1, "table", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_vals), __pyx_ptype_5numpy_ndarray, 1, "x_vals", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_bins), __pyx_ptype_5numpy_ndarray, 1, "x_bins", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_is), __pyx_ptype_5numpy_ndarray, 1, "x_is", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table), __pyx_ptype_5numpy_ndarray, 1, "table", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_vals), __pyx_ptype_5numpy_ndarray, 1, "x_vals", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_bins), __pyx_ptype_5numpy_ndarray, 1, "x_bins", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_is), __pyx_ptype_5numpy_ndarray, 1, "x_is", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_table, (PyObject*)__pyx_v_table, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_table, (PyObject*)__pyx_v_table, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_table = __pyx_bstruct_table.strides[0];
   __pyx_bshape_0_table = __pyx_bstruct_table.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_vals, (PyObject*)__pyx_v_x_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_vals, (PyObject*)__pyx_v_x_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_vals = __pyx_bstruct_x_vals.strides[0];
   __pyx_bshape_0_x_vals = __pyx_bstruct_x_vals.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_bins, (PyObject*)__pyx_v_x_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_bins, (PyObject*)__pyx_v_x_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_bins = __pyx_bstruct_x_bins.strides[0];
   __pyx_bshape_0_x_bins = __pyx_bstruct_x_bins.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_is, (PyObject*)__pyx_v_x_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_is, (PyObject*)__pyx_v_x_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_is = __pyx_bstruct_x_is.strides[0];
   __pyx_bshape_0_x_is = __pyx_bstruct_x_is.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_output = __pyx_bstruct_output.strides[0];
   __pyx_bshape_0_output = __pyx_bstruct_output.shape[0];
@@ -3832,8 +3838,9 @@
  *         x_i = x_is[i]
  *         x = x_vals[i]
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < (__pyx_v_x_vals->dimensions[0]); __pyx_t_1+=1) {
-    __pyx_v_i = __pyx_t_1;
+  __pyx_t_1 = (__pyx_v_x_vals->dimensions[0]);
+  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":39
  *     cdef int i, x_i, y_i
@@ -3842,9 +3849,9 @@
  *         x = x_vals[i]
  *         dx_inv = 1.0 / (x_bins[x_i+1] - x_bins[x_i])
  */
-    __pyx_t_2 = __pyx_v_i;
-    if (__pyx_t_2 < 0) __pyx_t_2 += __pyx_bshape_0_x_is;
-    __pyx_v_x_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_x_is.buf, __pyx_t_2, __pyx_bstride_0_x_is));
+    __pyx_t_3 = __pyx_v_i;
+    if (__pyx_t_3 < 0) __pyx_t_3 += __pyx_bshape_0_x_is;
+    __pyx_v_x_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_x_is.buf, __pyx_t_3, __pyx_bstride_0_x_is));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":40
  *     for i in range(x_vals.shape[0]):
@@ -3853,9 +3860,9 @@
  *         dx_inv = 1.0 / (x_bins[x_i+1] - x_bins[x_i])
  *         xp = (x - x_bins[x_i]) * dx_inv
  */
-    __pyx_t_3 = __pyx_v_i;
-    if (__pyx_t_3 < 0) __pyx_t_3 += __pyx_bshape_0_x_vals;
-    __pyx_v_x = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_vals.buf, __pyx_t_3, __pyx_bstride_0_x_vals));
+    __pyx_t_4 = __pyx_v_i;
+    if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_bshape_0_x_vals;
+    __pyx_v_x = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_vals.buf, __pyx_t_4, __pyx_bstride_0_x_vals));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":41
  *         x_i = x_is[i]
@@ -3864,15 +3871,20 @@
  *         xp = (x - x_bins[x_i]) * dx_inv
  *         xm = (x_bins[x_i+1] - x) * dx_inv
  */
-    __pyx_t_4 = (__pyx_v_x_i + 1);
-    if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_bshape_0_x_bins;
-    __pyx_t_5 = __pyx_v_x_i;
+    __pyx_t_5 = (__pyx_v_x_i + 1);
     if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_bshape_0_x_bins;
-    __pyx_t_6 = PyFloat_FromDouble((1.0 / ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_4, __pyx_bstride_0_x_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_5, __pyx_bstride_0_x_bins))))); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_6 = __pyx_v_x_i;
+    if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_bshape_0_x_bins;
+    __pyx_t_7 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_5, __pyx_bstride_0_x_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_6, __pyx_bstride_0_x_bins)));
+    if (unlikely(__pyx_t_7 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_t_8 = PyFloat_FromDouble((1.0 / __pyx_t_7)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_v_dx_inv);
-    __pyx_v_dx_inv = __pyx_t_6;
-    __pyx_t_6 = 0;
+    __pyx_v_dx_inv = __pyx_t_8;
+    __pyx_t_8 = 0;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":42
  *         x = x_vals[i]
@@ -3881,16 +3893,16 @@
  *         xm = (x_bins[x_i+1] - x) * dx_inv
  *         output[i]  = table[x_i  ] * (xm) \
  */
-    __pyx_t_7 = __pyx_v_x_i;
-    if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_bshape_0_x_bins;
-    __pyx_t_6 = PyFloat_FromDouble((__pyx_v_x - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_7, __pyx_bstride_0_x_bins)))); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_v_dx_inv); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __pyx_v_x_i;
+    if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_bshape_0_x_bins;
+    __pyx_t_8 = PyFloat_FromDouble((__pyx_v_x - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_9, __pyx_bstride_0_x_bins)))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyNumber_Multiply(__pyx_t_8, __pyx_v_dx_inv); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_v_xp = __pyx_t_9;
+    __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_10); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __pyx_v_xp = __pyx_t_11;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":43
  *         dx_inv = 1.0 / (x_bins[x_i+1] - x_bins[x_i])
@@ -3899,16 +3911,16 @@
  *         output[i]  = table[x_i  ] * (xm) \
  *                    + table[x_i+1] * (xp)
  */
-    __pyx_t_10 = (__pyx_v_x_i + 1);
-    if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_bshape_0_x_bins;
-    __pyx_t_8 = PyFloat_FromDouble(((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_10, __pyx_bstride_0_x_bins)) - __pyx_v_x)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = (__pyx_v_x_i + 1);
+    if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_0_x_bins;
+    __pyx_t_10 = PyFloat_FromDouble(((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_12, __pyx_bstride_0_x_bins)) - __pyx_v_x)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_10);
+    __pyx_t_8 = PyNumber_Multiply(__pyx_t_10, __pyx_v_dx_inv); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_v_dx_inv); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_v_xm = __pyx_t_9;
+    __pyx_v_xm = __pyx_t_11;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":44
  *         xp = (x - x_bins[x_i]) * dx_inv
@@ -3917,8 +3929,8 @@
  *                    + table[x_i+1] * (xp)
  * 
  */
-    __pyx_t_11 = __pyx_v_x_i;
-    if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_0_table;
+    __pyx_t_13 = __pyx_v_x_i;
+    if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_0_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":45
  *         xm = (x_bins[x_i+1] - x) * dx_inv
@@ -3927,8 +3939,8 @@
  * 
  * @cython.boundscheck(False)
  */
-    __pyx_t_12 = (__pyx_v_x_i + 1);
-    if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_0_table;
+    __pyx_t_14 = (__pyx_v_x_i + 1);
+    if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_bshape_0_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":44
  *         xp = (x - x_bins[x_i]) * dx_inv
@@ -3937,16 +3949,16 @@
  *                    + table[x_i+1] * (xp)
  * 
  */
-    __pyx_t_13 = __pyx_v_i;
-    if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_0_output;
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_13, __pyx_bstride_0_output) = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_11, __pyx_bstride_0_table)) * __pyx_v_xm) + ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_12, __pyx_bstride_0_table)) * __pyx_v_xp));
+    __pyx_t_15 = __pyx_v_i;
+    if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_output;
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_15, __pyx_bstride_0_output) = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_13, __pyx_bstride_0_table)) * __pyx_v_xm) + ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_14, __pyx_bstride_0_table)) * __pyx_v_xp));
   }
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_6);
   __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_10);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_x_is);
@@ -3966,8 +3978,13 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_x_bins);
   __pyx_L2:;
   __Pyx_DECREF(__pyx_v_dx_inv);
+  __Pyx_DECREF((PyObject *)__pyx_v_table);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_vals);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_bins);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_is);
+  __Pyx_DECREF((PyObject *)__pyx_v_output);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -4027,30 +4044,32 @@
   Py_ssize_t __pyx_bstride_0_x_bins = 0;
   Py_ssize_t __pyx_bshape_0_x_bins = 0;
   PyObject *__pyx_r = NULL;
-  int __pyx_t_1;
+  npy_intp __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
   int __pyx_t_5;
-  long __pyx_t_6;
-  int __pyx_t_7;
-  long __pyx_t_8;
-  int __pyx_t_9;
-  int __pyx_t_10;
+  int __pyx_t_6;
+  long __pyx_t_7;
+  int __pyx_t_8;
+  __pyx_t_5numpy_float64_t __pyx_t_9;
+  long __pyx_t_10;
   int __pyx_t_11;
-  long __pyx_t_12;
-  long __pyx_t_13;
-  int __pyx_t_14;
-  int __pyx_t_15;
-  long __pyx_t_16;
+  int __pyx_t_12;
+  int __pyx_t_13;
+  long __pyx_t_14;
+  long __pyx_t_15;
+  int __pyx_t_16;
   int __pyx_t_17;
-  int __pyx_t_18;
-  long __pyx_t_19;
-  long __pyx_t_20;
+  long __pyx_t_18;
+  int __pyx_t_19;
+  int __pyx_t_20;
   long __pyx_t_21;
-  int __pyx_t_22;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_table,&__pyx_kp_x_vals,&__pyx_kp_y_vals,&__pyx_kp_x_bins,&__pyx_kp_y_bins,&__pyx_kp_x_is,&__pyx_kp_y_is,&__pyx_kp_output,0};
-  __Pyx_SetupRefcountContext("BilinearlyInterpolate");
+  long __pyx_t_22;
+  long __pyx_t_23;
+  int __pyx_t_24;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__table,&__pyx_n_s__x_vals,&__pyx_n_s__y_vals,&__pyx_n_s__x_bins,&__pyx_n_s__y_bins,&__pyx_n_s__x_is,&__pyx_n_s__y_is,&__pyx_n_s__output,0};
+  __Pyx_RefNannySetupContext("BilinearlyInterpolate");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -4069,54 +4088,54 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_table);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__table);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_vals);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_vals);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 1); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_y_vals);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y_vals);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 2); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_bins);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_bins);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 3); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 3); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_y_bins);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y_bins);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 4); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 4); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_is);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_is);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 5); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 5); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_y_is);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y_is);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 6); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 6); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
-      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_kp_output);
+      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__output);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 7); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, 7); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "BilinearlyInterpolate") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "BilinearlyInterpolate") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_table = ((PyArrayObject *)values[0]);
     __pyx_v_x_vals = ((PyArrayObject *)values[1]);
@@ -4140,11 +4159,19 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("BilinearlyInterpolate", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.BilinearlyInterpolate");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_table);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_vals);
+  __Pyx_INCREF((PyObject *)__pyx_v_y_vals);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_bins);
+  __Pyx_INCREF((PyObject *)__pyx_v_y_bins);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_is);
+  __Pyx_INCREF((PyObject *)__pyx_v_y_is);
+  __Pyx_INCREF((PyObject *)__pyx_v_output);
   __pyx_bstruct_table.buf = NULL;
   __pyx_bstruct_x_vals.buf = NULL;
   __pyx_bstruct_y_vals.buf = NULL;
@@ -4153,59 +4180,59 @@
   __pyx_bstruct_x_is.buf = NULL;
   __pyx_bstruct_y_is.buf = NULL;
   __pyx_bstruct_output.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table), __pyx_ptype_5numpy_ndarray, 1, "table", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_vals), __pyx_ptype_5numpy_ndarray, 1, "x_vals", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_vals), __pyx_ptype_5numpy_ndarray, 1, "y_vals", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_bins), __pyx_ptype_5numpy_ndarray, 1, "x_bins", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_bins), __pyx_ptype_5numpy_ndarray, 1, "y_bins", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_is), __pyx_ptype_5numpy_ndarray, 1, "x_is", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_is), __pyx_ptype_5numpy_ndarray, 1, "y_is", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table), __pyx_ptype_5numpy_ndarray, 1, "table", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_vals), __pyx_ptype_5numpy_ndarray, 1, "x_vals", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_vals), __pyx_ptype_5numpy_ndarray, 1, "y_vals", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_bins), __pyx_ptype_5numpy_ndarray, 1, "x_bins", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_bins), __pyx_ptype_5numpy_ndarray, 1, "y_bins", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_is), __pyx_ptype_5numpy_ndarray, 1, "x_is", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_is), __pyx_ptype_5numpy_ndarray, 1, "y_is", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_table, (PyObject*)__pyx_v_table, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_table, (PyObject*)__pyx_v_table, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_table = __pyx_bstruct_table.strides[0]; __pyx_bstride_1_table = __pyx_bstruct_table.strides[1];
   __pyx_bshape_0_table = __pyx_bstruct_table.shape[0]; __pyx_bshape_1_table = __pyx_bstruct_table.shape[1];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_vals, (PyObject*)__pyx_v_x_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_vals, (PyObject*)__pyx_v_x_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_vals = __pyx_bstruct_x_vals.strides[0];
   __pyx_bshape_0_x_vals = __pyx_bstruct_x_vals.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_vals, (PyObject*)__pyx_v_y_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_vals, (PyObject*)__pyx_v_y_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_y_vals = __pyx_bstruct_y_vals.strides[0];
   __pyx_bshape_0_y_vals = __pyx_bstruct_y_vals.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_bins, (PyObject*)__pyx_v_x_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_bins, (PyObject*)__pyx_v_x_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_bins = __pyx_bstruct_x_bins.strides[0];
   __pyx_bshape_0_x_bins = __pyx_bstruct_x_bins.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_bins, (PyObject*)__pyx_v_y_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_bins, (PyObject*)__pyx_v_y_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_y_bins = __pyx_bstruct_y_bins.strides[0];
   __pyx_bshape_0_y_bins = __pyx_bstruct_y_bins.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_is, (PyObject*)__pyx_v_x_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_is, (PyObject*)__pyx_v_x_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_is = __pyx_bstruct_x_is.strides[0];
   __pyx_bshape_0_x_is = __pyx_bstruct_x_is.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_is, (PyObject*)__pyx_v_y_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_is, (PyObject*)__pyx_v_y_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_y_is = __pyx_bstruct_y_is.strides[0];
   __pyx_bshape_0_y_is = __pyx_bstruct_y_is.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_output = __pyx_bstruct_output.strides[0];
   __pyx_bshape_0_output = __pyx_bstruct_output.shape[0];
@@ -4217,8 +4244,9 @@
  *         x_i = x_is[i]
  *         y_i = y_is[i]
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < (__pyx_v_x_vals->dimensions[0]); __pyx_t_1+=1) {
-    __pyx_v_i = __pyx_t_1;
+  __pyx_t_1 = (__pyx_v_x_vals->dimensions[0]);
+  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":61
  *     cdef int i, x_i, y_i
@@ -4227,9 +4255,9 @@
  *         y_i = y_is[i]
  *         x = x_vals[i]
  */
-    __pyx_t_2 = __pyx_v_i;
-    if (__pyx_t_2 < 0) __pyx_t_2 += __pyx_bshape_0_x_is;
-    __pyx_v_x_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_x_is.buf, __pyx_t_2, __pyx_bstride_0_x_is));
+    __pyx_t_3 = __pyx_v_i;
+    if (__pyx_t_3 < 0) __pyx_t_3 += __pyx_bshape_0_x_is;
+    __pyx_v_x_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_x_is.buf, __pyx_t_3, __pyx_bstride_0_x_is));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":62
  *     for i in range(x_vals.shape[0]):
@@ -4238,9 +4266,9 @@
  *         x = x_vals[i]
  *         y = y_vals[i]
  */
-    __pyx_t_3 = __pyx_v_i;
-    if (__pyx_t_3 < 0) __pyx_t_3 += __pyx_bshape_0_y_is;
-    __pyx_v_y_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_y_is.buf, __pyx_t_3, __pyx_bstride_0_y_is));
+    __pyx_t_4 = __pyx_v_i;
+    if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_bshape_0_y_is;
+    __pyx_v_y_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_y_is.buf, __pyx_t_4, __pyx_bstride_0_y_is));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":63
  *         x_i = x_is[i]
@@ -4249,9 +4277,9 @@
  *         y = y_vals[i]
  *         dx_inv = 1.0 / (x_bins[x_i+1] - x_bins[x_i])
  */
-    __pyx_t_4 = __pyx_v_i;
-    if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_bshape_0_x_vals;
-    __pyx_v_x = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_vals.buf, __pyx_t_4, __pyx_bstride_0_x_vals));
+    __pyx_t_5 = __pyx_v_i;
+    if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_bshape_0_x_vals;
+    __pyx_v_x = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_vals.buf, __pyx_t_5, __pyx_bstride_0_x_vals));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":64
  *         y_i = y_is[i]
@@ -4260,9 +4288,9 @@
  *         dx_inv = 1.0 / (x_bins[x_i+1] - x_bins[x_i])
  *         dy_inv = 1.0 / (y_bins[y_i+1] - y_bins[y_i])
  */
-    __pyx_t_5 = __pyx_v_i;
-    if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_bshape_0_y_vals;
-    __pyx_v_y = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_vals.buf, __pyx_t_5, __pyx_bstride_0_y_vals));
+    __pyx_t_6 = __pyx_v_i;
+    if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_bshape_0_y_vals;
+    __pyx_v_y = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_vals.buf, __pyx_t_6, __pyx_bstride_0_y_vals));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":65
  *         x = x_vals[i]
@@ -4271,11 +4299,16 @@
  *         dy_inv = 1.0 / (y_bins[y_i+1] - y_bins[y_i])
  *         xp = (x - x_bins[x_i]) * dx_inv
  */
-    __pyx_t_6 = (__pyx_v_x_i + 1);
-    if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_bshape_0_x_bins;
-    __pyx_t_7 = __pyx_v_x_i;
+    __pyx_t_7 = (__pyx_v_x_i + 1);
     if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_bshape_0_x_bins;
-    __pyx_v_dx_inv = (1.0 / ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_6, __pyx_bstride_0_x_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_7, __pyx_bstride_0_x_bins))));
+    __pyx_t_8 = __pyx_v_x_i;
+    if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_bshape_0_x_bins;
+    __pyx_t_9 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_7, __pyx_bstride_0_x_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_8, __pyx_bstride_0_x_bins)));
+    if (unlikely(__pyx_t_9 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_dx_inv = (1.0 / __pyx_t_9);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":66
  *         y = y_vals[i]
@@ -4284,11 +4317,16 @@
  *         xp = (x - x_bins[x_i]) * dx_inv
  *         yp = (y - y_bins[y_i]) * dy_inv
  */
-    __pyx_t_8 = (__pyx_v_y_i + 1);
-    if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_bshape_0_y_bins;
-    __pyx_t_9 = __pyx_v_y_i;
-    if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_bshape_0_y_bins;
-    __pyx_v_dy_inv = (1.0 / ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_8, __pyx_bstride_0_y_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_9, __pyx_bstride_0_y_bins))));
+    __pyx_t_10 = (__pyx_v_y_i + 1);
+    if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_bshape_0_y_bins;
+    __pyx_t_11 = __pyx_v_y_i;
+    if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_0_y_bins;
+    __pyx_t_9 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_10, __pyx_bstride_0_y_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_11, __pyx_bstride_0_y_bins)));
+    if (unlikely(__pyx_t_9 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_dy_inv = (1.0 / __pyx_t_9);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":67
  *         dx_inv = 1.0 / (x_bins[x_i+1] - x_bins[x_i])
@@ -4297,9 +4335,9 @@
  *         yp = (y - y_bins[y_i]) * dy_inv
  *         xm = (x_bins[x_i+1] - x) * dx_inv
  */
-    __pyx_t_10 = __pyx_v_x_i;
-    if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_bshape_0_x_bins;
-    __pyx_v_xp = ((__pyx_v_x - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_10, __pyx_bstride_0_x_bins))) * __pyx_v_dx_inv);
+    __pyx_t_12 = __pyx_v_x_i;
+    if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_0_x_bins;
+    __pyx_v_xp = ((__pyx_v_x - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_12, __pyx_bstride_0_x_bins))) * __pyx_v_dx_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":68
  *         dy_inv = 1.0 / (y_bins[y_i+1] - y_bins[y_i])
@@ -4308,9 +4346,9 @@
  *         xm = (x_bins[x_i+1] - x) * dx_inv
  *         ym = (y_bins[y_i+1] - y) * dy_inv
  */
-    __pyx_t_11 = __pyx_v_y_i;
-    if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_0_y_bins;
-    __pyx_v_yp = ((__pyx_v_y - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_11, __pyx_bstride_0_y_bins))) * __pyx_v_dy_inv);
+    __pyx_t_13 = __pyx_v_y_i;
+    if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_0_y_bins;
+    __pyx_v_yp = ((__pyx_v_y - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_13, __pyx_bstride_0_y_bins))) * __pyx_v_dy_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":69
  *         xp = (x - x_bins[x_i]) * dx_inv
@@ -4319,9 +4357,9 @@
  *         ym = (y_bins[y_i+1] - y) * dy_inv
  *         output[i]  = table[x_i  , y_i  ] * (xm*ym) \
  */
-    __pyx_t_12 = (__pyx_v_x_i + 1);
-    if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_0_x_bins;
-    __pyx_v_xm = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_12, __pyx_bstride_0_x_bins)) - __pyx_v_x) * __pyx_v_dx_inv);
+    __pyx_t_14 = (__pyx_v_x_i + 1);
+    if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_bshape_0_x_bins;
+    __pyx_v_xm = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_14, __pyx_bstride_0_x_bins)) - __pyx_v_x) * __pyx_v_dx_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":70
  *         yp = (y - y_bins[y_i]) * dy_inv
@@ -4330,9 +4368,9 @@
  *         output[i]  = table[x_i  , y_i  ] * (xm*ym) \
  *                    + table[x_i+1, y_i  ] * (xp*ym) \
  */
-    __pyx_t_13 = (__pyx_v_y_i + 1);
-    if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_0_y_bins;
-    __pyx_v_ym = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_13, __pyx_bstride_0_y_bins)) - __pyx_v_y) * __pyx_v_dy_inv);
+    __pyx_t_15 = (__pyx_v_y_i + 1);
+    if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_y_bins;
+    __pyx_v_ym = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_15, __pyx_bstride_0_y_bins)) - __pyx_v_y) * __pyx_v_dy_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":71
  *         xm = (x_bins[x_i+1] - x) * dx_inv
@@ -4341,10 +4379,10 @@
  *                    + table[x_i+1, y_i  ] * (xp*ym) \
  *                    + table[x_i  , y_i+1] * (xm*yp) \
  */
-    __pyx_t_14 = __pyx_v_x_i;
-    __pyx_t_15 = __pyx_v_y_i;
-    if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_bshape_0_table;
-    if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_1_table;
+    __pyx_t_16 = __pyx_v_x_i;
+    __pyx_t_17 = __pyx_v_y_i;
+    if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_0_table;
+    if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_1_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":72
  *         ym = (y_bins[y_i+1] - y) * dy_inv
@@ -4353,10 +4391,10 @@
  *                    + table[x_i  , y_i+1] * (xm*yp) \
  *                    + table[x_i+1, y_i+1] * (xp*yp)
  */
-    __pyx_t_16 = (__pyx_v_x_i + 1);
-    __pyx_t_17 = __pyx_v_y_i;
-    if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_0_table;
-    if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_1_table;
+    __pyx_t_18 = (__pyx_v_x_i + 1);
+    __pyx_t_19 = __pyx_v_y_i;
+    if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_0_table;
+    if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_1_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":73
  *         output[i]  = table[x_i  , y_i  ] * (xm*ym) \
@@ -4365,10 +4403,10 @@
  *                    + table[x_i+1, y_i+1] * (xp*yp)
  * 
  */
-    __pyx_t_18 = __pyx_v_x_i;
-    __pyx_t_19 = (__pyx_v_y_i + 1);
-    if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_0_table;
-    if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_1_table;
+    __pyx_t_20 = __pyx_v_x_i;
+    __pyx_t_21 = (__pyx_v_y_i + 1);
+    if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_0_table;
+    if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_1_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":74
  *                    + table[x_i+1, y_i  ] * (xp*ym) \
@@ -4377,10 +4415,10 @@
  * 
  * @cython.boundscheck(False)
  */
-    __pyx_t_20 = (__pyx_v_x_i + 1);
-    __pyx_t_21 = (__pyx_v_y_i + 1);
-    if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_0_table;
-    if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_1_table;
+    __pyx_t_22 = (__pyx_v_x_i + 1);
+    __pyx_t_23 = (__pyx_v_y_i + 1);
+    if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_0_table;
+    if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_1_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":71
  *         xm = (x_bins[x_i+1] - x) * dx_inv
@@ -4389,9 +4427,9 @@
  *                    + table[x_i+1, y_i  ] * (xp*ym) \
  *                    + table[x_i  , y_i+1] * (xm*yp) \
  */
-    __pyx_t_22 = __pyx_v_i;
-    if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_0_output;
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_22, __pyx_bstride_0_output) = (((((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_14, __pyx_bstride_0_table, __pyx_t_15, __pyx_bstride_1_table)) * (__pyx_v_xm * __pyx_v_ym)) + ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_16, __pyx_bstride_0_table, __pyx_t_17, __pyx_bstride_1_table)) * (__pyx_v_xp * __pyx_v_ym))) + ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_18, __pyx_bstride_0_table, __pyx_t_19, __pyx_bstride_1_table)) * (__pyx_v_xm * __pyx_v_yp))) + ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_20, __pyx_bstride_0_table, __pyx_t_21, __pyx_bstride_1_table)) * (__pyx_v_xp * __pyx_v_yp)));
+    __pyx_t_24 = __pyx_v_i;
+    if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_0_output;
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_24, __pyx_bstride_0_output) = (((((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_16, __pyx_bstride_0_table, __pyx_t_17, __pyx_bstride_1_table)) * (__pyx_v_xm * __pyx_v_ym)) + ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_18, __pyx_bstride_0_table, __pyx_t_19, __pyx_bstride_1_table)) * (__pyx_v_xp * __pyx_v_ym))) + ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_20, __pyx_bstride_0_table, __pyx_t_21, __pyx_bstride_1_table)) * (__pyx_v_xm * __pyx_v_yp))) + ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_22, __pyx_bstride_0_table, __pyx_t_23, __pyx_bstride_1_table)) * (__pyx_v_xp * __pyx_v_yp)));
   }
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -4421,8 +4459,16 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_table);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_x_bins);
   __pyx_L2:;
+  __Pyx_DECREF((PyObject *)__pyx_v_table);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_vals);
+  __Pyx_DECREF((PyObject *)__pyx_v_y_vals);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_bins);
+  __Pyx_DECREF((PyObject *)__pyx_v_y_bins);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_is);
+  __Pyx_DECREF((PyObject *)__pyx_v_y_is);
+  __Pyx_DECREF((PyObject *)__pyx_v_output);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -4501,52 +4547,54 @@
   Py_ssize_t __pyx_bstride_0_z_vals = 0;
   Py_ssize_t __pyx_bshape_0_z_vals = 0;
   PyObject *__pyx_r = NULL;
-  int __pyx_t_1;
+  npy_intp __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
   int __pyx_t_5;
   int __pyx_t_6;
   int __pyx_t_7;
-  long __pyx_t_8;
-  int __pyx_t_9;
-  long __pyx_t_10;
-  int __pyx_t_11;
+  int __pyx_t_8;
+  long __pyx_t_9;
+  int __pyx_t_10;
+  __pyx_t_5numpy_float64_t __pyx_t_11;
   long __pyx_t_12;
   int __pyx_t_13;
-  int __pyx_t_14;
+  long __pyx_t_14;
   int __pyx_t_15;
   int __pyx_t_16;
-  long __pyx_t_17;
-  long __pyx_t_18;
+  int __pyx_t_17;
+  int __pyx_t_18;
   long __pyx_t_19;
-  int __pyx_t_20;
-  int __pyx_t_21;
+  long __pyx_t_20;
+  long __pyx_t_21;
   int __pyx_t_22;
-  long __pyx_t_23;
+  int __pyx_t_23;
   int __pyx_t_24;
-  int __pyx_t_25;
+  long __pyx_t_25;
   int __pyx_t_26;
-  long __pyx_t_27;
+  int __pyx_t_27;
   int __pyx_t_28;
-  int __pyx_t_29;
+  long __pyx_t_29;
   int __pyx_t_30;
-  long __pyx_t_31;
-  long __pyx_t_32;
-  int __pyx_t_33;
+  int __pyx_t_31;
+  int __pyx_t_32;
+  long __pyx_t_33;
   long __pyx_t_34;
   int __pyx_t_35;
   long __pyx_t_36;
-  long __pyx_t_37;
+  int __pyx_t_37;
   long __pyx_t_38;
   long __pyx_t_39;
-  int __pyx_t_40;
+  long __pyx_t_40;
   long __pyx_t_41;
-  long __pyx_t_42;
+  int __pyx_t_42;
   long __pyx_t_43;
-  int __pyx_t_44;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_table,&__pyx_kp_x_vals,&__pyx_kp_y_vals,&__pyx_kp_z_vals,&__pyx_kp_x_bins,&__pyx_kp_y_bins,&__pyx_kp_z_bins,&__pyx_kp_x_is,&__pyx_kp_y_is,&__pyx_kp_z_is,&__pyx_kp_output,0};
-  __Pyx_SetupRefcountContext("TrilinearlyInterpolate");
+  long __pyx_t_44;
+  long __pyx_t_45;
+  int __pyx_t_46;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__table,&__pyx_n_s__x_vals,&__pyx_n_s__y_vals,&__pyx_n_s__z_vals,&__pyx_n_s__x_bins,&__pyx_n_s__y_bins,&__pyx_n_s__z_bins,&__pyx_n_s__x_is,&__pyx_n_s__y_is,&__pyx_n_s__z_is,&__pyx_n_s__output,0};
+  __Pyx_RefNannySetupContext("TrilinearlyInterpolate");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -4568,72 +4616,72 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_table);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__table);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_vals);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_vals);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 1); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_y_vals);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y_vals);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 2); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_z_vals);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__z_vals);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 3); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 3); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_bins);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_bins);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 4); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 4); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_y_bins);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y_bins);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 5); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 5); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_z_bins);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__z_bins);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 6); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 6); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
-      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_is);
+      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_is);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 7); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 7); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  8:
-      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_kp_y_is);
+      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y_is);
       if (likely(values[8])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 8); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 8); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  9:
-      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_kp_z_is);
+      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__z_is);
       if (likely(values[9])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 9); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 9); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case 10:
-      values[10] = PyDict_GetItem(__pyx_kwds, __pyx_kp_output);
+      values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__output);
       if (likely(values[10])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 10); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, 10); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "TrilinearlyInterpolate") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "TrilinearlyInterpolate") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_table = ((PyArrayObject *)values[0]);
     __pyx_v_x_vals = ((PyArrayObject *)values[1]);
@@ -4663,11 +4711,22 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("TrilinearlyInterpolate", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.TrilinearlyInterpolate");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_table);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_vals);
+  __Pyx_INCREF((PyObject *)__pyx_v_y_vals);
+  __Pyx_INCREF((PyObject *)__pyx_v_z_vals);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_bins);
+  __Pyx_INCREF((PyObject *)__pyx_v_y_bins);
+  __Pyx_INCREF((PyObject *)__pyx_v_z_bins);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_is);
+  __Pyx_INCREF((PyObject *)__pyx_v_y_is);
+  __Pyx_INCREF((PyObject *)__pyx_v_z_is);
+  __Pyx_INCREF((PyObject *)__pyx_v_output);
   __pyx_bstruct_table.buf = NULL;
   __pyx_bstruct_x_vals.buf = NULL;
   __pyx_bstruct_y_vals.buf = NULL;
@@ -4679,80 +4738,80 @@
   __pyx_bstruct_y_is.buf = NULL;
   __pyx_bstruct_z_is.buf = NULL;
   __pyx_bstruct_output.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table), __pyx_ptype_5numpy_ndarray, 1, "table", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_vals), __pyx_ptype_5numpy_ndarray, 1, "x_vals", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_vals), __pyx_ptype_5numpy_ndarray, 1, "y_vals", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_z_vals), __pyx_ptype_5numpy_ndarray, 1, "z_vals", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_bins), __pyx_ptype_5numpy_ndarray, 1, "x_bins", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_bins), __pyx_ptype_5numpy_ndarray, 1, "y_bins", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_z_bins), __pyx_ptype_5numpy_ndarray, 1, "z_bins", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_is), __pyx_ptype_5numpy_ndarray, 1, "x_is", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_is), __pyx_ptype_5numpy_ndarray, 1, "y_is", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_z_is), __pyx_ptype_5numpy_ndarray, 1, "z_is", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table), __pyx_ptype_5numpy_ndarray, 1, "table", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_vals), __pyx_ptype_5numpy_ndarray, 1, "x_vals", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_vals), __pyx_ptype_5numpy_ndarray, 1, "y_vals", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_z_vals), __pyx_ptype_5numpy_ndarray, 1, "z_vals", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_bins), __pyx_ptype_5numpy_ndarray, 1, "x_bins", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_bins), __pyx_ptype_5numpy_ndarray, 1, "y_bins", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_z_bins), __pyx_ptype_5numpy_ndarray, 1, "z_bins", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_is), __pyx_ptype_5numpy_ndarray, 1, "x_is", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_is), __pyx_ptype_5numpy_ndarray, 1, "y_is", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_z_is), __pyx_ptype_5numpy_ndarray, 1, "z_is", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), __pyx_ptype_5numpy_ndarray, 1, "output", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_table, (PyObject*)__pyx_v_table, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_table, (PyObject*)__pyx_v_table, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_table = __pyx_bstruct_table.strides[0]; __pyx_bstride_1_table = __pyx_bstruct_table.strides[1]; __pyx_bstride_2_table = __pyx_bstruct_table.strides[2];
   __pyx_bshape_0_table = __pyx_bstruct_table.shape[0]; __pyx_bshape_1_table = __pyx_bstruct_table.shape[1]; __pyx_bshape_2_table = __pyx_bstruct_table.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_vals, (PyObject*)__pyx_v_x_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_vals, (PyObject*)__pyx_v_x_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_vals = __pyx_bstruct_x_vals.strides[0];
   __pyx_bshape_0_x_vals = __pyx_bstruct_x_vals.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_vals, (PyObject*)__pyx_v_y_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_vals, (PyObject*)__pyx_v_y_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_y_vals = __pyx_bstruct_y_vals.strides[0];
   __pyx_bshape_0_y_vals = __pyx_bstruct_y_vals.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_z_vals, (PyObject*)__pyx_v_z_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_z_vals, (PyObject*)__pyx_v_z_vals, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_z_vals = __pyx_bstruct_z_vals.strides[0];
   __pyx_bshape_0_z_vals = __pyx_bstruct_z_vals.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_bins, (PyObject*)__pyx_v_x_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_bins, (PyObject*)__pyx_v_x_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_bins = __pyx_bstruct_x_bins.strides[0];
   __pyx_bshape_0_x_bins = __pyx_bstruct_x_bins.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_bins, (PyObject*)__pyx_v_y_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_bins, (PyObject*)__pyx_v_y_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_y_bins = __pyx_bstruct_y_bins.strides[0];
   __pyx_bshape_0_y_bins = __pyx_bstruct_y_bins.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_z_bins, (PyObject*)__pyx_v_z_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_z_bins, (PyObject*)__pyx_v_z_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_z_bins = __pyx_bstruct_z_bins.strides[0];
   __pyx_bshape_0_z_bins = __pyx_bstruct_z_bins.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_is, (PyObject*)__pyx_v_x_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_is, (PyObject*)__pyx_v_x_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_is = __pyx_bstruct_x_is.strides[0];
   __pyx_bshape_0_x_is = __pyx_bstruct_x_is.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_is, (PyObject*)__pyx_v_y_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_is, (PyObject*)__pyx_v_y_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_y_is = __pyx_bstruct_y_is.strides[0];
   __pyx_bshape_0_y_is = __pyx_bstruct_y_is.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_z_is, (PyObject*)__pyx_v_z_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_z_is, (PyObject*)__pyx_v_z_is, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_z_is = __pyx_bstruct_z_is.strides[0];
   __pyx_bshape_0_z_is = __pyx_bstruct_z_is.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_output, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_output = __pyx_bstruct_output.strides[0];
   __pyx_bshape_0_output = __pyx_bstruct_output.shape[0];
@@ -4764,8 +4823,9 @@
  *         x_i = x_is[i]
  *         y_i = y_is[i]
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < (__pyx_v_x_vals->dimensions[0]); __pyx_t_1+=1) {
-    __pyx_v_i = __pyx_t_1;
+  __pyx_t_1 = (__pyx_v_x_vals->dimensions[0]);
+  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":94
  *     cdef int i, x_i, y_i, z_i
@@ -4774,9 +4834,9 @@
  *         y_i = y_is[i]
  *         z_i = z_is[i]
  */
-    __pyx_t_2 = __pyx_v_i;
-    if (__pyx_t_2 < 0) __pyx_t_2 += __pyx_bshape_0_x_is;
-    __pyx_v_x_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_bstruct_x_is.buf, __pyx_t_2, __pyx_bstride_0_x_is));
+    __pyx_t_3 = __pyx_v_i;
+    if (__pyx_t_3 < 0) __pyx_t_3 += __pyx_bshape_0_x_is;
+    __pyx_v_x_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_bstruct_x_is.buf, __pyx_t_3, __pyx_bstride_0_x_is));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":95
  *     for i in range(x_vals.shape[0]):
@@ -4785,9 +4845,9 @@
  *         z_i = z_is[i]
  *         x = x_vals[i]
  */
-    __pyx_t_3 = __pyx_v_i;
-    if (__pyx_t_3 < 0) __pyx_t_3 += __pyx_bshape_0_y_is;
-    __pyx_v_y_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_bstruct_y_is.buf, __pyx_t_3, __pyx_bstride_0_y_is));
+    __pyx_t_4 = __pyx_v_i;
+    if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_bshape_0_y_is;
+    __pyx_v_y_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_bstruct_y_is.buf, __pyx_t_4, __pyx_bstride_0_y_is));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":96
  *         x_i = x_is[i]
@@ -4796,9 +4856,9 @@
  *         x = x_vals[i]
  *         y = y_vals[i]
  */
-    __pyx_t_4 = __pyx_v_i;
-    if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_bshape_0_z_is;
-    __pyx_v_z_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_bstruct_z_is.buf, __pyx_t_4, __pyx_bstride_0_z_is));
+    __pyx_t_5 = __pyx_v_i;
+    if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_bshape_0_z_is;
+    __pyx_v_z_i = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_bstruct_z_is.buf, __pyx_t_5, __pyx_bstride_0_z_is));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":97
  *         y_i = y_is[i]
@@ -4807,9 +4867,9 @@
  *         y = y_vals[i]
  *         z = z_vals[i]
  */
-    __pyx_t_5 = __pyx_v_i;
-    if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_bshape_0_x_vals;
-    __pyx_v_x = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_vals.buf, __pyx_t_5, __pyx_bstride_0_x_vals));
+    __pyx_t_6 = __pyx_v_i;
+    if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_bshape_0_x_vals;
+    __pyx_v_x = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_vals.buf, __pyx_t_6, __pyx_bstride_0_x_vals));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":98
  *         z_i = z_is[i]
@@ -4818,9 +4878,9 @@
  *         z = z_vals[i]
  *         dx_inv = 1.0 / (x_bins[x_i+1] - x_bins[x_i])
  */
-    __pyx_t_6 = __pyx_v_i;
-    if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_bshape_0_y_vals;
-    __pyx_v_y = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_vals.buf, __pyx_t_6, __pyx_bstride_0_y_vals));
+    __pyx_t_7 = __pyx_v_i;
+    if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_bshape_0_y_vals;
+    __pyx_v_y = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_vals.buf, __pyx_t_7, __pyx_bstride_0_y_vals));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":99
  *         x = x_vals[i]
@@ -4829,9 +4889,9 @@
  *         dx_inv = 1.0 / (x_bins[x_i+1] - x_bins[x_i])
  *         dy_inv = 1.0 / (y_bins[y_i+1] - y_bins[y_i])
  */
-    __pyx_t_7 = __pyx_v_i;
-    if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_bshape_0_z_vals;
-    __pyx_v_z = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_vals.buf, __pyx_t_7, __pyx_bstride_0_z_vals));
+    __pyx_t_8 = __pyx_v_i;
+    if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_bshape_0_z_vals;
+    __pyx_v_z = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_vals.buf, __pyx_t_8, __pyx_bstride_0_z_vals));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":100
  *         y = y_vals[i]
@@ -4840,11 +4900,16 @@
  *         dy_inv = 1.0 / (y_bins[y_i+1] - y_bins[y_i])
  *         dz_inv = 1.0 / (z_bins[z_i+1] - z_bins[z_i])
  */
-    __pyx_t_8 = (__pyx_v_x_i + 1);
-    if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_bshape_0_x_bins;
-    __pyx_t_9 = __pyx_v_x_i;
+    __pyx_t_9 = (__pyx_v_x_i + 1);
     if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_bshape_0_x_bins;
-    __pyx_v_dx_inv = (1.0 / ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_8, __pyx_bstride_0_x_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_9, __pyx_bstride_0_x_bins))));
+    __pyx_t_10 = __pyx_v_x_i;
+    if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_bshape_0_x_bins;
+    __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_9, __pyx_bstride_0_x_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_10, __pyx_bstride_0_x_bins)));
+    if (unlikely(__pyx_t_11 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_dx_inv = (1.0 / __pyx_t_11);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":101
  *         z = z_vals[i]
@@ -4853,11 +4918,16 @@
  *         dz_inv = 1.0 / (z_bins[z_i+1] - z_bins[z_i])
  *         xp = (x - x_bins[x_i]) * dx_inv
  */
-    __pyx_t_10 = (__pyx_v_y_i + 1);
-    if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_bshape_0_y_bins;
-    __pyx_t_11 = __pyx_v_y_i;
-    if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_0_y_bins;
-    __pyx_v_dy_inv = (1.0 / ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_10, __pyx_bstride_0_y_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_11, __pyx_bstride_0_y_bins))));
+    __pyx_t_12 = (__pyx_v_y_i + 1);
+    if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_0_y_bins;
+    __pyx_t_13 = __pyx_v_y_i;
+    if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_0_y_bins;
+    __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_12, __pyx_bstride_0_y_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_13, __pyx_bstride_0_y_bins)));
+    if (unlikely(__pyx_t_11 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_dy_inv = (1.0 / __pyx_t_11);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":102
  *         dx_inv = 1.0 / (x_bins[x_i+1] - x_bins[x_i])
@@ -4866,11 +4936,16 @@
  *         xp = (x - x_bins[x_i]) * dx_inv
  *         yp = (y - y_bins[y_i]) * dy_inv
  */
-    __pyx_t_12 = (__pyx_v_z_i + 1);
-    if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_0_z_bins;
-    __pyx_t_13 = __pyx_v_z_i;
-    if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_0_z_bins;
-    __pyx_v_dz_inv = (1.0 / ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_bins.buf, __pyx_t_12, __pyx_bstride_0_z_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_bins.buf, __pyx_t_13, __pyx_bstride_0_z_bins))));
+    __pyx_t_14 = (__pyx_v_z_i + 1);
+    if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_bshape_0_z_bins;
+    __pyx_t_15 = __pyx_v_z_i;
+    if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_z_bins;
+    __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_bins.buf, __pyx_t_14, __pyx_bstride_0_z_bins)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_bins.buf, __pyx_t_15, __pyx_bstride_0_z_bins)));
+    if (unlikely(__pyx_t_11 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_dz_inv = (1.0 / __pyx_t_11);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":103
  *         dy_inv = 1.0 / (y_bins[y_i+1] - y_bins[y_i])
@@ -4879,9 +4954,9 @@
  *         yp = (y - y_bins[y_i]) * dy_inv
  *         zp = (z - z_bins[z_i]) * dz_inv
  */
-    __pyx_t_14 = __pyx_v_x_i;
-    if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_bshape_0_x_bins;
-    __pyx_v_xp = ((__pyx_v_x - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_14, __pyx_bstride_0_x_bins))) * __pyx_v_dx_inv);
+    __pyx_t_16 = __pyx_v_x_i;
+    if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_0_x_bins;
+    __pyx_v_xp = ((__pyx_v_x - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_16, __pyx_bstride_0_x_bins))) * __pyx_v_dx_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":104
  *         dz_inv = 1.0 / (z_bins[z_i+1] - z_bins[z_i])
@@ -4890,9 +4965,9 @@
  *         zp = (z - z_bins[z_i]) * dz_inv
  *         xm = (x_bins[x_i+1] - x) * dx_inv
  */
-    __pyx_t_15 = __pyx_v_y_i;
-    if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_y_bins;
-    __pyx_v_yp = ((__pyx_v_y - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_15, __pyx_bstride_0_y_bins))) * __pyx_v_dy_inv);
+    __pyx_t_17 = __pyx_v_y_i;
+    if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_0_y_bins;
+    __pyx_v_yp = ((__pyx_v_y - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_17, __pyx_bstride_0_y_bins))) * __pyx_v_dy_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":105
  *         xp = (x - x_bins[x_i]) * dx_inv
@@ -4901,9 +4976,9 @@
  *         xm = (x_bins[x_i+1] - x) * dx_inv
  *         ym = (y_bins[y_i+1] - y) * dy_inv
  */
-    __pyx_t_16 = __pyx_v_z_i;
-    if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_0_z_bins;
-    __pyx_v_zp = ((__pyx_v_z - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_bins.buf, __pyx_t_16, __pyx_bstride_0_z_bins))) * __pyx_v_dz_inv);
+    __pyx_t_18 = __pyx_v_z_i;
+    if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_0_z_bins;
+    __pyx_v_zp = ((__pyx_v_z - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_bins.buf, __pyx_t_18, __pyx_bstride_0_z_bins))) * __pyx_v_dz_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":106
  *         yp = (y - y_bins[y_i]) * dy_inv
@@ -4912,9 +4987,9 @@
  *         ym = (y_bins[y_i+1] - y) * dy_inv
  *         zm = (z_bins[z_i+1] - z) * dz_inv
  */
-    __pyx_t_17 = (__pyx_v_x_i + 1);
-    if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_0_x_bins;
-    __pyx_v_xm = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_17, __pyx_bstride_0_x_bins)) - __pyx_v_x) * __pyx_v_dx_inv);
+    __pyx_t_19 = (__pyx_v_x_i + 1);
+    if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_0_x_bins;
+    __pyx_v_xm = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_x_bins.buf, __pyx_t_19, __pyx_bstride_0_x_bins)) - __pyx_v_x) * __pyx_v_dx_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":107
  *         zp = (z - z_bins[z_i]) * dz_inv
@@ -4923,9 +4998,9 @@
  *         zm = (z_bins[z_i+1] - z) * dz_inv
  *         output[i]  = table[x_i  ,y_i  ,z_i  ] * (xm*ym*zm) \
  */
-    __pyx_t_18 = (__pyx_v_y_i + 1);
-    if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_0_y_bins;
-    __pyx_v_ym = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_18, __pyx_bstride_0_y_bins)) - __pyx_v_y) * __pyx_v_dy_inv);
+    __pyx_t_20 = (__pyx_v_y_i + 1);
+    if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_0_y_bins;
+    __pyx_v_ym = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_y_bins.buf, __pyx_t_20, __pyx_bstride_0_y_bins)) - __pyx_v_y) * __pyx_v_dy_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":108
  *         xm = (x_bins[x_i+1] - x) * dx_inv
@@ -4934,9 +5009,9 @@
  *         output[i]  = table[x_i  ,y_i  ,z_i  ] * (xm*ym*zm) \
  *                    + table[x_i+1,y_i  ,z_i  ] * (xp*ym*zm) \
  */
-    __pyx_t_19 = (__pyx_v_z_i + 1);
-    if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_0_z_bins;
-    __pyx_v_zm = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_bins.buf, __pyx_t_19, __pyx_bstride_0_z_bins)) - __pyx_v_z) * __pyx_v_dz_inv);
+    __pyx_t_21 = (__pyx_v_z_i + 1);
+    if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_0_z_bins;
+    __pyx_v_zm = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_z_bins.buf, __pyx_t_21, __pyx_bstride_0_z_bins)) - __pyx_v_z) * __pyx_v_dz_inv);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":109
  *         ym = (y_bins[y_i+1] - y) * dy_inv
@@ -4945,12 +5020,12 @@
  *                    + table[x_i+1,y_i  ,z_i  ] * (xp*ym*zm) \
  *                    + table[x_i  ,y_i+1,z_i  ] * (xm*yp*zm) \
  */
-    __pyx_t_20 = __pyx_v_x_i;
-    __pyx_t_21 = __pyx_v_y_i;
-    __pyx_t_22 = __pyx_v_z_i;
-    if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_0_table;
-    if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_1_table;
-    if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_2_table;
+    __pyx_t_22 = __pyx_v_x_i;
+    __pyx_t_23 = __pyx_v_y_i;
+    __pyx_t_24 = __pyx_v_z_i;
+    if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_0_table;
+    if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_1_table;
+    if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_2_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":110
  *         zm = (z_bins[z_i+1] - z) * dz_inv
@@ -4959,12 +5034,12 @@
  *                    + table[x_i  ,y_i+1,z_i  ] * (xm*yp*zm) \
  *                    + table[x_i  ,y_i  ,z_i+1] * (xm*ym*zp) \
  */
-    __pyx_t_23 = (__pyx_v_x_i + 1);
-    __pyx_t_24 = __pyx_v_y_i;
-    __pyx_t_25 = __pyx_v_z_i;
-    if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_0_table;
-    if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_1_table;
-    if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_2_table;
+    __pyx_t_25 = (__pyx_v_x_i + 1);
+    __pyx_t_26 = __pyx_v_y_i;
+    __pyx_t_27 = __pyx_v_z_i;
+    if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_0_table;
+    if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_1_table;
+    if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_2_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":111
  *         output[i]  = table[x_i  ,y_i  ,z_i  ] * (xm*ym*zm) \
@@ -4973,12 +5048,12 @@
  *                    + table[x_i  ,y_i  ,z_i+1] * (xm*ym*zp) \
  *                    + table[x_i+1,y_i  ,z_i+1] * (xp*ym*zp) \
  */
-    __pyx_t_26 = __pyx_v_x_i;
-    __pyx_t_27 = (__pyx_v_y_i + 1);
-    __pyx_t_28 = __pyx_v_z_i;
-    if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_0_table;
-    if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_1_table;
-    if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_2_table;
+    __pyx_t_28 = __pyx_v_x_i;
+    __pyx_t_29 = (__pyx_v_y_i + 1);
+    __pyx_t_30 = __pyx_v_z_i;
+    if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_0_table;
+    if (__pyx_t_29 < 0) __pyx_t_29 += __pyx_bshape_1_table;
+    if (__pyx_t_30 < 0) __pyx_t_30 += __pyx_bshape_2_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":112
  *                    + table[x_i+1,y_i  ,z_i  ] * (xp*ym*zm) \
@@ -4987,12 +5062,12 @@
  *                    + table[x_i+1,y_i  ,z_i+1] * (xp*ym*zp) \
  *                    + table[x_i  ,y_i+1,z_i+1] * (xm*yp*zp) \
  */
-    __pyx_t_29 = __pyx_v_x_i;
-    __pyx_t_30 = __pyx_v_y_i;
-    __pyx_t_31 = (__pyx_v_z_i + 1);
-    if (__pyx_t_29 < 0) __pyx_t_29 += __pyx_bshape_0_table;
-    if (__pyx_t_30 < 0) __pyx_t_30 += __pyx_bshape_1_table;
-    if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_bshape_2_table;
+    __pyx_t_31 = __pyx_v_x_i;
+    __pyx_t_32 = __pyx_v_y_i;
+    __pyx_t_33 = (__pyx_v_z_i + 1);
+    if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_bshape_0_table;
+    if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_bshape_1_table;
+    if (__pyx_t_33 < 0) __pyx_t_33 += __pyx_bshape_2_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":113
  *                    + table[x_i  ,y_i+1,z_i  ] * (xm*yp*zm) \
@@ -5001,12 +5076,12 @@
  *                    + table[x_i  ,y_i+1,z_i+1] * (xm*yp*zp) \
  *                    + table[x_i+1,y_i+1,z_i  ] * (xp*yp*zm) \
  */
-    __pyx_t_32 = (__pyx_v_x_i + 1);
-    __pyx_t_33 = __pyx_v_y_i;
-    __pyx_t_34 = (__pyx_v_z_i + 1);
-    if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_bshape_0_table;
-    if (__pyx_t_33 < 0) __pyx_t_33 += __pyx_bshape_1_table;
-    if (__pyx_t_34 < 0) __pyx_t_34 += __pyx_bshape_2_table;
+    __pyx_t_34 = (__pyx_v_x_i + 1);
+    __pyx_t_35 = __pyx_v_y_i;
+    __pyx_t_36 = (__pyx_v_z_i + 1);
+    if (__pyx_t_34 < 0) __pyx_t_34 += __pyx_bshape_0_table;
+    if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_bshape_1_table;
+    if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_bshape_2_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":114
  *                    + table[x_i  ,y_i  ,z_i+1] * (xm*ym*zp) \
@@ -5015,12 +5090,12 @@
  *                    + table[x_i+1,y_i+1,z_i  ] * (xp*yp*zm) \
  *                    + table[x_i+1,y_i+1,z_i+1] * (xp*yp*zp)
  */
-    __pyx_t_35 = __pyx_v_x_i;
-    __pyx_t_36 = (__pyx_v_y_i + 1);
-    __pyx_t_37 = (__pyx_v_z_i + 1);
-    if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_bshape_0_table;
-    if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_bshape_1_table;
-    if (__pyx_t_37 < 0) __pyx_t_37 += __pyx_bshape_2_table;
+    __pyx_t_37 = __pyx_v_x_i;
+    __pyx_t_38 = (__pyx_v_y_i + 1);
+    __pyx_t_39 = (__pyx_v_z_i + 1);
+    if (__pyx_t_37 < 0) __pyx_t_37 += __pyx_bshape_0_table;
+    if (__pyx_t_38 < 0) __pyx_t_38 += __pyx_bshape_1_table;
+    if (__pyx_t_39 < 0) __pyx_t_39 += __pyx_bshape_2_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":115
  *                    + table[x_i+1,y_i  ,z_i+1] * (xp*ym*zp) \
@@ -5028,24 +5103,24 @@
  *                    + table[x_i+1,y_i+1,z_i  ] * (xp*yp*zm) \             # <<<<<<<<<<<<<<
  *                    + table[x_i+1,y_i+1,z_i+1] * (xp*yp*zp)
  */
-    __pyx_t_38 = (__pyx_v_x_i + 1);
-    __pyx_t_39 = (__pyx_v_y_i + 1);
-    __pyx_t_40 = __pyx_v_z_i;
-    if (__pyx_t_38 < 0) __pyx_t_38 += __pyx_bshape_0_table;
-    if (__pyx_t_39 < 0) __pyx_t_39 += __pyx_bshape_1_table;
-    if (__pyx_t_40 < 0) __pyx_t_40 += __pyx_bshape_2_table;
+    __pyx_t_40 = (__pyx_v_x_i + 1);
+    __pyx_t_41 = (__pyx_v_y_i + 1);
+    __pyx_t_42 = __pyx_v_z_i;
+    if (__pyx_t_40 < 0) __pyx_t_40 += __pyx_bshape_0_table;
+    if (__pyx_t_41 < 0) __pyx_t_41 += __pyx_bshape_1_table;
+    if (__pyx_t_42 < 0) __pyx_t_42 += __pyx_bshape_2_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":116
  *                    + table[x_i  ,y_i+1,z_i+1] * (xm*yp*zp) \
  *                    + table[x_i+1,y_i+1,z_i  ] * (xp*yp*zm) \
  *                    + table[x_i+1,y_i+1,z_i+1] * (xp*yp*zp)             # <<<<<<<<<<<<<<
  */
-    __pyx_t_41 = (__pyx_v_x_i + 1);
-    __pyx_t_42 = (__pyx_v_y_i + 1);
-    __pyx_t_43 = (__pyx_v_z_i + 1);
-    if (__pyx_t_41 < 0) __pyx_t_41 += __pyx_bshape_0_table;
-    if (__pyx_t_42 < 0) __pyx_t_42 += __pyx_bshape_1_table;
-    if (__pyx_t_43 < 0) __pyx_t_43 += __pyx_bshape_2_table;
+    __pyx_t_43 = (__pyx_v_x_i + 1);
+    __pyx_t_44 = (__pyx_v_y_i + 1);
+    __pyx_t_45 = (__pyx_v_z_i + 1);
+    if (__pyx_t_43 < 0) __pyx_t_43 += __pyx_bshape_0_table;
+    if (__pyx_t_44 < 0) __pyx_t_44 += __pyx_bshape_1_table;
+    if (__pyx_t_45 < 0) __pyx_t_45 += __pyx_bshape_2_table;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":109
  *         ym = (y_bins[y_i+1] - y) * dy_inv
@@ -5054,9 +5129,9 @@
  *                    + table[x_i+1,y_i  ,z_i  ] * (xp*ym*zm) \
  *                    + table[x_i  ,y_i+1,z_i  ] * (xm*yp*zm) \
  */
-    __pyx_t_44 = __pyx_v_i;
-    if (__pyx_t_44 < 0) __pyx_t_44 += __pyx_bshape_0_output;
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_44, __pyx_bstride_0_output) = (((((((((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_20, __pyx_bstride_0_table, __pyx_t_21, __pyx_bstride_1_table, __pyx_t_22, __pyx_bstride_2_table)) * ((__pyx_v_xm * __pyx_v_ym) * __pyx_v_zm)) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_23, __pyx_bstride_0_table, __pyx_t_24, __pyx_bstride_1_table, __pyx_t_25, __pyx_bstride_2_table)) * ((__pyx_v_xp * __pyx_v_ym) * __pyx_v_zm))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_26, __pyx_bstride_0_table, __pyx_t_27, __pyx_bstride_1_table, __pyx_t_28, __pyx_bstride_2_table)) * ((__pyx_v_xm * __pyx_v_yp) * __pyx_v_zm))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_29, __pyx_bstride_0_table, __pyx_t_30, __pyx_bstride_1_table, __pyx_t_31, __pyx_bstride_2_table)) * ((__pyx_v_xm * __pyx_v_ym) * __pyx_v_zp))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_32, __pyx_bstride_0_table, __pyx_t_33, __pyx_bstride_1_table, __pyx_t_34, __pyx_bstride_2_table)) * ((__pyx_v_xp * __pyx_v_ym) * __pyx_v_zp))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_35, __pyx_bstride_0_table, __pyx_t_36, __pyx_bstride_1_table, __pyx_t_37, __pyx_bstride_2_table)) * ((__pyx_v_xm * __pyx_v_yp) * __pyx_v_zp))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_38, __pyx_bstride_0_table, __pyx_t_39, __pyx_bstride_1_table, __pyx_t_40, __pyx_bstride_2_table)) * ((__pyx_v_xp * __pyx_v_yp) * __pyx_v_zm))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_41, __pyx_bstride_0_table, __pyx_t_42, __pyx_bstride_1_table, __pyx_t_43, __pyx_bstride_2_table)) * ((__pyx_v_xp * __pyx_v_yp) * __pyx_v_zp)));
+    __pyx_t_46 = __pyx_v_i;
+    if (__pyx_t_46 < 0) __pyx_t_46 += __pyx_bshape_0_output;
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_output.buf, __pyx_t_46, __pyx_bstride_0_output) = (((((((((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_22, __pyx_bstride_0_table, __pyx_t_23, __pyx_bstride_1_table, __pyx_t_24, __pyx_bstride_2_table)) * ((__pyx_v_xm * __pyx_v_ym) * __pyx_v_zm)) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_25, __pyx_bstride_0_table, __pyx_t_26, __pyx_bstride_1_table, __pyx_t_27, __pyx_bstride_2_table)) * ((__pyx_v_xp * __pyx_v_ym) * __pyx_v_zm))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_28, __pyx_bstride_0_table, __pyx_t_29, __pyx_bstride_1_table, __pyx_t_30, __pyx_bstride_2_table)) * ((__pyx_v_xm * __pyx_v_yp) * __pyx_v_zm))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_31, __pyx_bstride_0_table, __pyx_t_32, __pyx_bstride_1_table, __pyx_t_33, __pyx_bstride_2_table)) * ((__pyx_v_xm * __pyx_v_ym) * __pyx_v_zp))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_34, __pyx_bstride_0_table, __pyx_t_35, __pyx_bstride_1_table, __pyx_t_36, __pyx_bstride_2_table)) * ((__pyx_v_xp * __pyx_v_ym) * __pyx_v_zp))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_37, __pyx_bstride_0_table, __pyx_t_38, __pyx_bstride_1_table, __pyx_t_39, __pyx_bstride_2_table)) * ((__pyx_v_xm * __pyx_v_yp) * __pyx_v_zp))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_40, __pyx_bstride_0_table, __pyx_t_41, __pyx_bstride_1_table, __pyx_t_42, __pyx_bstride_2_table)) * ((__pyx_v_xp * __pyx_v_yp) * __pyx_v_zm))) + ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_table.buf, __pyx_t_43, __pyx_bstride_0_table, __pyx_t_44, __pyx_bstride_1_table, __pyx_t_45, __pyx_bstride_2_table)) * ((__pyx_v_xp * __pyx_v_yp) * __pyx_v_zp)));
   }
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -5092,8 +5167,19 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_y_vals);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_z_vals);
   __pyx_L2:;
+  __Pyx_DECREF((PyObject *)__pyx_v_table);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_vals);
+  __Pyx_DECREF((PyObject *)__pyx_v_y_vals);
+  __Pyx_DECREF((PyObject *)__pyx_v_z_vals);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_bins);
+  __Pyx_DECREF((PyObject *)__pyx_v_y_bins);
+  __Pyx_DECREF((PyObject *)__pyx_v_z_bins);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_is);
+  __Pyx_DECREF((PyObject *)__pyx_v_y_is);
+  __Pyx_DECREF((PyObject *)__pyx_v_z_is);
+  __Pyx_DECREF((PyObject *)__pyx_v_output);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -5149,13 +5235,12 @@
   Py_ssize_t __pyx_bstride_0_result = 0;
   Py_ssize_t __pyx_bshape_0_result = 0;
   PyObject *__pyx_r = NULL;
-  PyObject *__pyx_1 = 0;
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  PyArrayObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  int __pyx_t_6;
+  PyObject *__pyx_t_4 = NULL;
+  PyArrayObject *__pyx_t_5 = NULL;
+  npy_intp __pyx_t_6;
   int __pyx_t_7;
   int __pyx_t_8;
   int __pyx_t_9;
@@ -5168,15 +5253,19 @@
   int __pyx_t_16;
   int __pyx_t_17;
   int __pyx_t_18;
-  unsigned int __pyx_t_19;
-  unsigned int __pyx_t_20;
-  unsigned int __pyx_t_21;
-  PyArrayObject *__pyx_t_22 = NULL;
-  int __pyx_t_23;
-  int __pyx_t_24;
-  int __pyx_t_25;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_points,&__pyx_kp_pmask,&__pyx_kp_left_edge,&__pyx_kp_right_edge,&__pyx_kp_mask,&__pyx_kp_dx,0};
-  __Pyx_SetupRefcountContext("PointsInVolume");
+  int __pyx_t_19;
+  int __pyx_t_20;
+  int __pyx_t_21;
+  int __pyx_t_22;
+  unsigned int __pyx_t_23;
+  unsigned int __pyx_t_24;
+  unsigned int __pyx_t_25;
+  PyArrayObject *__pyx_t_26 = NULL;
+  int __pyx_t_27;
+  int __pyx_t_28;
+  int __pyx_t_29;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__points,&__pyx_n_s__pmask,&__pyx_n_s__left_edge,&__pyx_n_s__right_edge,&__pyx_n_s__mask,&__pyx_n_s__dx,0};
+  __Pyx_RefNannySetupContext("PointsInVolume");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -5193,49 +5282,49 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_points);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__points);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_pmask);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pmask);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_left_edge);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left_edge);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 2); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_right_edge);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right_edge);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 3); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 3); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_mask);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 4); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 4); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dx);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dx);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 5); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, 5); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "PointsInVolume") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "PointsInVolume") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_points = ((PyArrayObject *)values[0]);
     __pyx_v_pmask = ((PyArrayObject *)values[1]);
     __pyx_v_left_edge = ((PyArrayObject *)values[2]);
     __pyx_v_right_edge = ((PyArrayObject *)values[3]);
     __pyx_v_mask = ((PyArrayObject *)values[4]);
-    __pyx_v_dx = __pyx_PyFloat_AsDouble(values[5]); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_dx = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_dx == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
     goto __pyx_L5_argtuple_error;
   } else {
@@ -5244,15 +5333,20 @@
     __pyx_v_left_edge = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 2));
     __pyx_v_right_edge = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 3));
     __pyx_v_mask = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 4));
-    __pyx_v_dx = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_dx = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_dx == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("PointsInVolume", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.PointsInVolume");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_points);
+  __Pyx_INCREF((PyObject *)__pyx_v_pmask);
+  __Pyx_INCREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_mask);
   __pyx_bstruct_valid.buf = NULL;
   __pyx_bstruct_result.buf = NULL;
   __pyx_bstruct_points.buf = NULL;
@@ -5260,38 +5354,38 @@
   __pyx_bstruct_left_edge.buf = NULL;
   __pyx_bstruct_right_edge.buf = NULL;
   __pyx_bstruct_mask.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), __pyx_ptype_5numpy_ndarray, 1, "points", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pmask), __pyx_ptype_5numpy_ndarray, 1, "pmask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), __pyx_ptype_5numpy_ndarray, 1, "points", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pmask), __pyx_ptype_5numpy_ndarray, 1, "pmask", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_points, (PyObject*)__pyx_v_points, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_points, (PyObject*)__pyx_v_points, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_points = __pyx_bstruct_points.strides[0]; __pyx_bstride_1_points = __pyx_bstruct_points.strides[1];
   __pyx_bshape_0_points = __pyx_bstruct_points.shape[0]; __pyx_bshape_1_points = __pyx_bstruct_points.shape[1];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_pmask, (PyObject*)__pyx_v_pmask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_pmask, (PyObject*)__pyx_v_pmask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_pmask = __pyx_bstruct_pmask.strides[0];
   __pyx_bshape_0_pmask = __pyx_bstruct_pmask.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_left_edge = __pyx_bstruct_left_edge.strides[0];
   __pyx_bshape_0_left_edge = __pyx_bstruct_left_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_right_edge = __pyx_bstruct_right_edge.strides[0];
   __pyx_bshape_0_right_edge = __pyx_bstruct_right_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1]; __pyx_bstride_2_mask = __pyx_bstruct_mask.strides[2];
   __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1]; __pyx_bshape_2_mask = __pyx_bstruct_mask.shape[2];
@@ -5303,40 +5397,40 @@
  *     cdef int i, dim, count
  *     cdef int ex
  */
-  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_t_2 = __Pyx_PyInt_to_py_npy_intp((__pyx_v_points->dimensions[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __pyx_t_2 = 0;
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_1));
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_kp_33) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_1 = __Pyx_PyInt_to_py_npy_intp((__pyx_v_points->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__int8)) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = ((PyArrayObject *)__pyx_t_4);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_valid, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_valid, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_valid = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_valid.buf = NULL;
-      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_valid = __pyx_bstruct_valid.strides[0];
       __pyx_bshape_0_valid = __pyx_bstruct_valid.shape[0];
     }
   }
+  __pyx_t_5 = 0;
+  __pyx_v_valid = ((PyArrayObject *)__pyx_t_4);
   __pyx_t_4 = 0;
-  __pyx_v_valid = ((PyArrayObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":45
  *     cdef double dx_inv
@@ -5354,6 +5448,10 @@
  *     for i in xrange(points.shape[0]):
  *         if pmask[i] == 0:
  */
+  if (unlikely(__pyx_v_dx == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
   __pyx_v_dx_inv = (1.0 / __pyx_v_dx);
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":47
@@ -5363,8 +5461,9 @@
  *         if pmask[i] == 0:
  *             continue
  */
-  for (__pyx_t_5 = 0; __pyx_t_5 < (__pyx_v_points->dimensions[0]); __pyx_t_5+=1) {
-    __pyx_v_i = __pyx_t_5;
+  __pyx_t_6 = (__pyx_v_points->dimensions[0]);
+  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
+    __pyx_v_i = __pyx_t_7;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":48
  *     dx_inv = 1.0 / dx
@@ -5373,9 +5472,9 @@
  *             continue
  *         ex = 1
  */
-    __pyx_t_6 = __pyx_v_i;
-    __pyx_t_7 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_pmask.buf, __pyx_t_6, __pyx_bstride_0_pmask)) == 0);
-    if (__pyx_t_7) {
+    __pyx_t_8 = __pyx_v_i;
+    __pyx_t_9 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_pmask.buf, __pyx_t_8, __pyx_bstride_0_pmask)) == 0);
+    if (__pyx_t_9) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":49
  *     for i in xrange(points.shape[0]):
@@ -5405,8 +5504,8 @@
  *             if points[i,dim] < left_edge[dim] or points[i,dim] > right_edge[dim]:
  *                 valid[i] = ex = 0
  */
-    for (__pyx_t_8 = 0; __pyx_t_8 < 3; __pyx_t_8+=1) {
-      __pyx_v_dim = __pyx_t_8;
+    for (__pyx_t_10 = 0; __pyx_t_10 < 3; __pyx_t_10+=1) {
+      __pyx_v_dim = __pyx_t_10;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":52
  *         ex = 1
@@ -5415,18 +5514,20 @@
  *                 valid[i] = ex = 0
  *                 break
  */
-      __pyx_t_9 = __pyx_v_i;
-      __pyx_t_10 = __pyx_v_dim;
-      __pyx_t_11 = __pyx_v_dim;
-      if (!((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_points.buf, __pyx_t_9, __pyx_bstride_0_points, __pyx_t_10, __pyx_bstride_1_points)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_11, __pyx_bstride_0_left_edge)))) {
-        __pyx_t_12 = __pyx_v_i;
-        __pyx_t_13 = __pyx_v_dim;
-        __pyx_t_14 = __pyx_v_dim;
-        __pyx_t_7 = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_points.buf, __pyx_t_12, __pyx_bstride_0_points, __pyx_t_13, __pyx_bstride_1_points)) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_14, __pyx_bstride_0_right_edge)));
+      __pyx_t_11 = __pyx_v_i;
+      __pyx_t_12 = __pyx_v_dim;
+      __pyx_t_13 = __pyx_v_dim;
+      __pyx_t_9 = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_points.buf, __pyx_t_11, __pyx_bstride_0_points, __pyx_t_12, __pyx_bstride_1_points)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_13, __pyx_bstride_0_left_edge)));
+      if (!__pyx_t_9) {
+        __pyx_t_14 = __pyx_v_i;
+        __pyx_t_15 = __pyx_v_dim;
+        __pyx_t_16 = __pyx_v_dim;
+        __pyx_t_17 = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_points.buf, __pyx_t_14, __pyx_bstride_0_points, __pyx_t_15, __pyx_bstride_1_points)) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_16, __pyx_bstride_0_right_edge)));
+        __pyx_t_18 = __pyx_t_17;
       } else {
-        __pyx_t_7 = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_points.buf, __pyx_t_9, __pyx_bstride_0_points, __pyx_t_10, __pyx_bstride_1_points)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_11, __pyx_bstride_0_left_edge)));
+        __pyx_t_18 = __pyx_t_9;
       }
-      if (__pyx_t_7) {
+      if (__pyx_t_18) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":53
  *         for dim in xrange(3):
@@ -5435,8 +5536,8 @@
  *                 break
  *         if ex == 1:
  */
-        __pyx_t_15 = __pyx_v_i;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_valid.buf, __pyx_t_15, __pyx_bstride_0_valid) = 0;
+        __pyx_t_19 = __pyx_v_i;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_valid.buf, __pyx_t_19, __pyx_bstride_0_valid) = 0;
         __pyx_v_ex = 0;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":54
@@ -5460,8 +5561,8 @@
  *             for dim in xrange(3):
  *                 idx[dim] = <unsigned int> \
  */
-    __pyx_t_7 = (__pyx_v_ex == 1);
-    if (__pyx_t_7) {
+    __pyx_t_18 = (__pyx_v_ex == 1);
+    if (__pyx_t_18) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":56
  *                 break
@@ -5470,8 +5571,8 @@
  *                 idx[dim] = <unsigned int> \
  *                            ((points[i,dim] - left_edge[dim]) * dx_inv)
  */
-      for (__pyx_t_8 = 0; __pyx_t_8 < 3; __pyx_t_8+=1) {
-        __pyx_v_dim = __pyx_t_8;
+      for (__pyx_t_10 = 0; __pyx_t_10 < 3; __pyx_t_10+=1) {
+        __pyx_v_dim = __pyx_t_10;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":58
  *             for dim in xrange(3):
@@ -5480,9 +5581,9 @@
  *             if mask[idx[0], idx[1], idx[2]] == 1:
  *                 valid[i] = 1
  */
-        __pyx_t_16 = __pyx_v_i;
-        __pyx_t_17 = __pyx_v_dim;
-        __pyx_t_18 = __pyx_v_dim;
+        __pyx_t_20 = __pyx_v_i;
+        __pyx_t_21 = __pyx_v_dim;
+        __pyx_t_22 = __pyx_v_dim;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":57
  *         if ex == 1:
@@ -5491,7 +5592,7 @@
  *                            ((points[i,dim] - left_edge[dim]) * dx_inv)
  *             if mask[idx[0], idx[1], idx[2]] == 1:
  */
-        (__pyx_v_idx[__pyx_v_dim]) = ((unsigned int)(((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_points.buf, __pyx_t_16, __pyx_bstride_0_points, __pyx_t_17, __pyx_bstride_1_points)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_18, __pyx_bstride_0_left_edge))) * __pyx_v_dx_inv));
+        (__pyx_v_idx[__pyx_v_dim]) = ((unsigned int)(((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_points.buf, __pyx_t_20, __pyx_bstride_0_points, __pyx_t_21, __pyx_bstride_1_points)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_22, __pyx_bstride_0_left_edge))) * __pyx_v_dx_inv));
       }
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":59
@@ -5501,11 +5602,11 @@
  *                 valid[i] = 1
  *                 count += 1
  */
-      __pyx_t_19 = (__pyx_v_idx[0]);
-      __pyx_t_20 = (__pyx_v_idx[1]);
-      __pyx_t_21 = (__pyx_v_idx[2]);
-      __pyx_t_7 = ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_mask.buf, __pyx_t_19, __pyx_bstride_0_mask, __pyx_t_20, __pyx_bstride_1_mask, __pyx_t_21, __pyx_bstride_2_mask)) == 1);
-      if (__pyx_t_7) {
+      __pyx_t_23 = (__pyx_v_idx[0]);
+      __pyx_t_24 = (__pyx_v_idx[1]);
+      __pyx_t_25 = (__pyx_v_idx[2]);
+      __pyx_t_18 = ((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_mask.buf, __pyx_t_23, __pyx_bstride_0_mask, __pyx_t_24, __pyx_bstride_1_mask, __pyx_t_25, __pyx_bstride_2_mask)) == 1);
+      if (__pyx_t_18) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":60
  *                            ((points[i,dim] - left_edge[dim]) * dx_inv)
@@ -5514,8 +5615,8 @@
  *                 count += 1
  * 
  */
-        __pyx_t_8 = __pyx_v_i;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_valid.buf, __pyx_t_8, __pyx_bstride_0_valid) = 1;
+        __pyx_t_10 = __pyx_v_i;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_valid.buf, __pyx_t_10, __pyx_bstride_0_valid) = 1;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":61
  *             if mask[idx[0], idx[1], idx[2]] == 1:
@@ -5541,40 +5642,40 @@
  *     count = 0
  *     for i in xrange(points.shape[0]):
  */
-  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_t_3 = PyInt_FromLong(__pyx_v_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
-  __pyx_t_3 = 0;
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_1));
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_kp_34) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyInt_FromLong(__pyx_v_count); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_22 = ((PyArrayObject *)__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_t_4 = 0;
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__int32)) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_3, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_26 = ((PyArrayObject *)__pyx_t_2);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_22, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_26, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_result.buf = NULL;
-      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
       __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
     }
   }
-  __pyx_t_22 = 0;
-  __pyx_v_result = ((PyArrayObject *)__pyx_t_3);
-  __pyx_t_3 = 0;
+  __pyx_t_26 = 0;
+  __pyx_v_result = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_2 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":64
  * 
@@ -5592,8 +5693,9 @@
  *         if valid[i] == 1 and pmask[i] == 1:
  *             result[count] = i
  */
-  for (__pyx_t_5 = 0; __pyx_t_5 < (__pyx_v_points->dimensions[0]); __pyx_t_5+=1) {
-    __pyx_v_i = __pyx_t_5;
+  __pyx_t_6 = (__pyx_v_points->dimensions[0]);
+  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
+    __pyx_v_i = __pyx_t_7;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":66
  *     count = 0
@@ -5602,14 +5704,16 @@
  *             result[count] = i
  *             count += 1
  */
-    __pyx_t_23 = __pyx_v_i;
-    if (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_valid.buf, __pyx_t_23, __pyx_bstride_0_valid)) == 1)) {
-      __pyx_t_24 = __pyx_v_i;
-      __pyx_t_7 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_pmask.buf, __pyx_t_24, __pyx_bstride_0_pmask)) == 1);
+    __pyx_t_27 = __pyx_v_i;
+    __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_valid.buf, __pyx_t_27, __pyx_bstride_0_valid)) == 1);
+    if (__pyx_t_18) {
+      __pyx_t_28 = __pyx_v_i;
+      __pyx_t_9 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_pmask.buf, __pyx_t_28, __pyx_bstride_0_pmask)) == 1);
+      __pyx_t_17 = __pyx_t_9;
     } else {
-      __pyx_t_7 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_bstruct_valid.buf, __pyx_t_23, __pyx_bstride_0_valid)) == 1);
+      __pyx_t_17 = __pyx_t_18;
     }
-    if (__pyx_t_7) {
+    if (__pyx_t_17) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":67
  *     for i in xrange(points.shape[0]):
@@ -5618,8 +5722,8 @@
  *             count += 1
  * 
  */
-      __pyx_t_25 = __pyx_v_count;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_25, __pyx_bstride_0_result) = __pyx_v_i;
+      __pyx_t_29 = __pyx_v_count;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_29, __pyx_bstride_0_result) = __pyx_v_i;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":68
  *         if valid[i] == 1 and pmask[i] == 1:
@@ -5649,10 +5753,10 @@
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_valid);
@@ -5677,8 +5781,13 @@
   __pyx_L2:;
   __Pyx_XDECREF((PyObject *)__pyx_v_valid);
   __Pyx_XDECREF((PyObject *)__pyx_v_result);
+  __Pyx_DECREF((PyObject *)__pyx_v_points);
+  __Pyx_DECREF((PyObject *)__pyx_v_pmask);
+  __Pyx_DECREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_mask);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -5775,8 +5884,11 @@
   int __pyx_t_23;
   int __pyx_t_24;
   int __pyx_t_25;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_i_s,&__pyx_kp_o_s,&__pyx_kp_e,&__pyx_kp_a,&__pyx_kp_imin,&__pyx_kp_imax,&__pyx_kp_jmin,&__pyx_kp_jmax,&__pyx_kp_kmin,&__pyx_kp_kmax,&__pyx_kp_istride,&__pyx_kp_jstride,&__pyx_kp_dx,0};
-  __Pyx_SetupRefcountContext("Transfer3D");
+  int __pyx_t_26;
+  int __pyx_t_27;
+  int __pyx_t_28;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__i_s,&__pyx_n_s__o_s,&__pyx_n_s__e,&__pyx_n_s__a,&__pyx_n_s__imin,&__pyx_n_s__imax,&__pyx_n_s__jmin,&__pyx_n_s__jmax,&__pyx_n_s__kmin,&__pyx_n_s__kmax,&__pyx_n_s__istride,&__pyx_n_s__jstride,&__pyx_n_s__dx,0};
+  __Pyx_RefNannySetupContext("Transfer3D");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -5800,98 +5912,98 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_i_s);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i_s);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_o_s);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__o_s);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 1); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 1); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_e);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 2); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 2); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_a);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__a);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 3); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 3); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_imin);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__imin);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 4); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 4); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_imax);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__imax);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 5); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 5); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_jmin);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__jmin);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 6); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 6); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
-      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_kp_jmax);
+      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__jmax);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 7); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 7); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  8:
-      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_kp_kmin);
+      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__kmin);
       if (likely(values[8])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 8); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 8); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  9:
-      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_kp_kmax);
+      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__kmax);
       if (likely(values[9])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 9); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 9); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case 10:
-      values[10] = PyDict_GetItem(__pyx_kwds, __pyx_kp_istride);
+      values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__istride);
       if (likely(values[10])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 10); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 10); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case 11:
-      values[11] = PyDict_GetItem(__pyx_kwds, __pyx_kp_jstride);
+      values[11] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__jstride);
       if (likely(values[11])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 11); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 11); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case 12:
-      values[12] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dx);
+      values[12] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dx);
       if (likely(values[12])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 12); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, 12); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Transfer3D") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Transfer3D") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_i_s = ((PyArrayObject *)values[0]);
     __pyx_v_o_s = ((PyArrayObject *)values[1]);
     __pyx_v_e = ((PyArrayObject *)values[2]);
     __pyx_v_a = ((PyArrayObject *)values[3]);
-    __pyx_v_imin = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_imin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_imax = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_imax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_jmin = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_jmin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_jmax = __Pyx_PyInt_AsInt(values[7]); if (unlikely((__pyx_v_jmax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_kmin = __Pyx_PyInt_AsInt(values[8]); if (unlikely((__pyx_v_kmin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_kmax = __Pyx_PyInt_AsInt(values[9]); if (unlikely((__pyx_v_kmax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_istride = __Pyx_PyInt_AsInt(values[10]); if (unlikely((__pyx_v_istride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_jstride = __Pyx_PyInt_AsInt(values[11]); if (unlikely((__pyx_v_jstride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_dx = __pyx_PyFloat_AsDouble(values[12]); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_imin = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_imin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_imax = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_imax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_jmin = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_jmin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_jmax = __Pyx_PyInt_AsInt(values[7]); if (unlikely((__pyx_v_jmax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_kmin = __Pyx_PyInt_AsInt(values[8]); if (unlikely((__pyx_v_kmin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_kmax = __Pyx_PyInt_AsInt(values[9]); if (unlikely((__pyx_v_kmax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_istride = __Pyx_PyInt_AsInt(values[10]); if (unlikely((__pyx_v_istride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_jstride = __Pyx_PyInt_AsInt(values[11]); if (unlikely((__pyx_v_jstride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_dx = __pyx_PyFloat_AsDouble(values[12]); if (unlikely((__pyx_v_dx == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
     goto __pyx_L5_argtuple_error;
   } else {
@@ -5899,52 +6011,56 @@
     __pyx_v_o_s = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 1));
     __pyx_v_e = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 2));
     __pyx_v_a = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 3));
-    __pyx_v_imin = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_imin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_imax = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_imax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_jmin = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 6)); if (unlikely((__pyx_v_jmin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_jmax = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 7)); if (unlikely((__pyx_v_jmax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_kmin = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 8)); if (unlikely((__pyx_v_kmin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_kmax = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 9)); if (unlikely((__pyx_v_kmax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_istride = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 10)); if (unlikely((__pyx_v_istride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_jstride = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 11)); if (unlikely((__pyx_v_jstride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_dx = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 12)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_imin = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_imin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_imax = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_imax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_jmin = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 6)); if (unlikely((__pyx_v_jmin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_jmax = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 7)); if (unlikely((__pyx_v_jmax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_kmin = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 8)); if (unlikely((__pyx_v_kmin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_kmax = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 9)); if (unlikely((__pyx_v_kmax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_istride = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 10)); if (unlikely((__pyx_v_istride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_jstride = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 11)); if (unlikely((__pyx_v_jstride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_dx = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 12)); if (unlikely((__pyx_v_dx == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("Transfer3D", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.Transfer3D");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_i_s);
+  __Pyx_INCREF((PyObject *)__pyx_v_o_s);
+  __Pyx_INCREF((PyObject *)__pyx_v_e);
+  __Pyx_INCREF((PyObject *)__pyx_v_a);
   __pyx_bstruct_i_s.buf = NULL;
   __pyx_bstruct_o_s.buf = NULL;
   __pyx_bstruct_e.buf = NULL;
   __pyx_bstruct_a.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_i_s), __pyx_ptype_5numpy_ndarray, 1, "i_s", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_o_s), __pyx_ptype_5numpy_ndarray, 1, "o_s", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_e), __pyx_ptype_5numpy_ndarray, 1, "e", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_a), __pyx_ptype_5numpy_ndarray, 1, "a", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_i_s), __pyx_ptype_5numpy_ndarray, 1, "i_s", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_o_s), __pyx_ptype_5numpy_ndarray, 1, "o_s", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_e), __pyx_ptype_5numpy_ndarray, 1, "e", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_a), __pyx_ptype_5numpy_ndarray, 1, "a", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_i_s, (PyObject*)__pyx_v_i_s, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_i_s, (PyObject*)__pyx_v_i_s, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_i_s = __pyx_bstruct_i_s.strides[0]; __pyx_bstride_1_i_s = __pyx_bstruct_i_s.strides[1]; __pyx_bstride_2_i_s = __pyx_bstruct_i_s.strides[2];
   __pyx_bshape_0_i_s = __pyx_bstruct_i_s.shape[0]; __pyx_bshape_1_i_s = __pyx_bstruct_i_s.shape[1]; __pyx_bshape_2_i_s = __pyx_bstruct_i_s.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_o_s, (PyObject*)__pyx_v_o_s, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 4, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_o_s, (PyObject*)__pyx_v_o_s, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 4, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_o_s = __pyx_bstruct_o_s.strides[0]; __pyx_bstride_1_o_s = __pyx_bstruct_o_s.strides[1]; __pyx_bstride_2_o_s = __pyx_bstruct_o_s.strides[2]; __pyx_bstride_3_o_s = __pyx_bstruct_o_s.strides[3];
   __pyx_bshape_0_o_s = __pyx_bstruct_o_s.shape[0]; __pyx_bshape_1_o_s = __pyx_bstruct_o_s.shape[1]; __pyx_bshape_2_o_s = __pyx_bstruct_o_s.shape[2]; __pyx_bshape_3_o_s = __pyx_bstruct_o_s.shape[3];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_e, (PyObject*)__pyx_v_e, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_e, (PyObject*)__pyx_v_e, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_e = __pyx_bstruct_e.strides[0]; __pyx_bstride_1_e = __pyx_bstruct_e.strides[1]; __pyx_bstride_2_e = __pyx_bstruct_e.strides[2]; __pyx_bstride_3_e = __pyx_bstruct_e.strides[3];
   __pyx_bshape_0_e = __pyx_bstruct_e.shape[0]; __pyx_bshape_1_e = __pyx_bstruct_e.shape[1]; __pyx_bshape_2_e = __pyx_bstruct_e.shape[2]; __pyx_bshape_3_e = __pyx_bstruct_e.shape[3];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_a, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_a, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_a = __pyx_bstruct_a.strides[0]; __pyx_bstride_1_a = __pyx_bstruct_a.strides[1]; __pyx_bstride_2_a = __pyx_bstruct_a.strides[2]; __pyx_bstride_3_a = __pyx_bstruct_a.strides[3];
   __pyx_bshape_0_a = __pyx_bstruct_a.shape[0]; __pyx_bshape_1_a = __pyx_bstruct_a.shape[1]; __pyx_bshape_2_a = __pyx_bstruct_a.shape[2]; __pyx_bshape_3_a = __pyx_bstruct_a.shape[3];
@@ -5974,8 +6090,9 @@
  *         ii = i + imin*istride
  *         for j in range((jmax-jmin)*jstride):
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < ((__pyx_v_imax - __pyx_v_imin) * __pyx_v_istride); __pyx_t_1+=1) {
-    __pyx_v_i = __pyx_t_1;
+  __pyx_t_1 = ((__pyx_v_imax - __pyx_v_imin) * __pyx_v_istride);
+  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":58
  *     cdef np.float64_t *temp = <np.float64_t *>malloc(sizeof(np.float64_t) * nn)
@@ -5993,8 +6110,9 @@
  *             jj = j + jmin*jstride
  *             # Not sure about the ordering of the loops here
  */
-    for (__pyx_t_2 = 0; __pyx_t_2 < ((__pyx_v_jmax - __pyx_v_jmin) * __pyx_v_jstride); __pyx_t_2+=1) {
-      __pyx_v_j = __pyx_t_2;
+    __pyx_t_3 = ((__pyx_v_jmax - __pyx_v_jmin) * __pyx_v_jstride);
+    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
+      __pyx_v_j = __pyx_t_4;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":60
  *         ii = i + imin*istride
@@ -6012,8 +6130,9 @@
  *                 temp[n] = i_s[ii,jj,n]
  *             for k in range(kmax-kmin):
  */
-      for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_v_nn; __pyx_t_3+=1) {
-        __pyx_v_n = __pyx_t_3;
+      __pyx_t_5 = __pyx_v_nn;
+      for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
+        __pyx_v_n = __pyx_t_6;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":63
  *             # Not sure about the ordering of the loops here
@@ -6022,13 +6141,13 @@
  *             for k in range(kmax-kmin):
  *                 kk = k + kmin#*kstride, which doesn't make any sense
  */
-        __pyx_t_4 = __pyx_v_ii;
-        __pyx_t_5 = __pyx_v_jj;
-        __pyx_t_6 = __pyx_v_n;
-        if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_bshape_0_i_s;
-        if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_bshape_1_i_s;
-        if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_bshape_2_i_s;
-        (__pyx_v_temp[__pyx_v_n]) = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_4, __pyx_bstride_0_i_s, __pyx_t_5, __pyx_bstride_1_i_s, __pyx_t_6, __pyx_bstride_2_i_s));
+        __pyx_t_7 = __pyx_v_ii;
+        __pyx_t_8 = __pyx_v_jj;
+        __pyx_t_9 = __pyx_v_n;
+        if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_bshape_0_i_s;
+        if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_bshape_1_i_s;
+        if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_bshape_2_i_s;
+        (__pyx_v_temp[__pyx_v_n]) = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_7, __pyx_bstride_0_i_s, __pyx_t_8, __pyx_bstride_1_i_s, __pyx_t_9, __pyx_bstride_2_i_s));
       }
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":64
@@ -6038,8 +6157,9 @@
  *                 kk = k + kmin#*kstride, which doesn't make any sense
  *                 for n in range(nn):
  */
-      for (__pyx_t_3 = 0; __pyx_t_3 < (__pyx_v_kmax - __pyx_v_kmin); __pyx_t_3+=1) {
-        __pyx_v_k = __pyx_t_3;
+      __pyx_t_5 = (__pyx_v_kmax - __pyx_v_kmin);
+      for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
+        __pyx_v_k = __pyx_t_6;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":65
  *                 temp[n] = i_s[ii,jj,n]
@@ -6057,8 +6177,9 @@
  *                     o_s[i,j,k,n] = temp[n] + dx*(e[i,j,k,n] - temp[n]*a[i,j,k,n])
  *                     temp[n] = o_s[i,j,k,n]
  */
-        for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_v_nn; __pyx_t_7+=1) {
-          __pyx_v_n = __pyx_t_7;
+        __pyx_t_10 = __pyx_v_nn;
+        for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
+          __pyx_v_n = __pyx_t_11;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":67
  *                 kk = k + kmin#*kstride, which doesn't make any sense
@@ -6067,39 +6188,22 @@
  *                     temp[n] = o_s[i,j,k,n]
  *             for n in range(nn):
  */
-          __pyx_t_8 = __pyx_v_i;
-          __pyx_t_9 = __pyx_v_j;
-          __pyx_t_10 = __pyx_v_k;
-          __pyx_t_11 = __pyx_v_n;
-          if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_bshape_0_e;
-          if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_bshape_1_e;
-          if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_bshape_2_e;
-          if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_3_e;
           __pyx_t_12 = __pyx_v_i;
           __pyx_t_13 = __pyx_v_j;
           __pyx_t_14 = __pyx_v_k;
           __pyx_t_15 = __pyx_v_n;
-          if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_0_a;
-          if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_1_a;
-          if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_bshape_2_a;
-          if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_3_a;
+          if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_0_e;
+          if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_1_e;
+          if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_bshape_2_e;
+          if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_3_e;
           __pyx_t_16 = __pyx_v_i;
           __pyx_t_17 = __pyx_v_j;
           __pyx_t_18 = __pyx_v_k;
           __pyx_t_19 = __pyx_v_n;
-          if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_0_o_s;
-          if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_1_o_s;
-          if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_2_o_s;
-          if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_3_o_s;
-          *__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_o_s.buf, __pyx_t_16, __pyx_bstride_0_o_s, __pyx_t_17, __pyx_bstride_1_o_s, __pyx_t_18, __pyx_bstride_2_o_s, __pyx_t_19, __pyx_bstride_3_o_s) = ((__pyx_v_temp[__pyx_v_n]) + (__pyx_v_dx * ((*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_e.buf, __pyx_t_8, __pyx_bstride_0_e, __pyx_t_9, __pyx_bstride_1_e, __pyx_t_10, __pyx_bstride_2_e, __pyx_t_11, __pyx_bstride_3_e)) - ((__pyx_v_temp[__pyx_v_n]) * (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_a.buf, __pyx_t_12, __pyx_bstride_0_a, __pyx_t_13, __pyx_bstride_1_a, __pyx_t_14, __pyx_bstride_2_a, __pyx_t_15, __pyx_bstride_3_a))))));
-
-          /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":68
- *                 for n in range(nn):
- *                     o_s[i,j,k,n] = temp[n] + dx*(e[i,j,k,n] - temp[n]*a[i,j,k,n])
- *                     temp[n] = o_s[i,j,k,n]             # <<<<<<<<<<<<<<
- *             for n in range(nn):
- *                 i_s[ii,jj,n] = temp[n]
- */
+          if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_0_a;
+          if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_1_a;
+          if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_2_a;
+          if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_3_a;
           __pyx_t_20 = __pyx_v_i;
           __pyx_t_21 = __pyx_v_j;
           __pyx_t_22 = __pyx_v_k;
@@ -6108,7 +6212,24 @@
           if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_1_o_s;
           if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_2_o_s;
           if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_3_o_s;
-          (__pyx_v_temp[__pyx_v_n]) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_o_s.buf, __pyx_t_20, __pyx_bstride_0_o_s, __pyx_t_21, __pyx_bstride_1_o_s, __pyx_t_22, __pyx_bstride_2_o_s, __pyx_t_23, __pyx_bstride_3_o_s));
+          *__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_o_s.buf, __pyx_t_20, __pyx_bstride_0_o_s, __pyx_t_21, __pyx_bstride_1_o_s, __pyx_t_22, __pyx_bstride_2_o_s, __pyx_t_23, __pyx_bstride_3_o_s) = ((__pyx_v_temp[__pyx_v_n]) + (__pyx_v_dx * ((*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_e.buf, __pyx_t_12, __pyx_bstride_0_e, __pyx_t_13, __pyx_bstride_1_e, __pyx_t_14, __pyx_bstride_2_e, __pyx_t_15, __pyx_bstride_3_e)) - ((__pyx_v_temp[__pyx_v_n]) * (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_a.buf, __pyx_t_16, __pyx_bstride_0_a, __pyx_t_17, __pyx_bstride_1_a, __pyx_t_18, __pyx_bstride_2_a, __pyx_t_19, __pyx_bstride_3_a))))));
+
+          /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":68
+ *                 for n in range(nn):
+ *                     o_s[i,j,k,n] = temp[n] + dx*(e[i,j,k,n] - temp[n]*a[i,j,k,n])
+ *                     temp[n] = o_s[i,j,k,n]             # <<<<<<<<<<<<<<
+ *             for n in range(nn):
+ *                 i_s[ii,jj,n] = temp[n]
+ */
+          __pyx_t_24 = __pyx_v_i;
+          __pyx_t_25 = __pyx_v_j;
+          __pyx_t_26 = __pyx_v_k;
+          __pyx_t_27 = __pyx_v_n;
+          if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_0_o_s;
+          if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_1_o_s;
+          if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_2_o_s;
+          if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_3_o_s;
+          (__pyx_v_temp[__pyx_v_n]) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_o_s.buf, __pyx_t_24, __pyx_bstride_0_o_s, __pyx_t_25, __pyx_bstride_1_o_s, __pyx_t_26, __pyx_bstride_2_o_s, __pyx_t_27, __pyx_bstride_3_o_s));
         }
       }
 
@@ -6119,8 +6240,9 @@
  *                 i_s[ii,jj,n] = temp[n]
  *     free(temp)
  */
-      for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_v_nn; __pyx_t_3+=1) {
-        __pyx_v_n = __pyx_t_3;
+      __pyx_t_5 = __pyx_v_nn;
+      for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
+        __pyx_v_n = __pyx_t_6;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":70
  *                     temp[n] = o_s[i,j,k,n]
@@ -6129,13 +6251,13 @@
  *     free(temp)
  * 
  */
-        __pyx_t_7 = __pyx_v_ii;
-        __pyx_t_24 = __pyx_v_jj;
-        __pyx_t_25 = __pyx_v_n;
-        if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_bshape_0_i_s;
-        if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_1_i_s;
-        if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_2_i_s;
-        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_7, __pyx_bstride_0_i_s, __pyx_t_24, __pyx_bstride_1_i_s, __pyx_t_25, __pyx_bstride_2_i_s) = (__pyx_v_temp[__pyx_v_n]);
+        __pyx_t_10 = __pyx_v_ii;
+        __pyx_t_11 = __pyx_v_jj;
+        __pyx_t_28 = __pyx_v_n;
+        if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_bshape_0_i_s;
+        if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_1_i_s;
+        if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_2_i_s;
+        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_10, __pyx_bstride_0_i_s, __pyx_t_11, __pyx_bstride_1_i_s, __pyx_t_28, __pyx_bstride_2_i_s) = (__pyx_v_temp[__pyx_v_n]);
       }
     }
   }
@@ -6168,8 +6290,12 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_a);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_e);
   __pyx_L2:;
+  __Pyx_DECREF((PyObject *)__pyx_v_i_s);
+  __Pyx_DECREF((PyObject *)__pyx_v_o_s);
+  __Pyx_DECREF((PyObject *)__pyx_v_e);
+  __Pyx_DECREF((PyObject *)__pyx_v_a);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -6223,15 +6349,15 @@
   int __pyx_t_3;
   int __pyx_t_4;
   int __pyx_t_5;
-  long __pyx_t_6;
+  int __pyx_t_6;
   int __pyx_t_7;
   int __pyx_t_8;
   int __pyx_t_9;
-  int __pyx_t_10;
+  long __pyx_t_10;
   int __pyx_t_11;
-  long __pyx_t_12;
+  int __pyx_t_12;
   int __pyx_t_13;
-  long __pyx_t_14;
+  int __pyx_t_14;
   int __pyx_t_15;
   long __pyx_t_16;
   int __pyx_t_17;
@@ -6239,22 +6365,26 @@
   int __pyx_t_19;
   long __pyx_t_20;
   int __pyx_t_21;
-  int __pyx_t_22;
-  long __pyx_t_23;
-  int __pyx_t_24;
+  long __pyx_t_22;
+  int __pyx_t_23;
+  long __pyx_t_24;
   int __pyx_t_25;
-  long __pyx_t_26;
-  int __pyx_t_27;
+  int __pyx_t_26;
+  long __pyx_t_27;
   int __pyx_t_28;
-  long __pyx_t_29;
-  int __pyx_t_30;
+  int __pyx_t_29;
+  long __pyx_t_30;
   int __pyx_t_31;
-  long __pyx_t_32;
-  int __pyx_t_33;
+  int __pyx_t_32;
+  long __pyx_t_33;
   int __pyx_t_34;
-  long __pyx_t_35;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_i_s,&__pyx_kp_data,&__pyx_kp_shells,0};
-  __Pyx_SetupRefcountContext("TransferShells");
+  int __pyx_t_35;
+  long __pyx_t_36;
+  int __pyx_t_37;
+  int __pyx_t_38;
+  long __pyx_t_39;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__i_s,&__pyx_n_s__data,&__pyx_n_s__shells,0};
+  __Pyx_RefNannySetupContext("TransferShells");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -6268,24 +6398,24 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_i_s);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i_s);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_data);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__data);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TransferShells", 1, 3, 3, 1); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TransferShells", 1, 3, 3, 1); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_shells);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__shells);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("TransferShells", 1, 3, 3, 2); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("TransferShells", 1, 3, 3, 2); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "TransferShells") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "TransferShells") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_i_s = ((PyArrayObject *)values[0]);
     __pyx_v_data = ((PyArrayObject *)values[1]);
@@ -6299,32 +6429,35 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("TransferShells", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("TransferShells", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.TransferShells");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_i_s);
+  __Pyx_INCREF((PyObject *)__pyx_v_data);
+  __Pyx_INCREF((PyObject *)__pyx_v_shells);
   __pyx_bstruct_i_s.buf = NULL;
   __pyx_bstruct_data.buf = NULL;
   __pyx_bstruct_shells.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_i_s), __pyx_ptype_5numpy_ndarray, 1, "i_s", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shells), __pyx_ptype_5numpy_ndarray, 1, "shells", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_i_s), __pyx_ptype_5numpy_ndarray, 1, "i_s", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shells), __pyx_ptype_5numpy_ndarray, 1, "shells", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_i_s, (PyObject*)__pyx_v_i_s, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_i_s, (PyObject*)__pyx_v_i_s, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_i_s = __pyx_bstruct_i_s.strides[0]; __pyx_bstride_1_i_s = __pyx_bstruct_i_s.strides[1]; __pyx_bstride_2_i_s = __pyx_bstruct_i_s.strides[2];
   __pyx_bshape_0_i_s = __pyx_bstruct_i_s.shape[0]; __pyx_bshape_1_i_s = __pyx_bstruct_i_s.shape[1]; __pyx_bshape_2_i_s = __pyx_bstruct_i_s.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_data = __pyx_bstruct_data.strides[0]; __pyx_bstride_1_data = __pyx_bstruct_data.strides[1]; __pyx_bstride_2_data = __pyx_bstruct_data.strides[2];
   __pyx_bshape_0_data = __pyx_bstruct_data.shape[0]; __pyx_bshape_1_data = __pyx_bstruct_data.shape[1]; __pyx_bshape_2_data = __pyx_bstruct_data.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_shells, (PyObject*)__pyx_v_shells, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_shells, (PyObject*)__pyx_v_shells, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_shells = __pyx_bstruct_shells.strides[0]; __pyx_bstride_1_shells = __pyx_bstruct_shells.strides[1];
   __pyx_bshape_0_shells = __pyx_bstruct_shells.shape[0]; __pyx_bshape_1_shells = __pyx_bstruct_shells.shape[1];
@@ -6372,8 +6505,9 @@
  *         for j in range(jj):
  *             # Not sure about the ordering of the loops here
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_v_ii; __pyx_t_1+=1) {
-    __pyx_v_i = __pyx_t_1;
+  __pyx_t_1 = __pyx_v_ii;
+  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":93
  *     cdef float alpha
@@ -6382,8 +6516,9 @@
  *             # Not sure about the ordering of the loops here
  *             for k in range(kk):
  */
-    for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_v_jj; __pyx_t_2+=1) {
-      __pyx_v_j = __pyx_t_2;
+    __pyx_t_3 = __pyx_v_jj;
+    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
+      __pyx_v_j = __pyx_t_4;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":95
  *         for j in range(jj):
@@ -6392,8 +6527,9 @@
  *                 for n in range(nn):
  *                     dist = shells[n, 0] - data[i,j,k]
  */
-      for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_v_kk; __pyx_t_3+=1) {
-        __pyx_v_k = __pyx_t_3;
+      __pyx_t_5 = __pyx_v_kk;
+      for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
+        __pyx_v_k = __pyx_t_6;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":96
  *             # Not sure about the ordering of the loops here
@@ -6402,8 +6538,9 @@
  *                     dist = shells[n, 0] - data[i,j,k]
  *                     if dist < 0: dist *= -1.0
  */
-        for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_v_nn; __pyx_t_4+=1) {
-          __pyx_v_n = __pyx_t_4;
+        __pyx_t_7 = __pyx_v_nn;
+        for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+          __pyx_v_n = __pyx_t_8;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":97
  *             for k in range(kk):
@@ -6412,17 +6549,17 @@
  *                     if dist < 0: dist *= -1.0
  *                     if dist < shells[n,1]:
  */
-          __pyx_t_5 = __pyx_v_n;
-          __pyx_t_6 = 0;
-          if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_bshape_0_shells;
-          if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_bshape_1_shells;
-          __pyx_t_7 = __pyx_v_i;
-          __pyx_t_8 = __pyx_v_j;
-          __pyx_t_9 = __pyx_v_k;
-          if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_bshape_0_data;
-          if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_bshape_1_data;
-          if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_bshape_2_data;
-          __pyx_v_dist = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_5, __pyx_bstride_0_shells, __pyx_t_6, __pyx_bstride_1_shells)) - (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_data.buf, __pyx_t_7, __pyx_bstride_0_data, __pyx_t_8, __pyx_bstride_1_data, __pyx_t_9, __pyx_bstride_2_data)));
+          __pyx_t_9 = __pyx_v_n;
+          __pyx_t_10 = 0;
+          if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_bshape_0_shells;
+          if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_bshape_1_shells;
+          __pyx_t_11 = __pyx_v_i;
+          __pyx_t_12 = __pyx_v_j;
+          __pyx_t_13 = __pyx_v_k;
+          if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_0_data;
+          if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_1_data;
+          if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_2_data;
+          __pyx_v_dist = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_9, __pyx_bstride_0_shells, __pyx_t_10, __pyx_bstride_1_shells)) - (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_data.buf, __pyx_t_11, __pyx_bstride_0_data, __pyx_t_12, __pyx_bstride_1_data, __pyx_t_13, __pyx_bstride_2_data)));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":98
  *                 for n in range(nn):
@@ -6431,8 +6568,8 @@
  *                     if dist < shells[n,1]:
  *                         dist = exp(-dist/8.0)
  */
-          __pyx_t_10 = (__pyx_v_dist < 0);
-          if (__pyx_t_10) {
+          __pyx_t_14 = (__pyx_v_dist < 0);
+          if (__pyx_t_14) {
             __pyx_v_dist *= (-1.0);
             goto __pyx_L14;
           }
@@ -6445,12 +6582,12 @@
  *                         dist = exp(-dist/8.0)
  *                         rgba[0] = shells[n,2]
  */
-          __pyx_t_11 = __pyx_v_n;
-          __pyx_t_12 = 1;
-          if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_0_shells;
-          if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_1_shells;
-          __pyx_t_10 = (__pyx_v_dist < (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_11, __pyx_bstride_0_shells, __pyx_t_12, __pyx_bstride_1_shells)));
-          if (__pyx_t_10) {
+          __pyx_t_15 = __pyx_v_n;
+          __pyx_t_16 = 1;
+          if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_shells;
+          if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_1_shells;
+          __pyx_t_14 = (__pyx_v_dist < (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_15, __pyx_bstride_0_shells, __pyx_t_16, __pyx_bstride_1_shells)));
+          if (__pyx_t_14) {
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":100
  *                     if dist < 0: dist *= -1.0
@@ -6468,11 +6605,11 @@
  *                         rgba[1] = shells[n,3]
  *                         rgba[2] = shells[n,4]
  */
-            __pyx_t_13 = __pyx_v_n;
-            __pyx_t_14 = 2;
-            if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_0_shells;
-            if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_bshape_1_shells;
-            (__pyx_v_rgba[0]) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_13, __pyx_bstride_0_shells, __pyx_t_14, __pyx_bstride_1_shells));
+            __pyx_t_17 = __pyx_v_n;
+            __pyx_t_18 = 2;
+            if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_0_shells;
+            if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_1_shells;
+            (__pyx_v_rgba[0]) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_17, __pyx_bstride_0_shells, __pyx_t_18, __pyx_bstride_1_shells));
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":102
  *                         dist = exp(-dist/8.0)
@@ -6481,11 +6618,11 @@
  *                         rgba[2] = shells[n,4]
  *                         rgba[3] = shells[n,5]
  */
-            __pyx_t_15 = __pyx_v_n;
-            __pyx_t_16 = 3;
-            if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_shells;
-            if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_1_shells;
-            (__pyx_v_rgba[1]) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_15, __pyx_bstride_0_shells, __pyx_t_16, __pyx_bstride_1_shells));
+            __pyx_t_19 = __pyx_v_n;
+            __pyx_t_20 = 3;
+            if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_0_shells;
+            if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_1_shells;
+            (__pyx_v_rgba[1]) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_19, __pyx_bstride_0_shells, __pyx_t_20, __pyx_bstride_1_shells));
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":103
  *                         rgba[0] = shells[n,2]
@@ -6494,11 +6631,11 @@
  *                         rgba[3] = shells[n,5]
  *                         alpha = i_s[i,j,3]
  */
-            __pyx_t_17 = __pyx_v_n;
-            __pyx_t_18 = 4;
-            if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_0_shells;
-            if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_1_shells;
-            (__pyx_v_rgba[2]) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_17, __pyx_bstride_0_shells, __pyx_t_18, __pyx_bstride_1_shells));
+            __pyx_t_21 = __pyx_v_n;
+            __pyx_t_22 = 4;
+            if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_0_shells;
+            if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_1_shells;
+            (__pyx_v_rgba[2]) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_21, __pyx_bstride_0_shells, __pyx_t_22, __pyx_bstride_1_shells));
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":104
  *                         rgba[1] = shells[n,3]
@@ -6507,11 +6644,11 @@
  *                         alpha = i_s[i,j,3]
  *                         dist *= dist # This might improve appearance
  */
-            __pyx_t_19 = __pyx_v_n;
-            __pyx_t_20 = 5;
-            if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_0_shells;
-            if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_1_shells;
-            (__pyx_v_rgba[3]) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_19, __pyx_bstride_0_shells, __pyx_t_20, __pyx_bstride_1_shells));
+            __pyx_t_23 = __pyx_v_n;
+            __pyx_t_24 = 5;
+            if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_0_shells;
+            if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_1_shells;
+            (__pyx_v_rgba[3]) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_23, __pyx_bstride_0_shells, __pyx_t_24, __pyx_bstride_1_shells));
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":105
  *                         rgba[2] = shells[n,4]
@@ -6520,13 +6657,13 @@
  *                         dist *= dist # This might improve appearance
  *                         i_s[i,j,0] += (1.0 - alpha)*rgba[0]*dist*rgba[3]
  */
-            __pyx_t_21 = __pyx_v_i;
-            __pyx_t_22 = __pyx_v_j;
-            __pyx_t_23 = 3;
-            if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_0_i_s;
-            if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_1_i_s;
-            if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_2_i_s;
-            __pyx_v_alpha = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_21, __pyx_bstride_0_i_s, __pyx_t_22, __pyx_bstride_1_i_s, __pyx_t_23, __pyx_bstride_2_i_s));
+            __pyx_t_25 = __pyx_v_i;
+            __pyx_t_26 = __pyx_v_j;
+            __pyx_t_27 = 3;
+            if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_0_i_s;
+            if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_1_i_s;
+            if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_2_i_s;
+            __pyx_v_alpha = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_25, __pyx_bstride_0_i_s, __pyx_t_26, __pyx_bstride_1_i_s, __pyx_t_27, __pyx_bstride_2_i_s));
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":106
  *                         rgba[3] = shells[n,5]
@@ -6544,13 +6681,13 @@
  *                         i_s[i,j,1] += (1.0 - alpha)*rgba[1]*dist*rgba[3]
  *                         i_s[i,j,2] += (1.0 - alpha)*rgba[2]*dist*rgba[3]
  */
-            __pyx_t_24 = __pyx_v_i;
-            __pyx_t_25 = __pyx_v_j;
-            __pyx_t_26 = 0;
-            if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_0_i_s;
-            if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_1_i_s;
-            if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_2_i_s;
-            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_24, __pyx_bstride_0_i_s, __pyx_t_25, __pyx_bstride_1_i_s, __pyx_t_26, __pyx_bstride_2_i_s) += ((((1.0 - __pyx_v_alpha) * (__pyx_v_rgba[0])) * __pyx_v_dist) * (__pyx_v_rgba[3]));
+            __pyx_t_28 = __pyx_v_i;
+            __pyx_t_29 = __pyx_v_j;
+            __pyx_t_30 = 0;
+            if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_0_i_s;
+            if (__pyx_t_29 < 0) __pyx_t_29 += __pyx_bshape_1_i_s;
+            if (__pyx_t_30 < 0) __pyx_t_30 += __pyx_bshape_2_i_s;
+            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_28, __pyx_bstride_0_i_s, __pyx_t_29, __pyx_bstride_1_i_s, __pyx_t_30, __pyx_bstride_2_i_s) += ((((1.0 - __pyx_v_alpha) * (__pyx_v_rgba[0])) * __pyx_v_dist) * (__pyx_v_rgba[3]));
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":108
  *                         dist *= dist # This might improve appearance
@@ -6559,13 +6696,13 @@
  *                         i_s[i,j,2] += (1.0 - alpha)*rgba[2]*dist*rgba[3]
  *                         i_s[i,j,3] += (1.0 - alpha)*rgba[3]*dist*rgba[3]
  */
-            __pyx_t_27 = __pyx_v_i;
-            __pyx_t_28 = __pyx_v_j;
-            __pyx_t_29 = 1;
-            if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_0_i_s;
-            if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_1_i_s;
-            if (__pyx_t_29 < 0) __pyx_t_29 += __pyx_bshape_2_i_s;
-            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_27, __pyx_bstride_0_i_s, __pyx_t_28, __pyx_bstride_1_i_s, __pyx_t_29, __pyx_bstride_2_i_s) += ((((1.0 - __pyx_v_alpha) * (__pyx_v_rgba[1])) * __pyx_v_dist) * (__pyx_v_rgba[3]));
+            __pyx_t_31 = __pyx_v_i;
+            __pyx_t_32 = __pyx_v_j;
+            __pyx_t_33 = 1;
+            if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_bshape_0_i_s;
+            if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_bshape_1_i_s;
+            if (__pyx_t_33 < 0) __pyx_t_33 += __pyx_bshape_2_i_s;
+            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_31, __pyx_bstride_0_i_s, __pyx_t_32, __pyx_bstride_1_i_s, __pyx_t_33, __pyx_bstride_2_i_s) += ((((1.0 - __pyx_v_alpha) * (__pyx_v_rgba[1])) * __pyx_v_dist) * (__pyx_v_rgba[3]));
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":109
  *                         i_s[i,j,0] += (1.0 - alpha)*rgba[0]*dist*rgba[3]
@@ -6574,13 +6711,13 @@
  *                         i_s[i,j,3] += (1.0 - alpha)*rgba[3]*dist*rgba[3]
  *                         break
  */
-            __pyx_t_30 = __pyx_v_i;
-            __pyx_t_31 = __pyx_v_j;
-            __pyx_t_32 = 2;
-            if (__pyx_t_30 < 0) __pyx_t_30 += __pyx_bshape_0_i_s;
-            if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_bshape_1_i_s;
-            if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_bshape_2_i_s;
-            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_30, __pyx_bstride_0_i_s, __pyx_t_31, __pyx_bstride_1_i_s, __pyx_t_32, __pyx_bstride_2_i_s) += ((((1.0 - __pyx_v_alpha) * (__pyx_v_rgba[2])) * __pyx_v_dist) * (__pyx_v_rgba[3]));
+            __pyx_t_34 = __pyx_v_i;
+            __pyx_t_35 = __pyx_v_j;
+            __pyx_t_36 = 2;
+            if (__pyx_t_34 < 0) __pyx_t_34 += __pyx_bshape_0_i_s;
+            if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_bshape_1_i_s;
+            if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_bshape_2_i_s;
+            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_34, __pyx_bstride_0_i_s, __pyx_t_35, __pyx_bstride_1_i_s, __pyx_t_36, __pyx_bstride_2_i_s) += ((((1.0 - __pyx_v_alpha) * (__pyx_v_rgba[2])) * __pyx_v_dist) * (__pyx_v_rgba[3]));
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":110
  *                         i_s[i,j,1] += (1.0 - alpha)*rgba[1]*dist*rgba[3]
@@ -6589,13 +6726,13 @@
  *                         break
  * 
  */
-            __pyx_t_33 = __pyx_v_i;
-            __pyx_t_34 = __pyx_v_j;
-            __pyx_t_35 = 3;
-            if (__pyx_t_33 < 0) __pyx_t_33 += __pyx_bshape_0_i_s;
-            if (__pyx_t_34 < 0) __pyx_t_34 += __pyx_bshape_1_i_s;
-            if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_bshape_2_i_s;
-            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_33, __pyx_bstride_0_i_s, __pyx_t_34, __pyx_bstride_1_i_s, __pyx_t_35, __pyx_bstride_2_i_s) += ((((1.0 - __pyx_v_alpha) * (__pyx_v_rgba[3])) * __pyx_v_dist) * (__pyx_v_rgba[3]));
+            __pyx_t_37 = __pyx_v_i;
+            __pyx_t_38 = __pyx_v_j;
+            __pyx_t_39 = 3;
+            if (__pyx_t_37 < 0) __pyx_t_37 += __pyx_bshape_0_i_s;
+            if (__pyx_t_38 < 0) __pyx_t_38 += __pyx_bshape_1_i_s;
+            if (__pyx_t_39 < 0) __pyx_t_39 += __pyx_bshape_2_i_s;
+            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_i_s.buf, __pyx_t_37, __pyx_bstride_0_i_s, __pyx_t_38, __pyx_bstride_1_i_s, __pyx_t_39, __pyx_bstride_2_i_s) += ((((1.0 - __pyx_v_alpha) * (__pyx_v_rgba[3])) * __pyx_v_dist) * (__pyx_v_rgba[3]));
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":111
  *                         i_s[i,j,2] += (1.0 - alpha)*rgba[2]*dist*rgba[3]
@@ -6631,8 +6768,11 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_i_s);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_data);
   __pyx_L2:;
+  __Pyx_DECREF((PyObject *)__pyx_v_i_s);
+  __Pyx_DECREF((PyObject *)__pyx_v_data);
+  __Pyx_DECREF((PyObject *)__pyx_v_shells);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -6673,9 +6813,10 @@
   int __pyx_t_4;
   int __pyx_t_5;
   int __pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_i_s,&__pyx_kp_o_s,&__pyx_kp_e,&__pyx_kp_a,&__pyx_kp_dx,&__pyx_kp_imin,&__pyx_kp_imax,0};
-  __Pyx_SetupRefcountContext("Transfer1D");
+  int __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__i_s,&__pyx_n_s__o_s,&__pyx_n_s__e,&__pyx_n_s__a,&__pyx_n_s__dx,&__pyx_n_s__imin,&__pyx_n_s__imax,0};
+  __Pyx_RefNannySetupContext("Transfer1D");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -6693,103 +6834,107 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_i_s);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i_s);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_o_s);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__o_s);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 1); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 1); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_e);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 2); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 2); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_a);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__a);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 3); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 3); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dx);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dx);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 4); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 4); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_imin);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__imin);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 5); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 5); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_imax);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__imax);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 6); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, 6); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Transfer1D") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Transfer1D") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
-    __pyx_v_i_s = __pyx_PyFloat_AsDouble(values[0]); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_s = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_i_s == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_o_s = ((PyArrayObject *)values[1]);
     __pyx_v_e = ((PyArrayObject *)values[2]);
     __pyx_v_a = ((PyArrayObject *)values[3]);
     __pyx_v_dx = ((PyArrayObject *)values[4]);
-    __pyx_v_imin = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_imin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_imax = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_imax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_imin = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_imin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_imax = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_imax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
     goto __pyx_L5_argtuple_error;
   } else {
-    __pyx_v_i_s = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_i_s = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_i_s == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_o_s = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 1));
     __pyx_v_e = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 2));
     __pyx_v_a = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 3));
     __pyx_v_dx = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 4));
-    __pyx_v_imin = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_imin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_imax = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 6)); if (unlikely((__pyx_v_imax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_imin = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_imin == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_imax = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 6)); if (unlikely((__pyx_v_imax == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("Transfer1D", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.Transfer1D");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_o_s);
+  __Pyx_INCREF((PyObject *)__pyx_v_e);
+  __Pyx_INCREF((PyObject *)__pyx_v_a);
+  __Pyx_INCREF((PyObject *)__pyx_v_dx);
   __pyx_bstruct_o_s.buf = NULL;
   __pyx_bstruct_e.buf = NULL;
   __pyx_bstruct_a.buf = NULL;
   __pyx_bstruct_dx.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_o_s), __pyx_ptype_5numpy_ndarray, 1, "o_s", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_e), __pyx_ptype_5numpy_ndarray, 1, "e", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_a), __pyx_ptype_5numpy_ndarray, 1, "a", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_o_s), __pyx_ptype_5numpy_ndarray, 1, "o_s", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_e), __pyx_ptype_5numpy_ndarray, 1, "e", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_a), __pyx_ptype_5numpy_ndarray, 1, "a", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_o_s, (PyObject*)__pyx_v_o_s, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_o_s, (PyObject*)__pyx_v_o_s, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_o_s = __pyx_bstruct_o_s.strides[0];
   __pyx_bshape_0_o_s = __pyx_bstruct_o_s.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_e, (PyObject*)__pyx_v_e, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_e, (PyObject*)__pyx_v_e, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_e = __pyx_bstruct_e.strides[0];
   __pyx_bshape_0_e = __pyx_bstruct_e.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_a, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_a, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_a = __pyx_bstruct_a.strides[0];
   __pyx_bshape_0_a = __pyx_bstruct_a.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_dx = __pyx_bstruct_dx.strides[0];
   __pyx_bshape_0_dx = __pyx_bstruct_dx.shape[0];
@@ -6801,8 +6946,9 @@
  *         o_s[i] = i_s + dx[i]*(e[i] - i_s*a[i])
  *         i_s = o_s[i]
  */
-  for (__pyx_t_1 = __pyx_v_imin; __pyx_t_1 < __pyx_v_imax; __pyx_t_1+=1) {
-    __pyx_v_i = __pyx_t_1;
+  __pyx_t_1 = __pyx_v_imax;
+  for (__pyx_t_2 = __pyx_v_imin; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":122
  *     cdef int i
@@ -6811,15 +6957,15 @@
  *         i_s = o_s[i]
  *     return i_s
  */
-    __pyx_t_2 = __pyx_v_i;
-    if (__pyx_t_2 < 0) __pyx_t_2 += __pyx_bshape_0_dx;
     __pyx_t_3 = __pyx_v_i;
-    if (__pyx_t_3 < 0) __pyx_t_3 += __pyx_bshape_0_e;
+    if (__pyx_t_3 < 0) __pyx_t_3 += __pyx_bshape_0_dx;
     __pyx_t_4 = __pyx_v_i;
-    if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_bshape_0_a;
+    if (__pyx_t_4 < 0) __pyx_t_4 += __pyx_bshape_0_e;
     __pyx_t_5 = __pyx_v_i;
-    if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_bshape_0_o_s;
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_o_s.buf, __pyx_t_5, __pyx_bstride_0_o_s) = (__pyx_v_i_s + ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_dx.buf, __pyx_t_2, __pyx_bstride_0_dx)) * ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_e.buf, __pyx_t_3, __pyx_bstride_0_e)) - (__pyx_v_i_s * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_a.buf, __pyx_t_4, __pyx_bstride_0_a))))));
+    if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_bshape_0_a;
+    __pyx_t_6 = __pyx_v_i;
+    if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_bshape_0_o_s;
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_o_s.buf, __pyx_t_6, __pyx_bstride_0_o_s) = (__pyx_v_i_s + ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_dx.buf, __pyx_t_3, __pyx_bstride_0_dx)) * ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_e.buf, __pyx_t_4, __pyx_bstride_0_e)) - (__pyx_v_i_s * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_a.buf, __pyx_t_5, __pyx_bstride_0_a))))));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":123
  *     for i in range(imin, imax):
@@ -6828,9 +6974,9 @@
  *     return i_s
  * 
  */
-    __pyx_t_6 = __pyx_v_i;
-    if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_bshape_0_o_s;
-    __pyx_v_i_s = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_o_s.buf, __pyx_t_6, __pyx_bstride_0_o_s));
+    __pyx_t_7 = __pyx_v_i;
+    if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_bshape_0_o_s;
+    __pyx_v_i_s = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float_t *, __pyx_bstruct_o_s.buf, __pyx_t_7, __pyx_bstride_0_o_s));
   }
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":124
@@ -6841,16 +6987,16 @@
  * @cython.wraparound(False)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_i_s); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_r = __pyx_t_7;
-  __pyx_t_7 = 0;
+  __pyx_t_8 = PyFloat_FromDouble(__pyx_v_i_s); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_r = __pyx_t_8;
+  __pyx_t_8 = 0;
   goto __pyx_L0;
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_a);
@@ -6867,8 +7013,12 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_o_s);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_dx);
   __pyx_L2:;
+  __Pyx_DECREF((PyObject *)__pyx_v_o_s);
+  __Pyx_DECREF((PyObject *)__pyx_v_e);
+  __Pyx_DECREF((PyObject *)__pyx_v_a);
+  __Pyx_DECREF((PyObject *)__pyx_v_dx);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -6955,18 +7105,16 @@
   Py_ssize_t __pyx_bstride_0_v = 0;
   Py_ssize_t __pyx_bshape_0_v = 0;
   PyObject *__pyx_r = NULL;
-  PyObject *__pyx_1 = 0;
-  PyObject *__pyx_2 = 0;
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  PyArrayObject *__pyx_t_4 = NULL;
-  PyArrayObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
   PyArrayObject *__pyx_t_6 = NULL;
   PyArrayObject *__pyx_t_7 = NULL;
   PyArrayObject *__pyx_t_8 = NULL;
-  int __pyx_t_9;
-  int __pyx_t_10;
+  PyArrayObject *__pyx_t_9 = NULL;
+  PyArrayObject *__pyx_t_10 = NULL;
   int __pyx_t_11;
   int __pyx_t_12;
   int __pyx_t_13;
@@ -6974,12 +7122,12 @@
   int __pyx_t_15;
   int __pyx_t_16;
   int __pyx_t_17;
-  int __pyx_t_18;
+  __pyx_t_5numpy_float64_t __pyx_t_18;
   int __pyx_t_19;
-  int __pyx_t_20;
+  __pyx_t_5numpy_float64_t __pyx_t_20;
   int __pyx_t_21;
   int __pyx_t_22;
-  __pyx_t_5numpy_float64_t __pyx_t_23;
+  int __pyx_t_23;
   int __pyx_t_24;
   int __pyx_t_25;
   int __pyx_t_26;
@@ -6996,26 +7144,26 @@
   int __pyx_t_37;
   int __pyx_t_38;
   int __pyx_t_39;
-  long __pyx_t_40;
-  long __pyx_t_41;
-  long __pyx_t_42;
+  int __pyx_t_40;
+  int __pyx_t_41;
+  int __pyx_t_42;
   long __pyx_t_43;
   long __pyx_t_44;
   long __pyx_t_45;
   long __pyx_t_46;
   long __pyx_t_47;
   long __pyx_t_48;
-  PyObject *__pyx_t_49 = NULL;
-  PyObject *__pyx_t_50 = NULL;
-  PyObject *__pyx_t_51 = NULL;
-  int __pyx_t_52;
-  int __pyx_t_53;
-  int __pyx_t_54;
+  long __pyx_t_49;
+  long __pyx_t_50;
+  long __pyx_t_51;
+  PyObject *__pyx_t_52 = NULL;
+  PyObject *__pyx_t_53 = NULL;
+  PyObject *__pyx_t_54 = NULL;
   int __pyx_t_55;
-  __pyx_t_5numpy_int64_t __pyx_t_56;
+  int __pyx_t_56;
   int __pyx_t_57;
   int __pyx_t_58;
-  int __pyx_t_59;
+  __pyx_t_5numpy_int64_t __pyx_t_59;
   int __pyx_t_60;
   int __pyx_t_61;
   int __pyx_t_62;
@@ -7043,61 +7191,61 @@
   int __pyx_t_84;
   int __pyx_t_85;
   int __pyx_t_86;
-  long __pyx_t_87;
-  long __pyx_t_88;
-  long __pyx_t_89;
+  int __pyx_t_87;
+  int __pyx_t_88;
+  int __pyx_t_89;
   long __pyx_t_90;
   long __pyx_t_91;
   long __pyx_t_92;
-  __pyx_t_5numpy_int64_t __pyx_t_93;
-  __pyx_t_5numpy_int64_t __pyx_t_94;
+  long __pyx_t_93;
+  long __pyx_t_94;
   long __pyx_t_95;
-  long __pyx_t_96;
-  long __pyx_t_97;
+  __pyx_t_5numpy_int64_t __pyx_t_96;
+  __pyx_t_5numpy_int64_t __pyx_t_97;
   long __pyx_t_98;
   long __pyx_t_99;
   long __pyx_t_100;
-  __pyx_t_5numpy_int64_t __pyx_t_101;
-  __pyx_t_5numpy_int64_t __pyx_t_102;
-  __pyx_t_5numpy_int64_t __pyx_t_103;
-  long __pyx_t_104;
-  long __pyx_t_105;
-  long __pyx_t_106;
+  long __pyx_t_101;
+  long __pyx_t_102;
+  long __pyx_t_103;
+  __pyx_t_5numpy_int64_t __pyx_t_104;
+  __pyx_t_5numpy_int64_t __pyx_t_105;
+  __pyx_t_5numpy_int64_t __pyx_t_106;
   long __pyx_t_107;
   long __pyx_t_108;
   long __pyx_t_109;
   long __pyx_t_110;
-  __pyx_t_5numpy_int64_t __pyx_t_111;
-  __pyx_t_5numpy_int64_t __pyx_t_112;
-  __pyx_t_5numpy_int64_t __pyx_t_113;
-  long __pyx_t_114;
-  long __pyx_t_115;
-  long __pyx_t_116;
+  long __pyx_t_111;
+  long __pyx_t_112;
+  long __pyx_t_113;
+  __pyx_t_5numpy_int64_t __pyx_t_114;
+  __pyx_t_5numpy_int64_t __pyx_t_115;
+  __pyx_t_5numpy_int64_t __pyx_t_116;
   long __pyx_t_117;
-  __pyx_t_5numpy_int64_t __pyx_t_118;
-  __pyx_t_5numpy_int64_t __pyx_t_119;
-  __pyx_t_5numpy_int64_t __pyx_t_120;
-  long __pyx_t_121;
-  long __pyx_t_122;
-  long __pyx_t_123;
+  long __pyx_t_118;
+  long __pyx_t_119;
+  long __pyx_t_120;
+  __pyx_t_5numpy_int64_t __pyx_t_121;
+  __pyx_t_5numpy_int64_t __pyx_t_122;
+  __pyx_t_5numpy_int64_t __pyx_t_123;
   long __pyx_t_124;
   long __pyx_t_125;
   long __pyx_t_126;
   long __pyx_t_127;
   long __pyx_t_128;
-  __pyx_t_5numpy_int64_t __pyx_t_129;
-  __pyx_t_5numpy_int64_t __pyx_t_130;
-  __pyx_t_5numpy_int64_t __pyx_t_131;
-  long __pyx_t_132;
-  long __pyx_t_133;
-  long __pyx_t_134;
+  long __pyx_t_129;
+  long __pyx_t_130;
+  long __pyx_t_131;
+  __pyx_t_5numpy_int64_t __pyx_t_132;
+  __pyx_t_5numpy_int64_t __pyx_t_133;
+  __pyx_t_5numpy_int64_t __pyx_t_134;
   long __pyx_t_135;
-  __pyx_t_5numpy_int64_t __pyx_t_136;
-  __pyx_t_5numpy_int64_t __pyx_t_137;
-  __pyx_t_5numpy_int64_t __pyx_t_138;
-  long __pyx_t_139;
-  long __pyx_t_140;
-  long __pyx_t_141;
+  long __pyx_t_136;
+  long __pyx_t_137;
+  long __pyx_t_138;
+  __pyx_t_5numpy_int64_t __pyx_t_139;
+  __pyx_t_5numpy_int64_t __pyx_t_140;
+  __pyx_t_5numpy_int64_t __pyx_t_141;
   long __pyx_t_142;
   long __pyx_t_143;
   long __pyx_t_144;
@@ -7105,41 +7253,44 @@
   long __pyx_t_146;
   long __pyx_t_147;
   long __pyx_t_148;
-  __pyx_t_5numpy_int64_t __pyx_t_149;
-  __pyx_t_5numpy_int64_t __pyx_t_150;
-  __pyx_t_5numpy_int64_t __pyx_t_151;
-  long __pyx_t_152;
-  long __pyx_t_153;
-  long __pyx_t_154;
+  long __pyx_t_149;
+  long __pyx_t_150;
+  long __pyx_t_151;
+  __pyx_t_5numpy_int64_t __pyx_t_152;
+  __pyx_t_5numpy_int64_t __pyx_t_153;
+  __pyx_t_5numpy_int64_t __pyx_t_154;
   long __pyx_t_155;
-  __pyx_t_5numpy_int64_t __pyx_t_156;
-  __pyx_t_5numpy_int64_t __pyx_t_157;
-  __pyx_t_5numpy_int64_t __pyx_t_158;
-  long __pyx_t_159;
-  long __pyx_t_160;
-  long __pyx_t_161;
+  long __pyx_t_156;
+  long __pyx_t_157;
+  long __pyx_t_158;
+  __pyx_t_5numpy_int64_t __pyx_t_159;
+  __pyx_t_5numpy_int64_t __pyx_t_160;
+  __pyx_t_5numpy_int64_t __pyx_t_161;
   long __pyx_t_162;
   long __pyx_t_163;
   long __pyx_t_164;
   long __pyx_t_165;
   long __pyx_t_166;
-  __pyx_t_5numpy_int64_t __pyx_t_167;
-  __pyx_t_5numpy_int64_t __pyx_t_168;
-  __pyx_t_5numpy_int64_t __pyx_t_169;
-  long __pyx_t_170;
-  long __pyx_t_171;
-  long __pyx_t_172;
+  long __pyx_t_167;
+  long __pyx_t_168;
+  long __pyx_t_169;
+  __pyx_t_5numpy_int64_t __pyx_t_170;
+  __pyx_t_5numpy_int64_t __pyx_t_171;
+  __pyx_t_5numpy_int64_t __pyx_t_172;
   long __pyx_t_173;
-  __pyx_t_5numpy_int64_t __pyx_t_174;
-  __pyx_t_5numpy_int64_t __pyx_t_175;
-  __pyx_t_5numpy_int64_t __pyx_t_176;
-  long __pyx_t_177;
-  long __pyx_t_178;
-  long __pyx_t_179;
+  long __pyx_t_174;
+  long __pyx_t_175;
+  long __pyx_t_176;
+  __pyx_t_5numpy_int64_t __pyx_t_177;
+  __pyx_t_5numpy_int64_t __pyx_t_178;
+  __pyx_t_5numpy_int64_t __pyx_t_179;
   long __pyx_t_180;
   long __pyx_t_181;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_grid_mask,&__pyx_kp_grid_t,&__pyx_kp_grid_dt,&__pyx_kp_left_edge,&__pyx_kp_right_edge,&__pyx_kp_dx,&__pyx_kp_u,&__pyx_kp_v,0};
-  __Pyx_SetupRefcountContext("VoxelTraversal");
+  long __pyx_t_182;
+  long __pyx_t_183;
+  long __pyx_t_184;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__grid_mask,&__pyx_n_s__grid_t,&__pyx_n_s__grid_dt,&__pyx_n_s__left_edge,&__pyx_n_s__right_edge,&__pyx_n_s__dx,&__pyx_n_s__u,&__pyx_n_s__v,0};
+  __Pyx_RefNannySetupContext("VoxelTraversal");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -7158,54 +7309,54 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_grid_mask);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grid_mask);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_grid_t);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grid_t);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 1); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 1); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_grid_dt);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grid_dt);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 2); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 2); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_left_edge);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left_edge);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 3); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 3); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_right_edge);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right_edge);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 4); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 4); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dx);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dx);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 5); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 5); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_u);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__u);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 6); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 6); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
-      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_kp_v);
+      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__v);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 7); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, 7); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "VoxelTraversal") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "VoxelTraversal") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_grid_mask = ((PyArrayObject *)values[0]);
     __pyx_v_grid_t = ((PyArrayObject *)values[1]);
@@ -7229,11 +7380,19 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("VoxelTraversal", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.VoxelTraversal");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_grid_mask);
+  __Pyx_INCREF((PyObject *)__pyx_v_grid_t);
+  __Pyx_INCREF((PyObject *)__pyx_v_grid_dt);
+  __Pyx_INCREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_dx);
+  __Pyx_INCREF((PyObject *)__pyx_v_u);
+  __Pyx_INCREF((PyObject *)__pyx_v_v);
   __pyx_bstruct_step.buf = NULL;
   __pyx_bstruct_cur_ind.buf = NULL;
   __pyx_bstruct_tdelta.buf = NULL;
@@ -7247,59 +7406,59 @@
   __pyx_bstruct_dx.buf = NULL;
   __pyx_bstruct_u.buf = NULL;
   __pyx_bstruct_v.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_mask), __pyx_ptype_5numpy_ndarray, 1, "grid_mask", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_t), __pyx_ptype_5numpy_ndarray, 1, "grid_t", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_dt), __pyx_ptype_5numpy_ndarray, 1, "grid_dt", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_5numpy_ndarray, 1, "v", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_mask), __pyx_ptype_5numpy_ndarray, 1, "grid_mask", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_t), __pyx_ptype_5numpy_ndarray, 1, "grid_t", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_dt), __pyx_ptype_5numpy_ndarray, 1, "grid_dt", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_5numpy_ndarray, 1, "v", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_mask, (PyObject*)__pyx_v_grid_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_mask, (PyObject*)__pyx_v_grid_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_grid_mask = __pyx_bstruct_grid_mask.strides[0]; __pyx_bstride_1_grid_mask = __pyx_bstruct_grid_mask.strides[1]; __pyx_bstride_2_grid_mask = __pyx_bstruct_grid_mask.strides[2];
   __pyx_bshape_0_grid_mask = __pyx_bstruct_grid_mask.shape[0]; __pyx_bshape_1_grid_mask = __pyx_bstruct_grid_mask.shape[1]; __pyx_bshape_2_grid_mask = __pyx_bstruct_grid_mask.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_t, (PyObject*)__pyx_v_grid_t, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_t, (PyObject*)__pyx_v_grid_t, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_grid_t = __pyx_bstruct_grid_t.strides[0]; __pyx_bstride_1_grid_t = __pyx_bstruct_grid_t.strides[1]; __pyx_bstride_2_grid_t = __pyx_bstruct_grid_t.strides[2];
   __pyx_bshape_0_grid_t = __pyx_bstruct_grid_t.shape[0]; __pyx_bshape_1_grid_t = __pyx_bstruct_grid_t.shape[1]; __pyx_bshape_2_grid_t = __pyx_bstruct_grid_t.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_dt, (PyObject*)__pyx_v_grid_dt, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_dt, (PyObject*)__pyx_v_grid_dt, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_grid_dt = __pyx_bstruct_grid_dt.strides[0]; __pyx_bstride_1_grid_dt = __pyx_bstruct_grid_dt.strides[1]; __pyx_bstride_2_grid_dt = __pyx_bstruct_grid_dt.strides[2];
   __pyx_bshape_0_grid_dt = __pyx_bstruct_grid_dt.shape[0]; __pyx_bshape_1_grid_dt = __pyx_bstruct_grid_dt.shape[1]; __pyx_bshape_2_grid_dt = __pyx_bstruct_grid_dt.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_left_edge = __pyx_bstruct_left_edge.strides[0];
   __pyx_bshape_0_left_edge = __pyx_bstruct_left_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_right_edge = __pyx_bstruct_right_edge.strides[0];
   __pyx_bshape_0_right_edge = __pyx_bstruct_right_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_dx = __pyx_bstruct_dx.strides[0];
   __pyx_bshape_0_dx = __pyx_bstruct_dx.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_u, (PyObject*)__pyx_v_u, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_u, (PyObject*)__pyx_v_u, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_u = __pyx_bstruct_u.strides[0];
   __pyx_bshape_0_u = __pyx_bstruct_u.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_v, (PyObject*)__pyx_v_v, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_v, (PyObject*)__pyx_v_v, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_v = __pyx_bstruct_v.strides[0];
   __pyx_bshape_0_v = __pyx_bstruct_v.shape[0];
@@ -7311,49 +7470,49 @@
  *     cdef np.ndarray[np.int64_t,   ndim=1] cur_ind = np.empty((3,), dtype=np.int64)
  *     cdef np.ndarray[np.float64_t, ndim=1] tdelta = np.empty((3,), dtype=np.float64)
  */
-  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
   __Pyx_INCREF(__pyx_int_3);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_3);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
-  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
-  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
-  __pyx_t_2 = 0;
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_1));
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_2, __pyx_kp_35); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__int64); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = ((PyArrayObject *)__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_step, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_step, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_step = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_step.buf = NULL;
-      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_step = __pyx_bstruct_step.strides[0];
       __pyx_bshape_0_step = __pyx_bstruct_step.shape[0];
     }
   }
-  __pyx_t_4 = 0;
-  __pyx_v_step = ((PyArrayObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
+  __pyx_t_6 = 0;
+  __pyx_v_step = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":142
  *     cdef np.float64_t tl, tr, intersect_t, enter_t, exit_t, dt_tolerance
@@ -7362,49 +7521,49 @@
  *     cdef np.ndarray[np.float64_t, ndim=1] tdelta = np.empty((3,), dtype=np.float64)
  *     cdef np.ndarray[np.float64_t, ndim=1] tmax = np.empty((3,), dtype=np.float64)
  */
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_2, __pyx_kp_empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_int_3);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_3));
-  __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
-  __pyx_t_3 = 0;
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_1));
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_35); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__int64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = ((PyArrayObject *)__pyx_t_3);
+  if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__dtype), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_3, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = ((PyArrayObject *)__pyx_t_4);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_cur_ind, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_cur_ind, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_cur_ind = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_cur_ind.buf = NULL;
-      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_cur_ind = __pyx_bstruct_cur_ind.strides[0];
       __pyx_bshape_0_cur_ind = __pyx_bstruct_cur_ind.shape[0];
     }
   }
-  __pyx_t_5 = 0;
-  __pyx_v_cur_ind = ((PyArrayObject *)__pyx_t_3);
-  __pyx_t_3 = 0;
+  __pyx_t_7 = 0;
+  __pyx_v_cur_ind = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":143
  *     cdef np.ndarray[np.int64_t,   ndim=1] step = np.empty((3,), dtype=np.int64)
@@ -7413,49 +7572,49 @@
  *     cdef np.ndarray[np.float64_t, ndim=1] tmax = np.empty((3,), dtype=np.float64)
  *     cdef np.ndarray[np.float64_t, ndim=1] intersect = np.empty((3,), dtype=np.float64)
  */
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_int_3);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_3);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
-  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
-  __pyx_t_1 = 0;
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_1));
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_36); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_t_4 = 0;
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__float64); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_5, __pyx_t_3, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = ((PyArrayObject *)__pyx_t_2);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_tdelta, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_tdelta, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_tdelta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_tdelta.buf = NULL;
-      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_tdelta = __pyx_bstruct_tdelta.strides[0];
       __pyx_bshape_0_tdelta = __pyx_bstruct_tdelta.shape[0];
     }
   }
-  __pyx_t_6 = 0;
-  __pyx_v_tdelta = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
+  __pyx_t_8 = 0;
+  __pyx_v_tdelta = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_2 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":144
  *     cdef np.ndarray[np.int64_t,   ndim=1] cur_ind = np.empty((3,), dtype=np.int64)
@@ -7464,49 +7623,49 @@
  *     cdef np.ndarray[np.float64_t, ndim=1] intersect = np.empty((3,), dtype=np.float64)
  *     intersect_t = 1
  */
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_2, __pyx_kp_empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_int_3);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
-  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
-  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_1));
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_2, __pyx_kp_36); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float64); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_1 = PyEval_CallObjectWithKeywords(__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_tmax, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_tmax, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_tmax = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_tmax.buf = NULL;
-      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_tmax = __pyx_bstruct_tmax.strides[0];
       __pyx_bshape_0_tmax = __pyx_bstruct_tmax.shape[0];
     }
   }
-  __pyx_t_7 = 0;
-  __pyx_v_tmax = ((PyArrayObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
+  __pyx_t_9 = 0;
+  __pyx_v_tmax = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":145
  *     cdef np.ndarray[np.float64_t, ndim=1] tdelta = np.empty((3,), dtype=np.float64)
@@ -7515,49 +7674,49 @@
  *     intersect_t = 1
  *     dt_tolerance = 1e-6
  */
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_2, __pyx_kp_empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_int_3);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_3);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_3));
-  __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
-  __pyx_t_3 = 0;
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_1));
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_36); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float64); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_8 = ((PyArrayObject *)__pyx_t_3);
+  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = ((PyArrayObject *)__pyx_t_5);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_intersect, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_intersect, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_intersect = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_intersect.buf = NULL;
-      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_intersect = __pyx_bstruct_intersect.strides[0];
       __pyx_bshape_0_intersect = __pyx_bstruct_intersect.shape[0];
     }
   }
-  __pyx_t_8 = 0;
-  __pyx_v_intersect = ((PyArrayObject *)__pyx_t_3);
-  __pyx_t_3 = 0;
+  __pyx_t_10 = 0;
+  __pyx_v_intersect = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":146
  *     cdef np.ndarray[np.float64_t, ndim=1] tmax = np.empty((3,), dtype=np.float64)
@@ -7584,8 +7743,8 @@
  *         # As long as we're iterating, set some other stuff, too
  *         if(v[i] < 0): step[i] = -1
  */
-  for (__pyx_t_9 = 0; __pyx_t_9 < 3; __pyx_t_9+=1) {
-    __pyx_v_i = __pyx_t_9;
+  for (__pyx_t_11 = 0; __pyx_t_11 < 3; __pyx_t_11+=1) {
+    __pyx_v_i = __pyx_t_11;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":152
  *     for i in range(3):
@@ -7594,11 +7753,11 @@
  *         else: step[i] = 1
  *         x = (i+1)%3
  */
-    __pyx_t_10 = __pyx_v_i;
-    __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_10, __pyx_bstride_0_v)) < 0);
-    if (__pyx_t_11) {
-      __pyx_t_12 = __pyx_v_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_12, __pyx_bstride_0_step) = -1;
+    __pyx_t_12 = __pyx_v_i;
+    __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_12, __pyx_bstride_0_v)) < 0);
+    if (__pyx_t_13) {
+      __pyx_t_14 = __pyx_v_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_14, __pyx_bstride_0_step) = -1;
       goto __pyx_L8;
     }
     /*else*/ {
@@ -7610,8 +7769,8 @@
  *         x = (i+1)%3
  *         y = (i+2)%3
  */
-      __pyx_t_13 = __pyx_v_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_13, __pyx_bstride_0_step) = 1;
+      __pyx_t_15 = __pyx_v_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_15, __pyx_bstride_0_step) = 1;
     }
     __pyx_L8:;
 
@@ -7622,7 +7781,7 @@
  *         y = (i+2)%3
  *         tl = (left_edge[i] - u[i])/v[i]
  */
-    __pyx_v_x = ((__pyx_v_i + 1) % 3);
+    __pyx_v_x = __Pyx_mod_long((__pyx_v_i + 1), 3);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":155
  *         else: step[i] = 1
@@ -7631,7 +7790,7 @@
  *         tl = (left_edge[i] - u[i])/v[i]
  *         tr = (right_edge[i] - u[i])/v[i]
  */
-    __pyx_v_y = ((__pyx_v_i + 2) % 3);
+    __pyx_v_y = __Pyx_mod_long((__pyx_v_i + 2), 3);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":156
  *         x = (i+1)%3
@@ -7640,10 +7799,16 @@
  *         tr = (right_edge[i] - u[i])/v[i]
  *         if (left_edge[x] <= (u[x] + tl*v[x]) <= right_edge[x]) and \
  */
-    __pyx_t_14 = __pyx_v_i;
-    __pyx_t_15 = __pyx_v_i;
     __pyx_t_16 = __pyx_v_i;
-    __pyx_v_tl = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_14, __pyx_bstride_0_left_edge)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_15, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_16, __pyx_bstride_0_v)));
+    __pyx_t_17 = __pyx_v_i;
+    __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_16, __pyx_bstride_0_left_edge)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_17, __pyx_bstride_0_u)));
+    __pyx_t_19 = __pyx_v_i;
+    __pyx_t_20 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_19, __pyx_bstride_0_v));
+    if (unlikely(__pyx_t_20 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_tl = (__pyx_t_18 / __pyx_t_20);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":157
  *         y = (i+2)%3
@@ -7652,10 +7817,16 @@
  *         if (left_edge[x] <= (u[x] + tl*v[x]) <= right_edge[x]) and \
  *            (left_edge[y] <= (u[y] + tl*v[y]) <= right_edge[y]) and \
  */
-    __pyx_t_17 = __pyx_v_i;
-    __pyx_t_18 = __pyx_v_i;
-    __pyx_t_19 = __pyx_v_i;
-    __pyx_v_tr = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_17, __pyx_bstride_0_right_edge)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_18, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_19, __pyx_bstride_0_v)));
+    __pyx_t_21 = __pyx_v_i;
+    __pyx_t_22 = __pyx_v_i;
+    __pyx_t_20 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_21, __pyx_bstride_0_right_edge)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_22, __pyx_bstride_0_u)));
+    __pyx_t_23 = __pyx_v_i;
+    __pyx_t_18 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_23, __pyx_bstride_0_v));
+    if (unlikely(__pyx_t_18 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_tr = (__pyx_t_20 / __pyx_t_18);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":158
  *         tl = (left_edge[i] - u[i])/v[i]
@@ -7664,16 +7835,16 @@
  *            (left_edge[y] <= (u[y] + tl*v[y]) <= right_edge[y]) and \
  *            (0.0 <= tl < intersect_t):
  */
-    __pyx_t_20 = __pyx_v_x;
-    __pyx_t_21 = __pyx_v_x;
-    __pyx_t_22 = __pyx_v_x;
-    __pyx_t_23 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_21, __pyx_bstride_0_u)) + (__pyx_v_tl * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_22, __pyx_bstride_0_v))));
-    __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_20, __pyx_bstride_0_left_edge)) <= __pyx_t_23);
-    if (__pyx_t_11) {
-      __pyx_t_24 = __pyx_v_x;
-      __pyx_t_11 = (__pyx_t_23 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_24, __pyx_bstride_0_right_edge)));
+    __pyx_t_24 = __pyx_v_x;
+    __pyx_t_25 = __pyx_v_x;
+    __pyx_t_26 = __pyx_v_x;
+    __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_25, __pyx_bstride_0_u)) + (__pyx_v_tl * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_26, __pyx_bstride_0_v))));
+    __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_24, __pyx_bstride_0_left_edge)) <= __pyx_t_18);
+    if (__pyx_t_13) {
+      __pyx_t_27 = __pyx_v_x;
+      __pyx_t_13 = (__pyx_t_18 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_27, __pyx_bstride_0_right_edge)));
     }
-    if (__pyx_t_11) {
+    if (__pyx_t_13) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":159
  *         tr = (right_edge[i] - u[i])/v[i]
@@ -7682,16 +7853,16 @@
  *            (0.0 <= tl < intersect_t):
  *             intersect_t = tl
  */
-      __pyx_t_25 = __pyx_v_y;
-      __pyx_t_26 = __pyx_v_y;
-      __pyx_t_27 = __pyx_v_y;
-      __pyx_t_23 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_26, __pyx_bstride_0_u)) + (__pyx_v_tl * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_27, __pyx_bstride_0_v))));
-      __pyx_t_28 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_25, __pyx_bstride_0_left_edge)) <= __pyx_t_23);
-      if (__pyx_t_28) {
-        __pyx_t_29 = __pyx_v_y;
-        __pyx_t_28 = (__pyx_t_23 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_29, __pyx_bstride_0_right_edge)));
+      __pyx_t_28 = __pyx_v_y;
+      __pyx_t_29 = __pyx_v_y;
+      __pyx_t_30 = __pyx_v_y;
+      __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_29, __pyx_bstride_0_u)) + (__pyx_v_tl * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_30, __pyx_bstride_0_v))));
+      __pyx_t_31 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_28, __pyx_bstride_0_left_edge)) <= __pyx_t_18);
+      if (__pyx_t_31) {
+        __pyx_t_32 = __pyx_v_y;
+        __pyx_t_31 = (__pyx_t_18 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_32, __pyx_bstride_0_right_edge)));
       }
-      if (__pyx_t_28) {
+      if (__pyx_t_31) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":160
  *         if (left_edge[x] <= (u[x] + tl*v[x]) <= right_edge[x]) and \
@@ -7700,19 +7871,19 @@
  *             intersect_t = tl
  *         if (left_edge[x] <= (u[x] + tr*v[x]) <= right_edge[x]) and \
  */
-        __pyx_t_30 = (0.0 <= __pyx_v_tl);
-        if (__pyx_t_30) {
-          __pyx_t_30 = (__pyx_v_tl < __pyx_v_intersect_t);
+        __pyx_t_33 = (0.0 <= __pyx_v_tl);
+        if (__pyx_t_33) {
+          __pyx_t_33 = (__pyx_v_tl < __pyx_v_intersect_t);
         }
-        __pyx_t_31 = __pyx_t_30;
+        __pyx_t_34 = __pyx_t_33;
       } else {
-        __pyx_t_31 = __pyx_t_28;
+        __pyx_t_34 = __pyx_t_31;
       }
-      __pyx_t_28 = __pyx_t_31;
+      __pyx_t_31 = __pyx_t_34;
     } else {
-      __pyx_t_28 = __pyx_t_11;
+      __pyx_t_31 = __pyx_t_13;
     }
-    if (__pyx_t_28) {
+    if (__pyx_t_31) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":161
  *            (left_edge[y] <= (u[y] + tl*v[y]) <= right_edge[y]) and \
@@ -7733,16 +7904,16 @@
  *            (left_edge[y] <= (u[y] + tr*v[y]) <= right_edge[y]) and \
  *            (0.0 <= tr < intersect_t):
  */
-    __pyx_t_32 = __pyx_v_x;
-    __pyx_t_33 = __pyx_v_x;
-    __pyx_t_34 = __pyx_v_x;
-    __pyx_t_23 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_33, __pyx_bstride_0_u)) + (__pyx_v_tr * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_34, __pyx_bstride_0_v))));
-    __pyx_t_28 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_32, __pyx_bstride_0_left_edge)) <= __pyx_t_23);
-    if (__pyx_t_28) {
-      __pyx_t_35 = __pyx_v_x;
-      __pyx_t_28 = (__pyx_t_23 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_35, __pyx_bstride_0_right_edge)));
+    __pyx_t_35 = __pyx_v_x;
+    __pyx_t_36 = __pyx_v_x;
+    __pyx_t_37 = __pyx_v_x;
+    __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_36, __pyx_bstride_0_u)) + (__pyx_v_tr * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_37, __pyx_bstride_0_v))));
+    __pyx_t_31 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_35, __pyx_bstride_0_left_edge)) <= __pyx_t_18);
+    if (__pyx_t_31) {
+      __pyx_t_38 = __pyx_v_x;
+      __pyx_t_31 = (__pyx_t_18 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_38, __pyx_bstride_0_right_edge)));
     }
-    if (__pyx_t_28) {
+    if (__pyx_t_31) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":163
  *             intersect_t = tl
@@ -7751,16 +7922,16 @@
  *            (0.0 <= tr < intersect_t):
  *             intersect_t = tr
  */
-      __pyx_t_36 = __pyx_v_y;
-      __pyx_t_37 = __pyx_v_y;
-      __pyx_t_38 = __pyx_v_y;
-      __pyx_t_23 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_37, __pyx_bstride_0_u)) + (__pyx_v_tr * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_38, __pyx_bstride_0_v))));
-      __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_36, __pyx_bstride_0_left_edge)) <= __pyx_t_23);
-      if (__pyx_t_11) {
-        __pyx_t_39 = __pyx_v_y;
-        __pyx_t_11 = (__pyx_t_23 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_39, __pyx_bstride_0_right_edge)));
+      __pyx_t_39 = __pyx_v_y;
+      __pyx_t_40 = __pyx_v_y;
+      __pyx_t_41 = __pyx_v_y;
+      __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_40, __pyx_bstride_0_u)) + (__pyx_v_tr * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_41, __pyx_bstride_0_v))));
+      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_39, __pyx_bstride_0_left_edge)) <= __pyx_t_18);
+      if (__pyx_t_13) {
+        __pyx_t_42 = __pyx_v_y;
+        __pyx_t_13 = (__pyx_t_18 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_42, __pyx_bstride_0_right_edge)));
       }
-      if (__pyx_t_11) {
+      if (__pyx_t_13) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":164
  *         if (left_edge[x] <= (u[x] + tr*v[x]) <= right_edge[x]) and \
@@ -7769,19 +7940,19 @@
  *             intersect_t = tr
  *     # if fully enclosed
  */
-        __pyx_t_31 = (0.0 <= __pyx_v_tr);
-        if (__pyx_t_31) {
-          __pyx_t_31 = (__pyx_v_tr < __pyx_v_intersect_t);
+        __pyx_t_34 = (0.0 <= __pyx_v_tr);
+        if (__pyx_t_34) {
+          __pyx_t_34 = (__pyx_v_tr < __pyx_v_intersect_t);
         }
-        __pyx_t_30 = __pyx_t_31;
+        __pyx_t_33 = __pyx_t_34;
       } else {
-        __pyx_t_30 = __pyx_t_11;
+        __pyx_t_33 = __pyx_t_13;
       }
-      __pyx_t_11 = __pyx_t_30;
+      __pyx_t_13 = __pyx_t_33;
     } else {
-      __pyx_t_11 = __pyx_t_28;
+      __pyx_t_13 = __pyx_t_31;
     }
-    if (__pyx_t_11) {
+    if (__pyx_t_13) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":165
  *            (left_edge[y] <= (u[y] + tr*v[y]) <= right_edge[y]) and \
@@ -7803,15 +7974,15 @@
  *        (left_edge[1] <= u[1] <= right_edge[1]) and \
  *        (left_edge[2] <= u[2] <= right_edge[2]):
  */
-  __pyx_t_40 = 0;
-  __pyx_t_41 = 0;
-  __pyx_t_23 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_41, __pyx_bstride_0_u));
-  __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_40, __pyx_bstride_0_left_edge)) <= __pyx_t_23);
-  if (__pyx_t_11) {
-    __pyx_t_42 = 0;
-    __pyx_t_11 = (__pyx_t_23 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_42, __pyx_bstride_0_right_edge)));
+  __pyx_t_43 = 0;
+  __pyx_t_44 = 0;
+  __pyx_t_18 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_44, __pyx_bstride_0_u));
+  __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_43, __pyx_bstride_0_left_edge)) <= __pyx_t_18);
+  if (__pyx_t_13) {
+    __pyx_t_45 = 0;
+    __pyx_t_13 = (__pyx_t_18 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_45, __pyx_bstride_0_right_edge)));
   }
-  if (__pyx_t_11) {
+  if (__pyx_t_13) {
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":168
  *     # if fully enclosed
@@ -7820,15 +7991,15 @@
  *        (left_edge[2] <= u[2] <= right_edge[2]):
  *         intersect_t = 0.0
  */
-    __pyx_t_43 = 1;
-    __pyx_t_44 = 1;
-    __pyx_t_23 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_44, __pyx_bstride_0_u));
-    __pyx_t_28 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_43, __pyx_bstride_0_left_edge)) <= __pyx_t_23);
-    if (__pyx_t_28) {
-      __pyx_t_45 = 1;
-      __pyx_t_28 = (__pyx_t_23 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_45, __pyx_bstride_0_right_edge)));
+    __pyx_t_46 = 1;
+    __pyx_t_47 = 1;
+    __pyx_t_18 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_47, __pyx_bstride_0_u));
+    __pyx_t_31 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_46, __pyx_bstride_0_left_edge)) <= __pyx_t_18);
+    if (__pyx_t_31) {
+      __pyx_t_48 = 1;
+      __pyx_t_31 = (__pyx_t_18 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_48, __pyx_bstride_0_right_edge)));
     }
-    if (__pyx_t_28) {
+    if (__pyx_t_31) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":169
  *     if (left_edge[0] <= u[0] <= right_edge[0]) and \
@@ -7837,23 +8008,23 @@
  *         intersect_t = 0.0
  *     if not (0 <= intersect_t <= 1): return
  */
-      __pyx_t_46 = 2;
-      __pyx_t_47 = 2;
-      __pyx_t_23 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_47, __pyx_bstride_0_u));
-      __pyx_t_30 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_46, __pyx_bstride_0_left_edge)) <= __pyx_t_23);
-      if (__pyx_t_30) {
-        __pyx_t_48 = 2;
-        __pyx_t_30 = (__pyx_t_23 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_48, __pyx_bstride_0_right_edge)));
+      __pyx_t_49 = 2;
+      __pyx_t_50 = 2;
+      __pyx_t_18 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_50, __pyx_bstride_0_u));
+      __pyx_t_33 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_49, __pyx_bstride_0_left_edge)) <= __pyx_t_18);
+      if (__pyx_t_33) {
+        __pyx_t_51 = 2;
+        __pyx_t_33 = (__pyx_t_18 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_51, __pyx_bstride_0_right_edge)));
       }
-      __pyx_t_31 = __pyx_t_30;
+      __pyx_t_34 = __pyx_t_33;
     } else {
-      __pyx_t_31 = __pyx_t_28;
+      __pyx_t_34 = __pyx_t_31;
     }
-    __pyx_t_28 = __pyx_t_31;
+    __pyx_t_31 = __pyx_t_34;
   } else {
-    __pyx_t_28 = __pyx_t_11;
+    __pyx_t_31 = __pyx_t_13;
   }
-  if (__pyx_t_28) {
+  if (__pyx_t_31) {
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":170
  *        (left_edge[1] <= u[1] <= right_edge[1]) and \
@@ -7874,12 +8045,12 @@
  *     # Now get the indices of the intersection
  *     intersect = u + intersect_t * v
  */
-  __pyx_t_28 = (0 <= __pyx_v_intersect_t);
-  if (__pyx_t_28) {
-    __pyx_t_28 = (__pyx_v_intersect_t <= 1);
+  __pyx_t_31 = (0 <= __pyx_v_intersect_t);
+  if (__pyx_t_31) {
+    __pyx_t_31 = (__pyx_v_intersect_t <= 1);
   }
-  __pyx_t_11 = (!__pyx_t_28);
-  if (__pyx_t_11) {
+  __pyx_t_13 = (!__pyx_t_31);
+  if (__pyx_t_13) {
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
@@ -7894,37 +8065,37 @@
  *     for i in range(3):
  *         cur_ind[i] = np.floor((intersect[i] + 1e-8*dx[i] - left_edge[i])/dx[i])
  */
-  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_intersect_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, ((PyObject *)__pyx_v_v)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_intersect_t); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyNumber_Multiply(__pyx_t_5, ((PyObject *)__pyx_v_v)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_Add(((PyObject *)__pyx_v_u), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_v_u), __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_8 = ((PyArrayObject *)__pyx_t_3);
+  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = ((PyArrayObject *)__pyx_t_5);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_intersect);
-    __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_intersect, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_9 < 0)) {
-      PyErr_Fetch(&__pyx_t_49, &__pyx_t_50, &__pyx_t_51);
+    __pyx_t_11 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_intersect, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_11 < 0)) {
+      PyErr_Fetch(&__pyx_t_52, &__pyx_t_53, &__pyx_t_54);
       if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_intersect, (PyObject*)__pyx_v_intersect, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_49); Py_XDECREF(__pyx_t_50); Py_XDECREF(__pyx_t_51);
+        Py_XDECREF(__pyx_t_52); Py_XDECREF(__pyx_t_53); Py_XDECREF(__pyx_t_54);
         __Pyx_RaiseBufferFallbackError();
       } else {
-        PyErr_Restore(__pyx_t_49, __pyx_t_50, __pyx_t_51);
+        PyErr_Restore(__pyx_t_52, __pyx_t_53, __pyx_t_54);
       }
     }
     __pyx_bstride_0_intersect = __pyx_bstruct_intersect.strides[0];
     __pyx_bshape_0_intersect = __pyx_bstruct_intersect.shape[0];
-    if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_8 = 0;
+  __pyx_t_10 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_intersect));
-  __pyx_v_intersect = ((PyArrayObject *)__pyx_t_3);
-  __pyx_t_3 = 0;
+  __pyx_v_intersect = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":174
  *     # Now get the indices of the intersection
@@ -7933,8 +8104,8 @@
  *         cur_ind[i] = np.floor((intersect[i] + 1e-8*dx[i] - left_edge[i])/dx[i])
  *         tmax[i] = (((cur_ind[i]+step[i])*dx[i])+left_edge[i]-u[i])/v[i]
  */
-  for (__pyx_t_9 = 0; __pyx_t_9 < 3; __pyx_t_9+=1) {
-    __pyx_v_i = __pyx_t_9;
+  for (__pyx_t_11 = 0; __pyx_t_11 < 3; __pyx_t_11+=1) {
+    __pyx_v_i = __pyx_t_11;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":175
  *     intersect = u + intersect_t * v
@@ -7943,30 +8114,36 @@
  *         tmax[i] = (((cur_ind[i]+step[i])*dx[i])+left_edge[i]-u[i])/v[i]
  *         if cur_ind[i] == grid_mask.shape[i] and step[i] < 0:
  */
-    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_2);
-    __pyx_t_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_floor); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-    __pyx_t_52 = __pyx_v_i;
-    __pyx_t_53 = __pyx_v_i;
-    __pyx_t_54 = __pyx_v_i;
-    __pyx_t_55 = __pyx_v_i;
-    __pyx_t_1 = PyFloat_FromDouble(((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_intersect.buf, __pyx_t_52, __pyx_bstride_0_intersect)) + (1e-08 * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_53, __pyx_bstride_0_dx)))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_54, __pyx_bstride_0_left_edge))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_55, __pyx_bstride_0_dx)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_1);
-    __pyx_t_1 = 0;
-    __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__floor); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-    __pyx_t_56 = __Pyx_PyInt_from_py_npy_int64(__pyx_t_1); if (unlikely((__pyx_t_56 == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_55 = __pyx_v_i;
+    __pyx_t_56 = __pyx_v_i;
     __pyx_t_57 = __pyx_v_i;
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_57, __pyx_bstride_0_cur_ind) = __pyx_t_56;
+    __pyx_t_18 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_intersect.buf, __pyx_t_55, __pyx_bstride_0_intersect)) + (1e-08 * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_56, __pyx_bstride_0_dx)))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_57, __pyx_bstride_0_left_edge)));
+    __pyx_t_58 = __pyx_v_i;
+    __pyx_t_20 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_58, __pyx_bstride_0_dx));
+    if (unlikely(__pyx_t_20 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_t_5 = PyFloat_FromDouble((__pyx_t_18 / __pyx_t_20)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
+    __Pyx_GIVEREF(__pyx_t_5);
+    __pyx_t_5 = 0;
+    __pyx_t_5 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_59 = __Pyx_PyInt_from_py_npy_int64(__pyx_t_5); if (unlikely((__pyx_t_59 == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_60 = __pyx_v_i;
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_60, __pyx_bstride_0_cur_ind) = __pyx_t_59;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":176
  *     for i in range(3):
@@ -7975,14 +8152,20 @@
  *         if cur_ind[i] == grid_mask.shape[i] and step[i] < 0:
  *             cur_ind[i] = grid_mask.shape[i] - 1
  */
-    __pyx_t_58 = __pyx_v_i;
-    __pyx_t_59 = __pyx_v_i;
-    __pyx_t_60 = __pyx_v_i;
     __pyx_t_61 = __pyx_v_i;
     __pyx_t_62 = __pyx_v_i;
     __pyx_t_63 = __pyx_v_i;
     __pyx_t_64 = __pyx_v_i;
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_64, __pyx_bstride_0_tmax) = ((((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_58, __pyx_bstride_0_cur_ind)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_59, __pyx_bstride_0_step))) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_60, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_61, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_62, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_63, __pyx_bstride_0_v)));
+    __pyx_t_65 = __pyx_v_i;
+    __pyx_t_20 = (((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_61, __pyx_bstride_0_cur_ind)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_62, __pyx_bstride_0_step))) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_63, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_64, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_65, __pyx_bstride_0_u)));
+    __pyx_t_66 = __pyx_v_i;
+    __pyx_t_18 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_66, __pyx_bstride_0_v));
+    if (unlikely(__pyx_t_18 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_t_67 = __pyx_v_i;
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_67, __pyx_bstride_0_tmax) = (__pyx_t_20 / __pyx_t_18);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":177
  *         cur_ind[i] = np.floor((intersect[i] + 1e-8*dx[i] - left_edge[i])/dx[i])
@@ -7991,14 +8174,16 @@
  *             cur_ind[i] = grid_mask.shape[i] - 1
  *         if step[i] > 0: tmax[i] = (((cur_ind[i]+1)*dx[i])+left_edge[i]-u[i])/v[i]
  */
-    __pyx_t_65 = __pyx_v_i;
-    if (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_65, __pyx_bstride_0_cur_ind)) == (__pyx_v_grid_mask->dimensions[__pyx_v_i]))) {
-      __pyx_t_66 = __pyx_v_i;
-      __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_66, __pyx_bstride_0_step)) < 0);
+    __pyx_t_68 = __pyx_v_i;
+    __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_68, __pyx_bstride_0_cur_ind)) == (__pyx_v_grid_mask->dimensions[__pyx_v_i]));
+    if (__pyx_t_13) {
+      __pyx_t_69 = __pyx_v_i;
+      __pyx_t_31 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_69, __pyx_bstride_0_step)) < 0);
+      __pyx_t_34 = __pyx_t_31;
     } else {
-      __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_65, __pyx_bstride_0_cur_ind)) == (__pyx_v_grid_mask->dimensions[__pyx_v_i]));
+      __pyx_t_34 = __pyx_t_13;
     }
-    if (__pyx_t_11) {
+    if (__pyx_t_34) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":178
  *         tmax[i] = (((cur_ind[i]+step[i])*dx[i])+left_edge[i]-u[i])/v[i]
@@ -8007,8 +8192,8 @@
  *         if step[i] > 0: tmax[i] = (((cur_ind[i]+1)*dx[i])+left_edge[i]-u[i])/v[i]
  *         if step[i] < 0: tmax[i] = (((cur_ind[i]+0)*dx[i])+left_edge[i]-u[i])/v[i]
  */
-      __pyx_t_67 = __pyx_v_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_67, __pyx_bstride_0_cur_ind) = ((__pyx_v_grid_mask->dimensions[__pyx_v_i]) - 1);
+      __pyx_t_70 = __pyx_v_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_70, __pyx_bstride_0_cur_ind) = ((__pyx_v_grid_mask->dimensions[__pyx_v_i]) - 1);
       goto __pyx_L15;
     }
     __pyx_L15:;
@@ -8020,16 +8205,22 @@
  *         if step[i] < 0: tmax[i] = (((cur_ind[i]+0)*dx[i])+left_edge[i]-u[i])/v[i]
  *         tdelta[i] = (dx[i]/v[i])
  */
-    __pyx_t_68 = __pyx_v_i;
-    __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_68, __pyx_bstride_0_step)) > 0);
-    if (__pyx_t_11) {
-      __pyx_t_69 = __pyx_v_i;
-      __pyx_t_70 = __pyx_v_i;
-      __pyx_t_71 = __pyx_v_i;
+    __pyx_t_71 = __pyx_v_i;
+    __pyx_t_34 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_71, __pyx_bstride_0_step)) > 0);
+    if (__pyx_t_34) {
       __pyx_t_72 = __pyx_v_i;
       __pyx_t_73 = __pyx_v_i;
       __pyx_t_74 = __pyx_v_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_74, __pyx_bstride_0_tmax) = ((((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_69, __pyx_bstride_0_cur_ind)) + 1) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_70, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_71, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_72, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_73, __pyx_bstride_0_v)));
+      __pyx_t_75 = __pyx_v_i;
+      __pyx_t_18 = (((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_72, __pyx_bstride_0_cur_ind)) + 1) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_73, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_74, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_75, __pyx_bstride_0_u)));
+      __pyx_t_76 = __pyx_v_i;
+      __pyx_t_20 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_76, __pyx_bstride_0_v));
+      if (unlikely(__pyx_t_20 == 0)) {
+        PyErr_Format(PyExc_ZeroDivisionError, "float division");
+        {__pyx_filename = __pyx_f[4]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      __pyx_t_77 = __pyx_v_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_77, __pyx_bstride_0_tmax) = (__pyx_t_18 / __pyx_t_20);
       goto __pyx_L16;
     }
     __pyx_L16:;
@@ -8041,16 +8232,22 @@
  *         tdelta[i] = (dx[i]/v[i])
  *         if tdelta[i] < 0: tdelta[i] *= -1
  */
-    __pyx_t_75 = __pyx_v_i;
-    __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_75, __pyx_bstride_0_step)) < 0);
-    if (__pyx_t_11) {
-      __pyx_t_76 = __pyx_v_i;
-      __pyx_t_77 = __pyx_v_i;
-      __pyx_t_78 = __pyx_v_i;
+    __pyx_t_78 = __pyx_v_i;
+    __pyx_t_34 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_78, __pyx_bstride_0_step)) < 0);
+    if (__pyx_t_34) {
       __pyx_t_79 = __pyx_v_i;
       __pyx_t_80 = __pyx_v_i;
       __pyx_t_81 = __pyx_v_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_81, __pyx_bstride_0_tmax) = ((((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_76, __pyx_bstride_0_cur_ind)) + 0) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_77, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_78, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_79, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_80, __pyx_bstride_0_v)));
+      __pyx_t_82 = __pyx_v_i;
+      __pyx_t_20 = (((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_79, __pyx_bstride_0_cur_ind)) + 0) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_80, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_81, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_82, __pyx_bstride_0_u)));
+      __pyx_t_83 = __pyx_v_i;
+      __pyx_t_18 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_83, __pyx_bstride_0_v));
+      if (unlikely(__pyx_t_18 == 0)) {
+        PyErr_Format(PyExc_ZeroDivisionError, "float division");
+        {__pyx_filename = __pyx_f[4]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      __pyx_t_84 = __pyx_v_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_84, __pyx_bstride_0_tmax) = (__pyx_t_20 / __pyx_t_18);
       goto __pyx_L17;
     }
     __pyx_L17:;
@@ -8062,10 +8259,16 @@
  *         if tdelta[i] < 0: tdelta[i] *= -1
  *     # The variable intersect contains the point we first pierce the grid
  */
-    __pyx_t_82 = __pyx_v_i;
-    __pyx_t_83 = __pyx_v_i;
-    __pyx_t_84 = __pyx_v_i;
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_84, __pyx_bstride_0_tdelta) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_82, __pyx_bstride_0_dx)) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_83, __pyx_bstride_0_v)));
+    __pyx_t_85 = __pyx_v_i;
+    __pyx_t_18 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_85, __pyx_bstride_0_dx));
+    __pyx_t_86 = __pyx_v_i;
+    __pyx_t_20 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_86, __pyx_bstride_0_v));
+    if (unlikely(__pyx_t_20 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_t_87 = __pyx_v_i;
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_87, __pyx_bstride_0_tdelta) = (__pyx_t_18 / __pyx_t_20);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":182
  *         if step[i] < 0: tmax[i] = (((cur_ind[i]+0)*dx[i])+left_edge[i]-u[i])/v[i]
@@ -8074,11 +8277,11 @@
  *     # The variable intersect contains the point we first pierce the grid
  *     enter_t = intersect_t
  */
-    __pyx_t_85 = __pyx_v_i;
-    __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_85, __pyx_bstride_0_tdelta)) < 0);
-    if (__pyx_t_11) {
-      __pyx_t_86 = __pyx_v_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_86, __pyx_bstride_0_tdelta) *= -1;
+    __pyx_t_88 = __pyx_v_i;
+    __pyx_t_34 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_88, __pyx_bstride_0_tdelta)) < 0);
+    if (__pyx_t_34) {
+      __pyx_t_89 = __pyx_v_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_89, __pyx_bstride_0_tdelta) *= -1;
       goto __pyx_L18;
     }
     __pyx_L18:;
@@ -8101,8 +8304,8 @@
  *            (not (0 <= cur_ind[1] < grid_mask.shape[1])) or \
  */
   while (1) {
-    __pyx_t_11 = 1;
-    if (!__pyx_t_11) break;
+    __pyx_t_34 = 1;
+    if (!__pyx_t_34) break;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":186
  *     enter_t = intersect_t
@@ -8111,13 +8314,14 @@
  *            (not (0 <= cur_ind[1] < grid_mask.shape[1])) or \
  *            (not (0 <= cur_ind[2] < grid_mask.shape[2])):
  */
-    __pyx_t_87 = 0;
-    __pyx_t_56 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_87, __pyx_bstride_0_cur_ind));
-    __pyx_t_11 = (0 <= __pyx_t_56);
-    if (__pyx_t_11) {
-      __pyx_t_11 = (__pyx_t_56 < (__pyx_v_grid_mask->dimensions[0]));
+    __pyx_t_90 = 0;
+    __pyx_t_59 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_90, __pyx_bstride_0_cur_ind));
+    __pyx_t_34 = (0 <= __pyx_t_59);
+    if (__pyx_t_34) {
+      __pyx_t_34 = (__pyx_t_59 < (__pyx_v_grid_mask->dimensions[0]));
     }
-    if (!(!__pyx_t_11)) {
+    __pyx_t_13 = (!__pyx_t_34);
+    if (!__pyx_t_13) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":187
  *     while 1:
@@ -8126,13 +8330,14 @@
  *            (not (0 <= cur_ind[2] < grid_mask.shape[2])):
  *             break
  */
-      __pyx_t_88 = 1;
-      __pyx_t_56 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_88, __pyx_bstride_0_cur_ind));
-      __pyx_t_28 = (0 <= __pyx_t_56);
-      if (__pyx_t_28) {
-        __pyx_t_28 = (__pyx_t_56 < (__pyx_v_grid_mask->dimensions[1]));
+      __pyx_t_91 = 1;
+      __pyx_t_59 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_91, __pyx_bstride_0_cur_ind));
+      __pyx_t_34 = (0 <= __pyx_t_59);
+      if (__pyx_t_34) {
+        __pyx_t_34 = (__pyx_t_59 < (__pyx_v_grid_mask->dimensions[1]));
       }
-      if (!(!__pyx_t_28)) {
+      __pyx_t_31 = (!__pyx_t_34);
+      if (!__pyx_t_31) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":188
  *         if (not (0 <= cur_ind[0] < grid_mask.shape[0])) or \
@@ -8141,21 +8346,22 @@
  *             break
  *         # Note that we are calculating t on the fly, but we get *negative* t
  */
-        __pyx_t_89 = 2;
-        __pyx_t_56 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_89, __pyx_bstride_0_cur_ind));
-        __pyx_t_31 = (0 <= __pyx_t_56);
-        if (__pyx_t_31) {
-          __pyx_t_31 = (__pyx_t_56 < (__pyx_v_grid_mask->dimensions[2]));
+        __pyx_t_92 = 2;
+        __pyx_t_59 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_92, __pyx_bstride_0_cur_ind));
+        __pyx_t_34 = (0 <= __pyx_t_59);
+        if (__pyx_t_34) {
+          __pyx_t_34 = (__pyx_t_59 < (__pyx_v_grid_mask->dimensions[2]));
         }
-        __pyx_t_30 = (!__pyx_t_31);
+        __pyx_t_33 = (!__pyx_t_34);
+        __pyx_t_34 = __pyx_t_33;
       } else {
-        __pyx_t_30 = (!__pyx_t_28);
+        __pyx_t_34 = __pyx_t_31;
       }
-      __pyx_t_28 = __pyx_t_30;
+      __pyx_t_31 = __pyx_t_34;
     } else {
-      __pyx_t_28 = (!__pyx_t_11);
+      __pyx_t_31 = __pyx_t_13;
     }
-    if (__pyx_t_28) {
+    if (__pyx_t_31) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":189
  *            (not (0 <= cur_ind[1] < grid_mask.shape[1])) or \
@@ -8176,13 +8382,13 @@
  *         if (tmax[0] > 1.0) and (tmax[1] > 1.0) and (tmax[2] > 1.0):
  *             grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = 1.0 - enter_t
  */
-    __pyx_t_90 = 0;
-    __pyx_t_91 = 1;
-    __pyx_t_92 = 2;
-    __pyx_t_56 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_90, __pyx_bstride_0_cur_ind));
-    __pyx_t_93 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_91, __pyx_bstride_0_cur_ind));
-    __pyx_t_94 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_92, __pyx_bstride_0_cur_ind));
-    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int_t *, __pyx_bstruct_grid_mask.buf, __pyx_t_56, __pyx_bstride_0_grid_mask, __pyx_t_93, __pyx_bstride_1_grid_mask, __pyx_t_94, __pyx_bstride_2_grid_mask) = 1;
+    __pyx_t_93 = 0;
+    __pyx_t_94 = 1;
+    __pyx_t_95 = 2;
+    __pyx_t_59 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_93, __pyx_bstride_0_cur_ind));
+    __pyx_t_96 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_94, __pyx_bstride_0_cur_ind));
+    __pyx_t_97 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_95, __pyx_bstride_0_cur_ind));
+    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int_t *, __pyx_bstruct_grid_mask.buf, __pyx_t_59, __pyx_bstride_0_grid_mask, __pyx_t_96, __pyx_bstride_1_grid_mask, __pyx_t_97, __pyx_bstride_2_grid_mask) = 1;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":194
  *         # If we've reached t = 1, we are done.
@@ -8191,20 +8397,23 @@
  *             grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = 1.0 - enter_t
  *             break
  */
-    __pyx_t_95 = 0;
-    if (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_95, __pyx_bstride_0_tmax)) > 1.0)) {
-      __pyx_t_96 = 1;
-      if (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_96, __pyx_bstride_0_tmax)) > 1.0)) {
-        __pyx_t_97 = 2;
-        __pyx_t_28 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_97, __pyx_bstride_0_tmax)) > 1.0);
+    __pyx_t_98 = 0;
+    __pyx_t_31 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_98, __pyx_bstride_0_tmax)) > 1.0);
+    if (__pyx_t_31) {
+      __pyx_t_99 = 1;
+      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_99, __pyx_bstride_0_tmax)) > 1.0);
+      if (__pyx_t_13) {
+        __pyx_t_100 = 2;
+        __pyx_t_34 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_100, __pyx_bstride_0_tmax)) > 1.0);
+        __pyx_t_33 = __pyx_t_34;
       } else {
-        __pyx_t_28 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_96, __pyx_bstride_0_tmax)) > 1.0);
+        __pyx_t_33 = __pyx_t_13;
       }
-      __pyx_t_11 = __pyx_t_28;
+      __pyx_t_13 = __pyx_t_33;
     } else {
-      __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_95, __pyx_bstride_0_tmax)) > 1.0);
+      __pyx_t_13 = __pyx_t_31;
     }
-    if (__pyx_t_11) {
+    if (__pyx_t_13) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":195
  *         grid_mask[cur_ind[0], cur_ind[1], cur_ind[2]] = 1
@@ -8213,13 +8422,13 @@
  *             break
  *         if tmax[0] < tmax[1]:
  */
-      __pyx_t_98 = 0;
-      __pyx_t_99 = 1;
-      __pyx_t_100 = 2;
-      __pyx_t_101 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_98, __pyx_bstride_0_cur_ind));
-      __pyx_t_102 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_99, __pyx_bstride_0_cur_ind));
-      __pyx_t_103 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_100, __pyx_bstride_0_cur_ind));
-      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_101, __pyx_bstride_0_grid_dt, __pyx_t_102, __pyx_bstride_1_grid_dt, __pyx_t_103, __pyx_bstride_2_grid_dt) = (1.0 - __pyx_v_enter_t);
+      __pyx_t_101 = 0;
+      __pyx_t_102 = 1;
+      __pyx_t_103 = 2;
+      __pyx_t_104 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_101, __pyx_bstride_0_cur_ind));
+      __pyx_t_105 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_102, __pyx_bstride_0_cur_ind));
+      __pyx_t_106 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_103, __pyx_bstride_0_cur_ind));
+      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_104, __pyx_bstride_0_grid_dt, __pyx_t_105, __pyx_bstride_1_grid_dt, __pyx_t_106, __pyx_bstride_2_grid_dt) = (1.0 - __pyx_v_enter_t);
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":196
  *         if (tmax[0] > 1.0) and (tmax[1] > 1.0) and (tmax[2] > 1.0):
@@ -8240,10 +8449,10 @@
  *             if tmax[0] < tmax[2]:
  *                 grid_t[cur_ind[0], cur_ind[1], cur_ind[2]] = enter_t
  */
-    __pyx_t_104 = 0;
-    __pyx_t_105 = 1;
-    __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_104, __pyx_bstride_0_tmax)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_105, __pyx_bstride_0_tmax)));
-    if (__pyx_t_11) {
+    __pyx_t_107 = 0;
+    __pyx_t_108 = 1;
+    __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_107, __pyx_bstride_0_tmax)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_108, __pyx_bstride_0_tmax)));
+    if (__pyx_t_13) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":198
  *             break
@@ -8252,10 +8461,10 @@
  *                 grid_t[cur_ind[0], cur_ind[1], cur_ind[2]] = enter_t
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[0] - enter_t
  */
-      __pyx_t_106 = 0;
-      __pyx_t_107 = 2;
-      __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_106, __pyx_bstride_0_tmax)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_107, __pyx_bstride_0_tmax)));
-      if (__pyx_t_11) {
+      __pyx_t_109 = 0;
+      __pyx_t_110 = 2;
+      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_109, __pyx_bstride_0_tmax)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_110, __pyx_bstride_0_tmax)));
+      if (__pyx_t_13) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":199
  *         if tmax[0] < tmax[1]:
@@ -8264,13 +8473,13 @@
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[0] - enter_t
  *                 enter_t = tmax[0]
  */
-        __pyx_t_108 = 0;
-        __pyx_t_109 = 1;
-        __pyx_t_110 = 2;
-        __pyx_t_111 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_108, __pyx_bstride_0_cur_ind));
-        __pyx_t_112 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_109, __pyx_bstride_0_cur_ind));
-        __pyx_t_113 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_110, __pyx_bstride_0_cur_ind));
-        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_t.buf, __pyx_t_111, __pyx_bstride_0_grid_t, __pyx_t_112, __pyx_bstride_1_grid_t, __pyx_t_113, __pyx_bstride_2_grid_t) = __pyx_v_enter_t;
+        __pyx_t_111 = 0;
+        __pyx_t_112 = 1;
+        __pyx_t_113 = 2;
+        __pyx_t_114 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_111, __pyx_bstride_0_cur_ind));
+        __pyx_t_115 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_112, __pyx_bstride_0_cur_ind));
+        __pyx_t_116 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_113, __pyx_bstride_0_cur_ind));
+        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_t.buf, __pyx_t_114, __pyx_bstride_0_grid_t, __pyx_t_115, __pyx_bstride_1_grid_t, __pyx_t_116, __pyx_bstride_2_grid_t) = __pyx_v_enter_t;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":200
  *             if tmax[0] < tmax[2]:
@@ -8279,14 +8488,14 @@
  *                 enter_t = tmax[0]
  *                 tmax[0] += tdelta[0]
  */
-        __pyx_t_114 = 0;
-        __pyx_t_115 = 0;
-        __pyx_t_116 = 1;
-        __pyx_t_117 = 2;
-        __pyx_t_118 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_115, __pyx_bstride_0_cur_ind));
-        __pyx_t_119 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_116, __pyx_bstride_0_cur_ind));
-        __pyx_t_120 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_117, __pyx_bstride_0_cur_ind));
-        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_118, __pyx_bstride_0_grid_dt, __pyx_t_119, __pyx_bstride_1_grid_dt, __pyx_t_120, __pyx_bstride_2_grid_dt) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_114, __pyx_bstride_0_tmax)) - __pyx_v_enter_t);
+        __pyx_t_117 = 0;
+        __pyx_t_118 = 0;
+        __pyx_t_119 = 1;
+        __pyx_t_120 = 2;
+        __pyx_t_121 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_118, __pyx_bstride_0_cur_ind));
+        __pyx_t_122 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_119, __pyx_bstride_0_cur_ind));
+        __pyx_t_123 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_120, __pyx_bstride_0_cur_ind));
+        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_121, __pyx_bstride_0_grid_dt, __pyx_t_122, __pyx_bstride_1_grid_dt, __pyx_t_123, __pyx_bstride_2_grid_dt) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_117, __pyx_bstride_0_tmax)) - __pyx_v_enter_t);
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":201
  *                 grid_t[cur_ind[0], cur_ind[1], cur_ind[2]] = enter_t
@@ -8295,8 +8504,8 @@
  *                 tmax[0] += tdelta[0]
  *                 cur_ind[0] += step[0]
  */
-        __pyx_t_121 = 0;
-        __pyx_v_enter_t = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_121, __pyx_bstride_0_tmax));
+        __pyx_t_124 = 0;
+        __pyx_v_enter_t = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_124, __pyx_bstride_0_tmax));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":202
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[0] - enter_t
@@ -8305,9 +8514,9 @@
  *                 cur_ind[0] += step[0]
  *             else:
  */
-        __pyx_t_122 = 0;
-        __pyx_t_123 = 0;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_123, __pyx_bstride_0_tmax) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_122, __pyx_bstride_0_tdelta));
+        __pyx_t_125 = 0;
+        __pyx_t_126 = 0;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_126, __pyx_bstride_0_tmax) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_125, __pyx_bstride_0_tdelta));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":203
  *                 enter_t = tmax[0]
@@ -8316,9 +8525,9 @@
  *             else:
  *                 grid_t[cur_ind[0], cur_ind[1], cur_ind[2]] = enter_t
  */
-        __pyx_t_124 = 0;
-        __pyx_t_125 = 0;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_125, __pyx_bstride_0_cur_ind) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_124, __pyx_bstride_0_step));
+        __pyx_t_127 = 0;
+        __pyx_t_128 = 0;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_128, __pyx_bstride_0_cur_ind) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_127, __pyx_bstride_0_step));
         goto __pyx_L24;
       }
       /*else*/ {
@@ -8330,13 +8539,13 @@
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[2] - enter_t
  *                 enter_t = tmax[2]
  */
-        __pyx_t_126 = 0;
-        __pyx_t_127 = 1;
-        __pyx_t_128 = 2;
-        __pyx_t_129 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_126, __pyx_bstride_0_cur_ind));
-        __pyx_t_130 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_127, __pyx_bstride_0_cur_ind));
-        __pyx_t_131 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_128, __pyx_bstride_0_cur_ind));
-        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_t.buf, __pyx_t_129, __pyx_bstride_0_grid_t, __pyx_t_130, __pyx_bstride_1_grid_t, __pyx_t_131, __pyx_bstride_2_grid_t) = __pyx_v_enter_t;
+        __pyx_t_129 = 0;
+        __pyx_t_130 = 1;
+        __pyx_t_131 = 2;
+        __pyx_t_132 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_129, __pyx_bstride_0_cur_ind));
+        __pyx_t_133 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_130, __pyx_bstride_0_cur_ind));
+        __pyx_t_134 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_131, __pyx_bstride_0_cur_ind));
+        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_t.buf, __pyx_t_132, __pyx_bstride_0_grid_t, __pyx_t_133, __pyx_bstride_1_grid_t, __pyx_t_134, __pyx_bstride_2_grid_t) = __pyx_v_enter_t;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":206
  *             else:
@@ -8345,14 +8554,14 @@
  *                 enter_t = tmax[2]
  *                 tmax[2] += tdelta[2]
  */
-        __pyx_t_132 = 2;
-        __pyx_t_133 = 0;
-        __pyx_t_134 = 1;
         __pyx_t_135 = 2;
-        __pyx_t_136 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_133, __pyx_bstride_0_cur_ind));
-        __pyx_t_137 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_134, __pyx_bstride_0_cur_ind));
-        __pyx_t_138 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_135, __pyx_bstride_0_cur_ind));
-        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_136, __pyx_bstride_0_grid_dt, __pyx_t_137, __pyx_bstride_1_grid_dt, __pyx_t_138, __pyx_bstride_2_grid_dt) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_132, __pyx_bstride_0_tmax)) - __pyx_v_enter_t);
+        __pyx_t_136 = 0;
+        __pyx_t_137 = 1;
+        __pyx_t_138 = 2;
+        __pyx_t_139 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_136, __pyx_bstride_0_cur_ind));
+        __pyx_t_140 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_137, __pyx_bstride_0_cur_ind));
+        __pyx_t_141 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_138, __pyx_bstride_0_cur_ind));
+        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_139, __pyx_bstride_0_grid_dt, __pyx_t_140, __pyx_bstride_1_grid_dt, __pyx_t_141, __pyx_bstride_2_grid_dt) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_135, __pyx_bstride_0_tmax)) - __pyx_v_enter_t);
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":207
  *                 grid_t[cur_ind[0], cur_ind[1], cur_ind[2]] = enter_t
@@ -8361,8 +8570,8 @@
  *                 tmax[2] += tdelta[2]
  *                 cur_ind[2] += step[2]
  */
-        __pyx_t_139 = 2;
-        __pyx_v_enter_t = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_139, __pyx_bstride_0_tmax));
+        __pyx_t_142 = 2;
+        __pyx_v_enter_t = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_142, __pyx_bstride_0_tmax));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":208
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[2] - enter_t
@@ -8371,9 +8580,9 @@
  *                 cur_ind[2] += step[2]
  *         else:
  */
-        __pyx_t_140 = 2;
-        __pyx_t_141 = 2;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_141, __pyx_bstride_0_tmax) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_140, __pyx_bstride_0_tdelta));
+        __pyx_t_143 = 2;
+        __pyx_t_144 = 2;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_144, __pyx_bstride_0_tmax) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_143, __pyx_bstride_0_tdelta));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":209
  *                 enter_t = tmax[2]
@@ -8382,9 +8591,9 @@
  *         else:
  *             if tmax[1] < tmax[2]:
  */
-        __pyx_t_142 = 2;
-        __pyx_t_143 = 2;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_143, __pyx_bstride_0_cur_ind) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_142, __pyx_bstride_0_step));
+        __pyx_t_145 = 2;
+        __pyx_t_146 = 2;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_146, __pyx_bstride_0_cur_ind) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_145, __pyx_bstride_0_step));
       }
       __pyx_L24:;
       goto __pyx_L23;
@@ -8398,10 +8607,10 @@
  *                 grid_t[cur_ind[0], cur_ind[1], cur_ind[2]] = enter_t
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[1] - enter_t
  */
-      __pyx_t_144 = 1;
-      __pyx_t_145 = 2;
-      __pyx_t_11 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_144, __pyx_bstride_0_tmax)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_145, __pyx_bstride_0_tmax)));
-      if (__pyx_t_11) {
+      __pyx_t_147 = 1;
+      __pyx_t_148 = 2;
+      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_147, __pyx_bstride_0_tmax)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_148, __pyx_bstride_0_tmax)));
+      if (__pyx_t_13) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":212
  *         else:
@@ -8410,13 +8619,13 @@
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[1] - enter_t
  *                 enter_t = tmax[1]
  */
-        __pyx_t_146 = 0;
-        __pyx_t_147 = 1;
-        __pyx_t_148 = 2;
-        __pyx_t_149 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_146, __pyx_bstride_0_cur_ind));
-        __pyx_t_150 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_147, __pyx_bstride_0_cur_ind));
-        __pyx_t_151 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_148, __pyx_bstride_0_cur_ind));
-        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_t.buf, __pyx_t_149, __pyx_bstride_0_grid_t, __pyx_t_150, __pyx_bstride_1_grid_t, __pyx_t_151, __pyx_bstride_2_grid_t) = __pyx_v_enter_t;
+        __pyx_t_149 = 0;
+        __pyx_t_150 = 1;
+        __pyx_t_151 = 2;
+        __pyx_t_152 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_149, __pyx_bstride_0_cur_ind));
+        __pyx_t_153 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_150, __pyx_bstride_0_cur_ind));
+        __pyx_t_154 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_151, __pyx_bstride_0_cur_ind));
+        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_t.buf, __pyx_t_152, __pyx_bstride_0_grid_t, __pyx_t_153, __pyx_bstride_1_grid_t, __pyx_t_154, __pyx_bstride_2_grid_t) = __pyx_v_enter_t;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":213
  *             if tmax[1] < tmax[2]:
@@ -8425,14 +8634,14 @@
  *                 enter_t = tmax[1]
  *                 tmax[1] += tdelta[1]
  */
-        __pyx_t_152 = 1;
-        __pyx_t_153 = 0;
-        __pyx_t_154 = 1;
-        __pyx_t_155 = 2;
-        __pyx_t_156 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_153, __pyx_bstride_0_cur_ind));
-        __pyx_t_157 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_154, __pyx_bstride_0_cur_ind));
-        __pyx_t_158 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_155, __pyx_bstride_0_cur_ind));
-        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_156, __pyx_bstride_0_grid_dt, __pyx_t_157, __pyx_bstride_1_grid_dt, __pyx_t_158, __pyx_bstride_2_grid_dt) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_152, __pyx_bstride_0_tmax)) - __pyx_v_enter_t);
+        __pyx_t_155 = 1;
+        __pyx_t_156 = 0;
+        __pyx_t_157 = 1;
+        __pyx_t_158 = 2;
+        __pyx_t_159 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_156, __pyx_bstride_0_cur_ind));
+        __pyx_t_160 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_157, __pyx_bstride_0_cur_ind));
+        __pyx_t_161 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_158, __pyx_bstride_0_cur_ind));
+        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_159, __pyx_bstride_0_grid_dt, __pyx_t_160, __pyx_bstride_1_grid_dt, __pyx_t_161, __pyx_bstride_2_grid_dt) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_155, __pyx_bstride_0_tmax)) - __pyx_v_enter_t);
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":214
  *                 grid_t[cur_ind[0], cur_ind[1], cur_ind[2]] = enter_t
@@ -8441,8 +8650,8 @@
  *                 tmax[1] += tdelta[1]
  *                 cur_ind[1] += step[1]
  */
-        __pyx_t_159 = 1;
-        __pyx_v_enter_t = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_159, __pyx_bstride_0_tmax));
+        __pyx_t_162 = 1;
+        __pyx_v_enter_t = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_162, __pyx_bstride_0_tmax));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":215
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[1] - enter_t
@@ -8451,9 +8660,9 @@
  *                 cur_ind[1] += step[1]
  *             else:
  */
-        __pyx_t_160 = 1;
-        __pyx_t_161 = 1;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_161, __pyx_bstride_0_tmax) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_160, __pyx_bstride_0_tdelta));
+        __pyx_t_163 = 1;
+        __pyx_t_164 = 1;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_164, __pyx_bstride_0_tmax) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_163, __pyx_bstride_0_tdelta));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":216
  *                 enter_t = tmax[1]
@@ -8462,9 +8671,9 @@
  *             else:
  *                 grid_t[cur_ind[0], cur_ind[1], cur_ind[2]] = enter_t
  */
-        __pyx_t_162 = 1;
-        __pyx_t_163 = 1;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_163, __pyx_bstride_0_cur_ind) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_162, __pyx_bstride_0_step));
+        __pyx_t_165 = 1;
+        __pyx_t_166 = 1;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_166, __pyx_bstride_0_cur_ind) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_165, __pyx_bstride_0_step));
         goto __pyx_L25;
       }
       /*else*/ {
@@ -8476,13 +8685,13 @@
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[2] - enter_t
  *                 enter_t = tmax[2]
  */
-        __pyx_t_164 = 0;
-        __pyx_t_165 = 1;
-        __pyx_t_166 = 2;
-        __pyx_t_167 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_164, __pyx_bstride_0_cur_ind));
-        __pyx_t_168 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_165, __pyx_bstride_0_cur_ind));
-        __pyx_t_169 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_166, __pyx_bstride_0_cur_ind));
-        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_t.buf, __pyx_t_167, __pyx_bstride_0_grid_t, __pyx_t_168, __pyx_bstride_1_grid_t, __pyx_t_169, __pyx_bstride_2_grid_t) = __pyx_v_enter_t;
+        __pyx_t_167 = 0;
+        __pyx_t_168 = 1;
+        __pyx_t_169 = 2;
+        __pyx_t_170 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_167, __pyx_bstride_0_cur_ind));
+        __pyx_t_171 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_168, __pyx_bstride_0_cur_ind));
+        __pyx_t_172 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_169, __pyx_bstride_0_cur_ind));
+        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_t.buf, __pyx_t_170, __pyx_bstride_0_grid_t, __pyx_t_171, __pyx_bstride_1_grid_t, __pyx_t_172, __pyx_bstride_2_grid_t) = __pyx_v_enter_t;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":219
  *             else:
@@ -8491,14 +8700,14 @@
  *                 enter_t = tmax[2]
  *                 tmax[2] += tdelta[2]
  */
-        __pyx_t_170 = 2;
-        __pyx_t_171 = 0;
-        __pyx_t_172 = 1;
         __pyx_t_173 = 2;
-        __pyx_t_174 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_171, __pyx_bstride_0_cur_ind));
-        __pyx_t_175 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_172, __pyx_bstride_0_cur_ind));
-        __pyx_t_176 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_173, __pyx_bstride_0_cur_ind));
-        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_174, __pyx_bstride_0_grid_dt, __pyx_t_175, __pyx_bstride_1_grid_dt, __pyx_t_176, __pyx_bstride_2_grid_dt) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_170, __pyx_bstride_0_tmax)) - __pyx_v_enter_t);
+        __pyx_t_174 = 0;
+        __pyx_t_175 = 1;
+        __pyx_t_176 = 2;
+        __pyx_t_177 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_174, __pyx_bstride_0_cur_ind));
+        __pyx_t_178 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_175, __pyx_bstride_0_cur_ind));
+        __pyx_t_179 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_176, __pyx_bstride_0_cur_ind));
+        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dt.buf, __pyx_t_177, __pyx_bstride_0_grid_dt, __pyx_t_178, __pyx_bstride_1_grid_dt, __pyx_t_179, __pyx_bstride_2_grid_dt) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_173, __pyx_bstride_0_tmax)) - __pyx_v_enter_t);
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":220
  *                 grid_t[cur_ind[0], cur_ind[1], cur_ind[2]] = enter_t
@@ -8507,8 +8716,8 @@
  *                 tmax[2] += tdelta[2]
  *                 cur_ind[2] += step[2]
  */
-        __pyx_t_177 = 2;
-        __pyx_v_enter_t = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_177, __pyx_bstride_0_tmax));
+        __pyx_t_180 = 2;
+        __pyx_v_enter_t = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_180, __pyx_bstride_0_tmax));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":221
  *                 grid_dt[cur_ind[0], cur_ind[1], cur_ind[2]] = tmax[2] - enter_t
@@ -8517,9 +8726,9 @@
  *                 cur_ind[2] += step[2]
  *     return
  */
-        __pyx_t_178 = 2;
-        __pyx_t_179 = 2;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_179, __pyx_bstride_0_tmax) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_178, __pyx_bstride_0_tdelta));
+        __pyx_t_181 = 2;
+        __pyx_t_182 = 2;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tmax.buf, __pyx_t_182, __pyx_bstride_0_tmax) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_tdelta.buf, __pyx_t_181, __pyx_bstride_0_tdelta));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":222
  *                 enter_t = tmax[2]
@@ -8528,9 +8737,9 @@
  *     return
  * 
  */
-        __pyx_t_180 = 2;
-        __pyx_t_181 = 2;
-        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_181, __pyx_bstride_0_cur_ind) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_180, __pyx_bstride_0_step));
+        __pyx_t_183 = 2;
+        __pyx_t_184 = 2;
+        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_cur_ind.buf, __pyx_t_184, __pyx_bstride_0_cur_ind) += (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_step.buf, __pyx_t_183, __pyx_bstride_0_step));
       }
       __pyx_L25:;
     }
@@ -8552,11 +8761,11 @@
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
-  __Pyx_XDECREF(__pyx_2);
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right_edge);
@@ -8596,8 +8805,16 @@
   __Pyx_XDECREF((PyObject *)__pyx_v_tdelta);
   __Pyx_XDECREF((PyObject *)__pyx_v_tmax);
   __Pyx_XDECREF((PyObject *)__pyx_v_intersect);
+  __Pyx_DECREF((PyObject *)__pyx_v_grid_mask);
+  __Pyx_DECREF((PyObject *)__pyx_v_grid_t);
+  __Pyx_DECREF((PyObject *)__pyx_v_grid_dt);
+  __Pyx_DECREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_dx);
+  __Pyx_DECREF((PyObject *)__pyx_v_u);
+  __Pyx_DECREF((PyObject *)__pyx_v_v);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -8664,19 +8881,20 @@
   Py_ssize_t __pyx_bshape_1_data = 0;
   Py_ssize_t __pyx_bshape_2_data = 0;
   PyObject *__pyx_r = NULL;
-  PyObject *__pyx_1 = 0;
-  PyObject *__pyx_2 = 0;
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
-  PyArrayObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  int __pyx_t_6;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyArrayObject *__pyx_t_6 = NULL;
   int __pyx_t_7;
   int __pyx_t_8;
   int __pyx_t_9;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_left_edge,&__pyx_kp_right_edge,&__pyx_kp_dx,&__pyx_kp_ug,&__pyx_kp_v,&__pyx_kp_image,&__pyx_kp_data,&__pyx_kp_shells,0};
-  __Pyx_SetupRefcountContext("PlaneVoxelIntegration");
+  int __pyx_t_10;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left_edge,&__pyx_n_s__right_edge,&__pyx_n_s__dx,&__pyx_n_s__ug,&__pyx_n_s__v,&__pyx_n_s__image,&__pyx_n_s__data,&__pyx_n_s__shells,0};
+  __Pyx_RefNannySetupContext("PlaneVoxelIntegration");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -8695,54 +8913,54 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_left_edge);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left_edge);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_right_edge);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right_edge);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 1); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 1); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dx);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dx);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 2); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 2); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_ug);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ug);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 3); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 3); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_v);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__v);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 4); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 4); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_image);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__image);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 5); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 5); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_data);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__data);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 6); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 6); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
-      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_kp_shells);
+      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__shells);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 7); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, 7); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "PlaneVoxelIntegration") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "PlaneVoxelIntegration") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_left_edge = ((PyArrayObject *)values[0]);
     __pyx_v_right_edge = ((PyArrayObject *)values[1]);
@@ -8766,11 +8984,19 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("PlaneVoxelIntegration", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.PlaneVoxelIntegration");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_dx);
+  __Pyx_INCREF((PyObject *)__pyx_v_ug);
+  __Pyx_INCREF((PyObject *)__pyx_v_v);
+  __Pyx_INCREF((PyObject *)__pyx_v_image);
+  __Pyx_INCREF((PyObject *)__pyx_v_data);
+  __Pyx_INCREF((PyObject *)__pyx_v_shells);
   __pyx_v_intersect_t = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_dt_tolerance = Py_None; __Pyx_INCREF(Py_None);
   __pyx_bstruct_u.buf = NULL;
@@ -8782,59 +9008,59 @@
   __pyx_bstruct_image.buf = NULL;
   __pyx_bstruct_data.buf = NULL;
   __pyx_bstruct_shells.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ug), __pyx_ptype_5numpy_ndarray, 1, "ug", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_5numpy_ndarray, 1, "v", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_image), __pyx_ptype_5numpy_ndarray, 1, "image", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shells), __pyx_ptype_5numpy_ndarray, 1, "shells", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ug), __pyx_ptype_5numpy_ndarray, 1, "ug", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_5numpy_ndarray, 1, "v", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_image), __pyx_ptype_5numpy_ndarray, 1, "image", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shells), __pyx_ptype_5numpy_ndarray, 1, "shells", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_left_edge = __pyx_bstruct_left_edge.strides[0];
   __pyx_bshape_0_left_edge = __pyx_bstruct_left_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_right_edge = __pyx_bstruct_right_edge.strides[0];
   __pyx_bshape_0_right_edge = __pyx_bstruct_right_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_dx = __pyx_bstruct_dx.strides[0];
   __pyx_bshape_0_dx = __pyx_bstruct_dx.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_ug, (PyObject*)__pyx_v_ug, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_ug, (PyObject*)__pyx_v_ug, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_ug = __pyx_bstruct_ug.strides[0]; __pyx_bstride_1_ug = __pyx_bstruct_ug.strides[1];
   __pyx_bshape_0_ug = __pyx_bstruct_ug.shape[0]; __pyx_bshape_1_ug = __pyx_bstruct_ug.shape[1];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_v, (PyObject*)__pyx_v_v, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_v, (PyObject*)__pyx_v_v, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_v = __pyx_bstruct_v.strides[0];
   __pyx_bshape_0_v = __pyx_bstruct_v.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_image, (PyObject*)__pyx_v_image, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_image, (PyObject*)__pyx_v_image, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_image = __pyx_bstruct_image.strides[0]; __pyx_bstride_1_image = __pyx_bstruct_image.strides[1];
   __pyx_bshape_0_image = __pyx_bstruct_image.shape[0]; __pyx_bshape_1_image = __pyx_bstruct_image.shape[1];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_data = __pyx_bstruct_data.strides[0]; __pyx_bstride_1_data = __pyx_bstruct_data.strides[1]; __pyx_bstride_2_data = __pyx_bstruct_data.strides[2];
   __pyx_bshape_0_data = __pyx_bstruct_data.shape[0]; __pyx_bshape_1_data = __pyx_bstruct_data.shape[1]; __pyx_bshape_2_data = __pyx_bstruct_data.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_shells, (PyObject*)__pyx_v_shells, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_shells, (PyObject*)__pyx_v_shells, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_shells = __pyx_bstruct_shells.strides[0]; __pyx_bstride_1_shells = __pyx_bstruct_shells.strides[1];
   __pyx_bshape_0_shells = __pyx_bstruct_shells.shape[0]; __pyx_bshape_1_shells = __pyx_bstruct_shells.shape[1];
@@ -8857,7 +9083,7 @@
  *     cdef int nv = ug.shape[0]
  *     cdef int nshells = shells.shape[0]
  */
-  __pyx_t_1 = PyFloat_FromDouble(9.9999999999999995e-07); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyFloat_FromDouble(9.9999999999999995e-07); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_v_dt_tolerance);
   __pyx_v_dt_tolerance = __pyx_t_1;
@@ -8888,49 +9114,49 @@
  *     # Copy things into temporary location for passing between functions
  *     for vi in range(nv):
  */
-  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_1, __pyx_kp_empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
   __Pyx_INCREF(__pyx_int_3);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_3);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
-  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
-  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
-  __pyx_t_2 = 0;
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_1));
-  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_2, __pyx_kp_36); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__float64); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = ((PyArrayObject *)__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_u, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_u, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_u = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_u.buf = NULL;
-      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_u = __pyx_bstruct_u.strides[0];
       __pyx_bshape_0_u = __pyx_bstruct_u.shape[0];
     }
   }
-  __pyx_t_4 = 0;
-  __pyx_v_u = ((PyArrayObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
+  __pyx_t_6 = 0;
+  __pyx_v_u = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":245
  *     cdef np.ndarray[np.float64_t, ndim=1] u = np.empty((3,), dtype=np.float64)
@@ -8939,8 +9165,9 @@
  *         for i in range(3): u[i] = ug[vi, i]
  *         integrate_ray(u, v, left_edge, right_edge, dx,
  */
-  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_v_nv; __pyx_t_5+=1) {
-    __pyx_v_vi = __pyx_t_5;
+  __pyx_t_7 = __pyx_v_nv;
+  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+    __pyx_v_vi = __pyx_t_8;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":246
  *     # Copy things into temporary location for passing between functions
@@ -8949,12 +9176,12 @@
  *         integrate_ray(u, v, left_edge, right_edge, dx,
  *                       nshells, vi, data, shells, image)
  */
-    for (__pyx_t_6 = 0; __pyx_t_6 < 3; __pyx_t_6+=1) {
-      __pyx_v_i = __pyx_t_6;
-      __pyx_t_7 = __pyx_v_vi;
-      __pyx_t_8 = __pyx_v_i;
-      __pyx_t_9 = __pyx_v_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_9, __pyx_bstride_0_u) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_ug.buf, __pyx_t_7, __pyx_bstride_0_ug, __pyx_t_8, __pyx_bstride_1_ug));
+    for (__pyx_t_9 = 0; __pyx_t_9 < 3; __pyx_t_9+=1) {
+      __pyx_v_i = __pyx_t_9;
+      __pyx_t_10 = __pyx_v_vi;
+      __pyx_t_11 = __pyx_v_i;
+      __pyx_t_12 = __pyx_v_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_12, __pyx_bstride_0_u) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_ug.buf, __pyx_t_10, __pyx_bstride_0_ug, __pyx_t_11, __pyx_bstride_1_ug));
     }
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":247
@@ -8964,8 +9191,8 @@
  *                       nshells, vi, data, shells, image)
  * 
  */
-    __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_integrate_ray); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_2);
+    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__integrate_ray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":248
  *         for i in range(3): u[i] = ug[vi, i]
@@ -8974,57 +9201,57 @@
  * 
  * @cython.wraparound(False)
  */
-    __pyx_t_2 = PyInt_FromLong(__pyx_v_nshells); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyInt_FromLong(__pyx_v_vi); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyInt_FromLong(__pyx_v_nshells); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = PyInt_FromLong(__pyx_v_vi); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = PyTuple_New(10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+    __pyx_t_2 = PyTuple_New(10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(((PyObject *)__pyx_v_u));
-    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_u));
+    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_u));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_u));
     __Pyx_INCREF(((PyObject *)__pyx_v_v));
-    PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_v));
+    PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_v));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_v));
     __Pyx_INCREF(((PyObject *)__pyx_v_left_edge));
-    PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_left_edge));
+    PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_left_edge));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_left_edge));
     __Pyx_INCREF(((PyObject *)__pyx_v_right_edge));
-    PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_v_right_edge));
+    PyTuple_SET_ITEM(__pyx_t_2, 3, ((PyObject *)__pyx_v_right_edge));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_right_edge));
     __Pyx_INCREF(((PyObject *)__pyx_v_dx));
-    PyTuple_SET_ITEM(__pyx_t_1, 4, ((PyObject *)__pyx_v_dx));
+    PyTuple_SET_ITEM(__pyx_t_2, 4, ((PyObject *)__pyx_v_dx));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_dx));
-    PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_2);
-    __Pyx_GIVEREF(__pyx_t_2);
-    PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_INCREF(((PyObject *)__pyx_v_data));
-    PyTuple_SET_ITEM(__pyx_t_1, 7, ((PyObject *)__pyx_v_data));
+    PyTuple_SET_ITEM(__pyx_t_2, 7, ((PyObject *)__pyx_v_data));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_data));
     __Pyx_INCREF(((PyObject *)__pyx_v_shells));
-    PyTuple_SET_ITEM(__pyx_t_1, 8, ((PyObject *)__pyx_v_shells));
+    PyTuple_SET_ITEM(__pyx_t_2, 8, ((PyObject *)__pyx_v_shells));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_shells));
     __Pyx_INCREF(((PyObject *)__pyx_v_image));
-    PyTuple_SET_ITEM(__pyx_t_1, 9, ((PyObject *)__pyx_v_image));
+    PyTuple_SET_ITEM(__pyx_t_2, 9, ((PyObject *)__pyx_v_image));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_image));
-    __pyx_t_2 = 0;
+    __pyx_t_1 = 0;
     __pyx_t_3 = 0;
-    __pyx_t_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
-    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
-  __Pyx_XDECREF(__pyx_2);
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_u);
@@ -9054,8 +9281,16 @@
   __Pyx_DECREF(__pyx_v_intersect_t);
   __Pyx_DECREF(__pyx_v_dt_tolerance);
   __Pyx_XDECREF((PyObject *)__pyx_v_u);
+  __Pyx_DECREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_dx);
+  __Pyx_DECREF((PyObject *)__pyx_v_ug);
+  __Pyx_DECREF((PyObject *)__pyx_v_v);
+  __Pyx_DECREF((PyObject *)__pyx_v_image);
+  __Pyx_DECREF((PyObject *)__pyx_v_data);
+  __Pyx_DECREF((PyObject *)__pyx_v_shells);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -9135,15 +9370,14 @@
   Py_ssize_t __pyx_bstride_0_v = 0;
   Py_ssize_t __pyx_bshape_0_v = 0;
   PyObject *__pyx_r = NULL;
-  PyObject *__pyx_1 = 0;
   int __pyx_t_1;
   int __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
   int __pyx_t_5;
-  int __pyx_t_6;
+  __pyx_t_5numpy_float64_t __pyx_t_6;
   int __pyx_t_7;
-  int __pyx_t_8;
+  __pyx_t_5numpy_float64_t __pyx_t_8;
   int __pyx_t_9;
   int __pyx_t_10;
   int __pyx_t_11;
@@ -9162,31 +9396,31 @@
   int __pyx_t_24;
   int __pyx_t_25;
   int __pyx_t_26;
-  long __pyx_t_27;
-  long __pyx_t_28;
-  __pyx_t_5numpy_float64_t __pyx_t_29;
-  long __pyx_t_30;
-  long __pyx_t_31;
-  long __pyx_t_32;
-  long __pyx_t_33;
+  int __pyx_t_27;
+  int __pyx_t_28;
+  int __pyx_t_29;
+  int __pyx_t_30;
+  int __pyx_t_31;
+  int __pyx_t_32;
+  int __pyx_t_33;
   long __pyx_t_34;
   long __pyx_t_35;
-  int __pyx_t_36;
-  long __pyx_t_37;
-  int __pyx_t_38;
-  int __pyx_t_39;
-  int __pyx_t_40;
-  PyObject *__pyx_t_41 = NULL;
-  int __pyx_t_42;
+  long __pyx_t_36;
+  long __pyx_t_37;
+  long __pyx_t_38;
+  long __pyx_t_39;
+  long __pyx_t_40;
+  long __pyx_t_41;
+  long __pyx_t_42;
   int __pyx_t_43;
   int __pyx_t_44;
   PyObject *__pyx_t_45 = NULL;
   PyObject *__pyx_t_46 = NULL;
-  __pyx_t_5numpy_int64_t __pyx_t_47;
+  int __pyx_t_47;
   int __pyx_t_48;
   int __pyx_t_49;
-  int __pyx_t_50;
-  int __pyx_t_51;
+  PyObject *__pyx_t_50 = NULL;
+  __pyx_t_5numpy_int64_t __pyx_t_51;
   int __pyx_t_52;
   int __pyx_t_53;
   int __pyx_t_54;
@@ -9197,39 +9431,44 @@
   int __pyx_t_59;
   int __pyx_t_60;
   int __pyx_t_61;
-  __pyx_t_5numpy_int64_t __pyx_t_62;
-  __pyx_t_5numpy_int64_t __pyx_t_63;
-  long __pyx_t_64;
-  __pyx_t_5numpy_int64_t __pyx_t_65;
-  int __pyx_t_66;
-  int __pyx_t_67;
+  int __pyx_t_62;
+  int __pyx_t_63;
+  int __pyx_t_64;
+  int __pyx_t_65;
+  __pyx_t_5numpy_int64_t __pyx_t_66;
+  __pyx_t_5numpy_int64_t __pyx_t_67;
   long __pyx_t_68;
-  int __pyx_t_69;
-  long __pyx_t_70;
+  __pyx_t_5numpy_int64_t __pyx_t_69;
+  int __pyx_t_70;
   int __pyx_t_71;
-  long __pyx_t_72;
-  int __pyx_t_73;
-  long __pyx_t_74;
-  int __pyx_t_75;
-  long __pyx_t_76;
-  int __pyx_t_77;
-  long __pyx_t_78;
-  int __pyx_t_79;
-  long __pyx_t_80;
-  int __pyx_t_81;
-  long __pyx_t_82;
-  int __pyx_t_83;
-  long __pyx_t_84;
-  int __pyx_t_85;
-  long __pyx_t_86;
-  int __pyx_t_87;
-  long __pyx_t_88;
-  int __pyx_t_89;
-  long __pyx_t_90;
-  __pyx_t_5numpy_int64_t __pyx_t_91;
-  __pyx_t_5numpy_int64_t __pyx_t_92;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_u,&__pyx_kp_v,&__pyx_kp_left_edge,&__pyx_kp_right_edge,&__pyx_kp_dx,&__pyx_kp_nshells,&__pyx_kp_ind,&__pyx_kp_data,&__pyx_kp_shells,&__pyx_kp_image,0};
-  __Pyx_SetupRefcountContext("integrate_ray");
+  int __pyx_t_72;
+  long __pyx_t_73;
+  int __pyx_t_74;
+  long __pyx_t_75;
+  int __pyx_t_76;
+  long __pyx_t_77;
+  int __pyx_t_78;
+  long __pyx_t_79;
+  int __pyx_t_80;
+  long __pyx_t_81;
+  int __pyx_t_82;
+  long __pyx_t_83;
+  int __pyx_t_84;
+  long __pyx_t_85;
+  int __pyx_t_86;
+  long __pyx_t_87;
+  int __pyx_t_88;
+  long __pyx_t_89;
+  int __pyx_t_90;
+  long __pyx_t_91;
+  int __pyx_t_92;
+  long __pyx_t_93;
+  int __pyx_t_94;
+  long __pyx_t_95;
+  __pyx_t_5numpy_int64_t __pyx_t_96;
+  __pyx_t_5numpy_int64_t __pyx_t_97;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__u,&__pyx_n_s__v,&__pyx_n_s__left_edge,&__pyx_n_s__right_edge,&__pyx_n_s__dx,&__pyx_n_s__nshells,&__pyx_n_s__ind,&__pyx_n_s__data,&__pyx_n_s__shells,&__pyx_n_s__image,0};
+  __Pyx_RefNannySetupContext("integrate_ray");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -9250,74 +9489,74 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_u);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__u);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_v);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__v);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 1); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 1); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_left_edge);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left_edge);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 2); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 2); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_right_edge);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right_edge);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 3); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 3); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dx);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dx);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 4); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 4); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_nshells);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nshells);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 5); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 5); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_ind);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ind);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 6); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 6); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
-      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_kp_data);
+      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__data);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 7); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 7); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  8:
-      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_kp_shells);
+      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__shells);
       if (likely(values[8])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 8); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 8); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  9:
-      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_kp_image);
+      values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__image);
       if (likely(values[9])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 9); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, 9); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "integrate_ray") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "integrate_ray") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_u = ((PyArrayObject *)values[0]);
     __pyx_v_v = ((PyArrayObject *)values[1]);
     __pyx_v_left_edge = ((PyArrayObject *)values[2]);
     __pyx_v_right_edge = ((PyArrayObject *)values[3]);
     __pyx_v_dx = ((PyArrayObject *)values[4]);
-    __pyx_v_nshells = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_nshells == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_ind = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_ind == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_nshells = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_nshells == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_ind = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_ind == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_data = ((PyArrayObject *)values[7]);
     __pyx_v_shells = ((PyArrayObject *)values[8]);
     __pyx_v_image = ((PyArrayObject *)values[9]);
@@ -9329,19 +9568,27 @@
     __pyx_v_left_edge = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 2));
     __pyx_v_right_edge = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 3));
     __pyx_v_dx = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 4));
-    __pyx_v_nshells = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_nshells == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_ind = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 6)); if (unlikely((__pyx_v_ind == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_nshells = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_nshells == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_ind = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 6)); if (unlikely((__pyx_v_ind == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_data = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 7));
     __pyx_v_shells = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 8));
     __pyx_v_image = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 9));
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("integrate_ray", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.integrate_ray");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_u);
+  __Pyx_INCREF((PyObject *)__pyx_v_v);
+  __Pyx_INCREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_dx);
+  __Pyx_INCREF((PyObject *)__pyx_v_data);
+  __Pyx_INCREF((PyObject *)__pyx_v_shells);
+  __Pyx_INCREF((PyObject *)__pyx_v_image);
   __pyx_bstruct_u.buf = NULL;
   __pyx_bstruct_v.buf = NULL;
   __pyx_bstruct_left_edge.buf = NULL;
@@ -9350,59 +9597,59 @@
   __pyx_bstruct_data.buf = NULL;
   __pyx_bstruct_shells.buf = NULL;
   __pyx_bstruct_image.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_5numpy_ndarray, 1, "v", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shells), __pyx_ptype_5numpy_ndarray, 1, "shells", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_image), __pyx_ptype_5numpy_ndarray, 1, "image", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_v), __pyx_ptype_5numpy_ndarray, 1, "v", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dx), __pyx_ptype_5numpy_ndarray, 1, "dx", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shells), __pyx_ptype_5numpy_ndarray, 1, "shells", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_image), __pyx_ptype_5numpy_ndarray, 1, "image", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_u, (PyObject*)__pyx_v_u, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_u, (PyObject*)__pyx_v_u, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_u = __pyx_bstruct_u.strides[0];
   __pyx_bshape_0_u = __pyx_bstruct_u.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_v, (PyObject*)__pyx_v_v, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_v, (PyObject*)__pyx_v_v, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_v = __pyx_bstruct_v.strides[0];
   __pyx_bshape_0_v = __pyx_bstruct_v.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_left_edge = __pyx_bstruct_left_edge.strides[0];
   __pyx_bshape_0_left_edge = __pyx_bstruct_left_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_right_edge = __pyx_bstruct_right_edge.strides[0];
   __pyx_bshape_0_right_edge = __pyx_bstruct_right_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dx, (PyObject*)__pyx_v_dx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_dx = __pyx_bstruct_dx.strides[0];
   __pyx_bshape_0_dx = __pyx_bstruct_dx.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_data = __pyx_bstruct_data.strides[0]; __pyx_bstride_1_data = __pyx_bstruct_data.strides[1]; __pyx_bstride_2_data = __pyx_bstruct_data.strides[2];
   __pyx_bshape_0_data = __pyx_bstruct_data.shape[0]; __pyx_bshape_1_data = __pyx_bstruct_data.shape[1]; __pyx_bshape_2_data = __pyx_bstruct_data.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_shells, (PyObject*)__pyx_v_shells, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_shells, (PyObject*)__pyx_v_shells, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_shells = __pyx_bstruct_shells.strides[0]; __pyx_bstride_1_shells = __pyx_bstruct_shells.strides[1];
   __pyx_bshape_0_shells = __pyx_bstruct_shells.shape[0]; __pyx_bshape_1_shells = __pyx_bstruct_shells.shape[1];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_image, (PyObject*)__pyx_v_image, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_image, (PyObject*)__pyx_v_image, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_image = __pyx_bstruct_image.strides[0]; __pyx_bstride_1_image = __pyx_bstruct_image.strides[1];
   __pyx_bshape_0_image = __pyx_bstruct_image.shape[0]; __pyx_bshape_1_image = __pyx_bstruct_image.shape[1];
@@ -9486,7 +9733,7 @@
  *         y = (i+2)%3
  *         tl = (left_edge[i] - u[i])/v[i]
  */
-    __pyx_v_x = ((__pyx_v_i + 1) % 3);
+    __pyx_v_x = __Pyx_mod_long((__pyx_v_i + 1), 3);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":280
  *         else: step[i] = 1
@@ -9495,7 +9742,7 @@
  *         tl = (left_edge[i] - u[i])/v[i]
  *         tr = (right_edge[i] - u[i])/v[i]
  */
-    __pyx_v_y = ((__pyx_v_i + 2) % 3);
+    __pyx_v_y = __Pyx_mod_long((__pyx_v_i + 2), 3);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":281
  *         x = (i+1)%3
@@ -9506,8 +9753,14 @@
  */
     __pyx_t_4 = __pyx_v_i;
     __pyx_t_5 = __pyx_v_i;
-    __pyx_t_6 = __pyx_v_i;
-    __pyx_v_tl = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_4, __pyx_bstride_0_left_edge)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_5, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_6, __pyx_bstride_0_v)));
+    __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_4, __pyx_bstride_0_left_edge)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_5, __pyx_bstride_0_u)));
+    __pyx_t_7 = __pyx_v_i;
+    __pyx_t_8 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_7, __pyx_bstride_0_v));
+    if (unlikely(__pyx_t_8 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_tl = (__pyx_t_6 / __pyx_t_8);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":282
  *         y = (i+2)%3
@@ -9516,10 +9769,16 @@
  *         temp_x = (u[x] + tl*v[x])
  *         temp_y = (u[y] + tl*v[y])
  */
-    __pyx_t_7 = __pyx_v_i;
-    __pyx_t_8 = __pyx_v_i;
     __pyx_t_9 = __pyx_v_i;
-    __pyx_v_tr = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_7, __pyx_bstride_0_right_edge)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_8, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_9, __pyx_bstride_0_v)));
+    __pyx_t_10 = __pyx_v_i;
+    __pyx_t_8 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_9, __pyx_bstride_0_right_edge)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_10, __pyx_bstride_0_u)));
+    __pyx_t_11 = __pyx_v_i;
+    __pyx_t_6 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_11, __pyx_bstride_0_v));
+    if (unlikely(__pyx_t_6 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_tr = (__pyx_t_8 / __pyx_t_6);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":283
  *         tl = (left_edge[i] - u[i])/v[i]
@@ -9528,9 +9787,9 @@
  *         temp_y = (u[y] + tl*v[y])
  *         if (left_edge[x] <= temp_x) and (temp_x <= right_edge[x]) and \
  */
-    __pyx_t_10 = __pyx_v_x;
-    __pyx_t_11 = __pyx_v_x;
-    __pyx_v_temp_x = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_10, __pyx_bstride_0_u)) + (__pyx_v_tl * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_11, __pyx_bstride_0_v))));
+    __pyx_t_12 = __pyx_v_x;
+    __pyx_t_13 = __pyx_v_x;
+    __pyx_v_temp_x = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_12, __pyx_bstride_0_u)) + (__pyx_v_tl * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_13, __pyx_bstride_0_v))));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":284
  *         tr = (right_edge[i] - u[i])/v[i]
@@ -9539,9 +9798,9 @@
  *         if (left_edge[x] <= temp_x) and (temp_x <= right_edge[x]) and \
  *            (left_edge[y] <= temp_y) and (temp_y <= right_edge[y]) and \
  */
-    __pyx_t_12 = __pyx_v_y;
-    __pyx_t_13 = __pyx_v_y;
-    __pyx_v_temp_y = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_12, __pyx_bstride_0_u)) + (__pyx_v_tl * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_13, __pyx_bstride_0_v))));
+    __pyx_t_14 = __pyx_v_y;
+    __pyx_t_15 = __pyx_v_y;
+    __pyx_v_temp_y = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_14, __pyx_bstride_0_u)) + (__pyx_v_tl * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_15, __pyx_bstride_0_v))));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":285
  *         temp_x = (u[x] + tl*v[x])
@@ -9550,10 +9809,12 @@
  *            (left_edge[y] <= temp_y) and (temp_y <= right_edge[y]) and \
  *            (0.0 <= tl) and (tl < intersect_t):
  */
-    __pyx_t_14 = __pyx_v_x;
-    if (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_14, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_x)) {
-      __pyx_t_15 = __pyx_v_x;
-      if ((__pyx_v_temp_x <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_15, __pyx_bstride_0_right_edge)))) {
+    __pyx_t_16 = __pyx_v_x;
+    __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_16, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_x);
+    if (__pyx_t_3) {
+      __pyx_t_17 = __pyx_v_x;
+      __pyx_t_18 = (__pyx_v_temp_x <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_17, __pyx_bstride_0_right_edge)));
+      if (__pyx_t_18) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":286
  *         temp_y = (u[y] + tl*v[y])
@@ -9562,10 +9823,12 @@
  *            (0.0 <= tl) and (tl < intersect_t):
  *             intersect_t = tl
  */
-        __pyx_t_16 = __pyx_v_y;
-        if (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_16, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_y)) {
-          __pyx_t_17 = __pyx_v_y;
-          if ((__pyx_v_temp_y <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_17, __pyx_bstride_0_right_edge)))) {
+        __pyx_t_19 = __pyx_v_y;
+        __pyx_t_20 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_19, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_y);
+        if (__pyx_t_20) {
+          __pyx_t_21 = __pyx_v_y;
+          __pyx_t_22 = (__pyx_v_temp_y <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_21, __pyx_bstride_0_right_edge)));
+          if (__pyx_t_22) {
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":287
  *         if (left_edge[x] <= temp_x) and (temp_x <= right_edge[x]) and \
@@ -9574,28 +9837,30 @@
  *             intersect_t = tl
  *         temp_x = (u[x] + tr*v[x])
  */
-            if ((0.0 <= __pyx_v_tl)) {
-              __pyx_t_3 = (__pyx_v_tl < __pyx_v_intersect_t);
+            __pyx_t_23 = (0.0 <= __pyx_v_tl);
+            if (__pyx_t_23) {
+              __pyx_t_24 = (__pyx_v_tl < __pyx_v_intersect_t);
+              __pyx_t_25 = __pyx_t_24;
             } else {
-              __pyx_t_3 = (0.0 <= __pyx_v_tl);
+              __pyx_t_25 = __pyx_t_23;
             }
-            __pyx_t_18 = __pyx_t_3;
+            __pyx_t_23 = __pyx_t_25;
           } else {
-            __pyx_t_18 = (__pyx_v_temp_y <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_17, __pyx_bstride_0_right_edge)));
+            __pyx_t_23 = __pyx_t_22;
           }
-          __pyx_t_3 = __pyx_t_18;
+          __pyx_t_22 = __pyx_t_23;
         } else {
-          __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_16, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_y);
+          __pyx_t_22 = __pyx_t_20;
         }
-        __pyx_t_18 = __pyx_t_3;
+        __pyx_t_20 = __pyx_t_22;
       } else {
-        __pyx_t_18 = (__pyx_v_temp_x <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_15, __pyx_bstride_0_right_edge)));
+        __pyx_t_20 = __pyx_t_18;
       }
-      __pyx_t_3 = __pyx_t_18;
+      __pyx_t_18 = __pyx_t_20;
     } else {
-      __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_14, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_x);
+      __pyx_t_18 = __pyx_t_3;
     }
-    if (__pyx_t_3) {
+    if (__pyx_t_18) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":288
  *            (left_edge[y] <= temp_y) and (temp_y <= right_edge[y]) and \
@@ -9616,9 +9881,9 @@
  *         temp_y = (u[y] + tr*v[y])
  *         if (left_edge[x] <= temp_x) and (temp_x <= right_edge[x]) and \
  */
-    __pyx_t_19 = __pyx_v_x;
-    __pyx_t_20 = __pyx_v_x;
-    __pyx_v_temp_x = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_19, __pyx_bstride_0_u)) + (__pyx_v_tr * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_20, __pyx_bstride_0_v))));
+    __pyx_t_26 = __pyx_v_x;
+    __pyx_t_27 = __pyx_v_x;
+    __pyx_v_temp_x = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_26, __pyx_bstride_0_u)) + (__pyx_v_tr * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_27, __pyx_bstride_0_v))));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":290
  *             intersect_t = tl
@@ -9627,9 +9892,9 @@
  *         if (left_edge[x] <= temp_x) and (temp_x <= right_edge[x]) and \
  *            (left_edge[y] <= temp_y) and (temp_y <= right_edge[y]) and \
  */
-    __pyx_t_21 = __pyx_v_y;
-    __pyx_t_22 = __pyx_v_y;
-    __pyx_v_temp_y = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_21, __pyx_bstride_0_u)) + (__pyx_v_tr * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_22, __pyx_bstride_0_v))));
+    __pyx_t_28 = __pyx_v_y;
+    __pyx_t_29 = __pyx_v_y;
+    __pyx_v_temp_y = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_28, __pyx_bstride_0_u)) + (__pyx_v_tr * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_29, __pyx_bstride_0_v))));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":291
  *         temp_x = (u[x] + tr*v[x])
@@ -9638,10 +9903,12 @@
  *            (left_edge[y] <= temp_y) and (temp_y <= right_edge[y]) and \
  *            (0.0 <= tr) and (tr < intersect_t):
  */
-    __pyx_t_23 = __pyx_v_x;
-    if (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_23, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_x)) {
-      __pyx_t_24 = __pyx_v_x;
-      if ((__pyx_v_temp_x <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_24, __pyx_bstride_0_right_edge)))) {
+    __pyx_t_30 = __pyx_v_x;
+    __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_30, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_x);
+    if (__pyx_t_18) {
+      __pyx_t_31 = __pyx_v_x;
+      __pyx_t_3 = (__pyx_v_temp_x <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_31, __pyx_bstride_0_right_edge)));
+      if (__pyx_t_3) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":292
  *         temp_y = (u[y] + tr*v[y])
@@ -9650,10 +9917,12 @@
  *            (0.0 <= tr) and (tr < intersect_t):
  *             intersect_t = tr
  */
-        __pyx_t_25 = __pyx_v_y;
-        if (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_25, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_y)) {
-          __pyx_t_26 = __pyx_v_y;
-          if ((__pyx_v_temp_y <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_26, __pyx_bstride_0_right_edge)))) {
+        __pyx_t_32 = __pyx_v_y;
+        __pyx_t_20 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_32, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_y);
+        if (__pyx_t_20) {
+          __pyx_t_33 = __pyx_v_y;
+          __pyx_t_22 = (__pyx_v_temp_y <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_33, __pyx_bstride_0_right_edge)));
+          if (__pyx_t_22) {
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":293
  *         if (left_edge[x] <= temp_x) and (temp_x <= right_edge[x]) and \
@@ -9662,26 +9931,28 @@
  *             intersect_t = tr
  *     # if fully enclosed
  */
-            if ((0.0 <= __pyx_v_tr)) {
-              __pyx_t_3 = (__pyx_v_tr < __pyx_v_intersect_t);
+            __pyx_t_23 = (0.0 <= __pyx_v_tr);
+            if (__pyx_t_23) {
+              __pyx_t_25 = (__pyx_v_tr < __pyx_v_intersect_t);
+              __pyx_t_24 = __pyx_t_25;
             } else {
-              __pyx_t_3 = (0.0 <= __pyx_v_tr);
+              __pyx_t_24 = __pyx_t_23;
             }
-            __pyx_t_18 = __pyx_t_3;
+            __pyx_t_23 = __pyx_t_24;
           } else {
-            __pyx_t_18 = (__pyx_v_temp_y <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_26, __pyx_bstride_0_right_edge)));
+            __pyx_t_23 = __pyx_t_22;
           }
-          __pyx_t_3 = __pyx_t_18;
+          __pyx_t_22 = __pyx_t_23;
         } else {
-          __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_25, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_y);
+          __pyx_t_22 = __pyx_t_20;
         }
-        __pyx_t_18 = __pyx_t_3;
+        __pyx_t_20 = __pyx_t_22;
       } else {
-        __pyx_t_18 = (__pyx_v_temp_x <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_24, __pyx_bstride_0_right_edge)));
+        __pyx_t_20 = __pyx_t_3;
       }
-      __pyx_t_3 = __pyx_t_18;
+      __pyx_t_3 = __pyx_t_20;
     } else {
-      __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_23, __pyx_bstride_0_left_edge)) <= __pyx_v_temp_x);
+      __pyx_t_3 = __pyx_t_18;
     }
     if (__pyx_t_3) {
 
@@ -9705,13 +9976,13 @@
  *        (left_edge[1] <= u[1] <= right_edge[1]) and \
  *        (left_edge[2] <= u[2] <= right_edge[2]):
  */
-  __pyx_t_27 = 0;
-  __pyx_t_28 = 0;
-  __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_28, __pyx_bstride_0_u));
-  __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_27, __pyx_bstride_0_left_edge)) <= __pyx_t_29);
+  __pyx_t_34 = 0;
+  __pyx_t_35 = 0;
+  __pyx_t_6 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_35, __pyx_bstride_0_u));
+  __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_34, __pyx_bstride_0_left_edge)) <= __pyx_t_6);
   if (__pyx_t_3) {
-    __pyx_t_30 = 0;
-    __pyx_t_3 = (__pyx_t_29 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_30, __pyx_bstride_0_right_edge)));
+    __pyx_t_36 = 0;
+    __pyx_t_3 = (__pyx_t_6 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_36, __pyx_bstride_0_right_edge)));
   }
   if (__pyx_t_3) {
 
@@ -9722,13 +9993,13 @@
  *        (left_edge[2] <= u[2] <= right_edge[2]):
  *         intersect_t = 0.0
  */
-    __pyx_t_31 = 1;
-    __pyx_t_32 = 1;
-    __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_32, __pyx_bstride_0_u));
-    __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_31, __pyx_bstride_0_left_edge)) <= __pyx_t_29);
+    __pyx_t_37 = 1;
+    __pyx_t_38 = 1;
+    __pyx_t_6 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_38, __pyx_bstride_0_u));
+    __pyx_t_18 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_37, __pyx_bstride_0_left_edge)) <= __pyx_t_6);
     if (__pyx_t_18) {
-      __pyx_t_33 = 1;
-      __pyx_t_18 = (__pyx_t_29 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_33, __pyx_bstride_0_right_edge)));
+      __pyx_t_39 = 1;
+      __pyx_t_18 = (__pyx_t_6 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_39, __pyx_bstride_0_right_edge)));
     }
     if (__pyx_t_18) {
 
@@ -9739,19 +10010,19 @@
  *         intersect_t = 0.0
  *     if not (0 <= intersect_t <= 1):
  */
-      __pyx_t_34 = 2;
-      __pyx_t_35 = 2;
-      __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_35, __pyx_bstride_0_u));
-      __pyx_t_36 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_34, __pyx_bstride_0_left_edge)) <= __pyx_t_29);
-      if (__pyx_t_36) {
-        __pyx_t_37 = 2;
-        __pyx_t_36 = (__pyx_t_29 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_37, __pyx_bstride_0_right_edge)));
+      __pyx_t_40 = 2;
+      __pyx_t_41 = 2;
+      __pyx_t_6 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_41, __pyx_bstride_0_u));
+      __pyx_t_20 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_40, __pyx_bstride_0_left_edge)) <= __pyx_t_6);
+      if (__pyx_t_20) {
+        __pyx_t_42 = 2;
+        __pyx_t_20 = (__pyx_t_6 <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_42, __pyx_bstride_0_right_edge)));
       }
-      __pyx_t_38 = __pyx_t_36;
+      __pyx_t_22 = __pyx_t_20;
     } else {
-      __pyx_t_38 = __pyx_t_18;
+      __pyx_t_22 = __pyx_t_18;
     }
-    __pyx_t_18 = __pyx_t_38;
+    __pyx_t_18 = __pyx_t_22;
   } else {
     __pyx_t_18 = __pyx_t_3;
   }
@@ -9806,9 +10077,9 @@
  */
   for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) {
     __pyx_v_i = __pyx_t_1;
-    __pyx_t_39 = __pyx_v_i;
-    __pyx_t_40 = __pyx_v_i;
-    (__pyx_v_intersect[__pyx_v_i]) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_39, __pyx_bstride_0_u)) + (__pyx_v_intersect_t * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_40, __pyx_bstride_0_v))));
+    __pyx_t_43 = __pyx_v_i;
+    __pyx_t_44 = __pyx_v_i;
+    (__pyx_v_intersect[__pyx_v_i]) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_43, __pyx_bstride_0_u)) + (__pyx_v_intersect_t * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_44, __pyx_bstride_0_v))));
   }
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":305
@@ -9837,28 +10108,34 @@
  *         tmax[i] = (((cur_ind[i]+step[i])*dx[i])+left_edge[i]-u[i])/v[i]
  *         if cur_ind[i] == dims[i] and step[i] < 0:
  */
-    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_1);
-    __pyx_t_41 = PyObject_GetAttr(__pyx_1, __pyx_kp_floor); if (unlikely(!__pyx_t_41)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_41);
-    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-    __pyx_t_42 = __pyx_v_i;
-    __pyx_t_43 = __pyx_v_i;
-    __pyx_t_44 = __pyx_v_i;
-    __pyx_t_45 = PyFloat_FromDouble(((((__pyx_v_intersect[__pyx_v_i]) + (1e-08 * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_42, __pyx_bstride_0_dx)))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_43, __pyx_bstride_0_left_edge))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_44, __pyx_bstride_0_dx)))); if (unlikely(!__pyx_t_45)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_45 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_45)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_45);
+    __pyx_t_46 = PyObject_GetAttr(__pyx_t_45, __pyx_n_s__floor); if (unlikely(!__pyx_t_46)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_46);
+    __Pyx_DECREF(__pyx_t_45); __pyx_t_45 = 0;
+    __pyx_t_47 = __pyx_v_i;
+    __pyx_t_48 = __pyx_v_i;
+    __pyx_t_6 = (((__pyx_v_intersect[__pyx_v_i]) + (1e-08 * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_47, __pyx_bstride_0_dx)))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_48, __pyx_bstride_0_left_edge)));
+    __pyx_t_49 = __pyx_v_i;
+    __pyx_t_8 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_49, __pyx_bstride_0_dx));
+    if (unlikely(__pyx_t_8 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_t_45 = PyFloat_FromDouble((__pyx_t_6 / __pyx_t_8)); if (unlikely(!__pyx_t_45)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_45);
-    __pyx_t_46 = PyTuple_New(1); if (unlikely(!__pyx_t_46)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(((PyObject *)__pyx_t_46));
-    PyTuple_SET_ITEM(__pyx_t_46, 0, __pyx_t_45);
+    __pyx_t_50 = PyTuple_New(1); if (unlikely(!__pyx_t_50)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_50);
+    PyTuple_SET_ITEM(__pyx_t_50, 0, __pyx_t_45);
     __Pyx_GIVEREF(__pyx_t_45);
     __pyx_t_45 = 0;
-    __pyx_t_45 = PyObject_Call(__pyx_t_41, ((PyObject *)__pyx_t_46), NULL); if (unlikely(!__pyx_t_45)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_45 = PyObject_Call(__pyx_t_46, __pyx_t_50, NULL); if (unlikely(!__pyx_t_45)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_45);
-    __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0;
-    __Pyx_DECREF(((PyObject *)__pyx_t_46)); __pyx_t_46 = 0;
-    __pyx_t_47 = __Pyx_PyInt_from_py_npy_int64(__pyx_t_45); if (unlikely((__pyx_t_47 == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_46); __pyx_t_46 = 0;
+    __Pyx_DECREF(__pyx_t_50); __pyx_t_50 = 0;
+    __pyx_t_51 = __Pyx_PyInt_from_py_npy_int64(__pyx_t_45); if (unlikely((__pyx_t_51 == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_45); __pyx_t_45 = 0;
-    (__pyx_v_cur_ind[__pyx_v_i]) = __pyx_t_47;
+    (__pyx_v_cur_ind[__pyx_v_i]) = __pyx_t_51;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":308
  *     for i in range(3):
@@ -9867,11 +10144,17 @@
  *         if cur_ind[i] == dims[i] and step[i] < 0:
  *             cur_ind[i] = dims[i] - 1
  */
-    __pyx_t_48 = __pyx_v_i;
-    __pyx_t_49 = __pyx_v_i;
-    __pyx_t_50 = __pyx_v_i;
-    __pyx_t_51 = __pyx_v_i;
-    (__pyx_v_tmax[__pyx_v_i]) = ((((((__pyx_v_cur_ind[__pyx_v_i]) + (__pyx_v_step[__pyx_v_i])) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_48, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_49, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_50, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_51, __pyx_bstride_0_v)));
+    __pyx_t_52 = __pyx_v_i;
+    __pyx_t_53 = __pyx_v_i;
+    __pyx_t_54 = __pyx_v_i;
+    __pyx_t_8 = (((((__pyx_v_cur_ind[__pyx_v_i]) + (__pyx_v_step[__pyx_v_i])) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_52, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_53, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_54, __pyx_bstride_0_u)));
+    __pyx_t_55 = __pyx_v_i;
+    __pyx_t_6 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_55, __pyx_bstride_0_v));
+    if (unlikely(__pyx_t_6 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    (__pyx_v_tmax[__pyx_v_i]) = (__pyx_t_8 / __pyx_t_6);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":309
  *         cur_ind[i] = np.floor((intersect[i] + 1e-8*dx[i] - left_edge[i])/dx[i])
@@ -9880,12 +10163,14 @@
  *             cur_ind[i] = dims[i] - 1
  *         if step[i] > 0: tmax[i] = (((cur_ind[i]+1)*dx[i])+left_edge[i]-u[i])/v[i]
  */
-    if (((__pyx_v_cur_ind[__pyx_v_i]) == (__pyx_v_dims[__pyx_v_i]))) {
-      __pyx_t_3 = ((__pyx_v_step[__pyx_v_i]) < 0);
+    __pyx_t_3 = ((__pyx_v_cur_ind[__pyx_v_i]) == (__pyx_v_dims[__pyx_v_i]));
+    if (__pyx_t_3) {
+      __pyx_t_18 = ((__pyx_v_step[__pyx_v_i]) < 0);
+      __pyx_t_22 = __pyx_t_18;
     } else {
-      __pyx_t_3 = ((__pyx_v_cur_ind[__pyx_v_i]) == (__pyx_v_dims[__pyx_v_i]));
+      __pyx_t_22 = __pyx_t_3;
     }
-    if (__pyx_t_3) {
+    if (__pyx_t_22) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":310
  *         tmax[i] = (((cur_ind[i]+step[i])*dx[i])+left_edge[i]-u[i])/v[i]
@@ -9906,13 +10191,19 @@
  *         if step[i] < 0: tmax[i] = (((cur_ind[i]+0)*dx[i])+left_edge[i]-u[i])/v[i]
  *         tdelta[i] = (dx[i]/v[i])
  */
-    __pyx_t_3 = ((__pyx_v_step[__pyx_v_i]) > 0);
-    if (__pyx_t_3) {
-      __pyx_t_52 = __pyx_v_i;
-      __pyx_t_53 = __pyx_v_i;
-      __pyx_t_54 = __pyx_v_i;
-      __pyx_t_55 = __pyx_v_i;
-      (__pyx_v_tmax[__pyx_v_i]) = ((((((__pyx_v_cur_ind[__pyx_v_i]) + 1) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_52, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_53, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_54, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_55, __pyx_bstride_0_v)));
+    __pyx_t_22 = ((__pyx_v_step[__pyx_v_i]) > 0);
+    if (__pyx_t_22) {
+      __pyx_t_56 = __pyx_v_i;
+      __pyx_t_57 = __pyx_v_i;
+      __pyx_t_58 = __pyx_v_i;
+      __pyx_t_6 = (((((__pyx_v_cur_ind[__pyx_v_i]) + 1) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_56, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_57, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_58, __pyx_bstride_0_u)));
+      __pyx_t_59 = __pyx_v_i;
+      __pyx_t_8 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_59, __pyx_bstride_0_v));
+      if (unlikely(__pyx_t_8 == 0)) {
+        PyErr_Format(PyExc_ZeroDivisionError, "float division");
+        {__pyx_filename = __pyx_f[4]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      (__pyx_v_tmax[__pyx_v_i]) = (__pyx_t_6 / __pyx_t_8);
       goto __pyx_L18;
     }
     __pyx_L18:;
@@ -9924,13 +10215,19 @@
  *         tdelta[i] = (dx[i]/v[i])
  *         if tdelta[i] < 0: tdelta[i] *= -1
  */
-    __pyx_t_3 = ((__pyx_v_step[__pyx_v_i]) < 0);
-    if (__pyx_t_3) {
-      __pyx_t_56 = __pyx_v_i;
-      __pyx_t_57 = __pyx_v_i;
-      __pyx_t_58 = __pyx_v_i;
-      __pyx_t_59 = __pyx_v_i;
-      (__pyx_v_tmax[__pyx_v_i]) = ((((((__pyx_v_cur_ind[__pyx_v_i]) + 0) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_56, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_57, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_58, __pyx_bstride_0_u))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_59, __pyx_bstride_0_v)));
+    __pyx_t_22 = ((__pyx_v_step[__pyx_v_i]) < 0);
+    if (__pyx_t_22) {
+      __pyx_t_60 = __pyx_v_i;
+      __pyx_t_61 = __pyx_v_i;
+      __pyx_t_62 = __pyx_v_i;
+      __pyx_t_8 = (((((__pyx_v_cur_ind[__pyx_v_i]) + 0) * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_60, __pyx_bstride_0_dx))) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_61, __pyx_bstride_0_left_edge))) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_u.buf, __pyx_t_62, __pyx_bstride_0_u)));
+      __pyx_t_63 = __pyx_v_i;
+      __pyx_t_6 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_63, __pyx_bstride_0_v));
+      if (unlikely(__pyx_t_6 == 0)) {
+        PyErr_Format(PyExc_ZeroDivisionError, "float division");
+        {__pyx_filename = __pyx_f[4]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      (__pyx_v_tmax[__pyx_v_i]) = (__pyx_t_8 / __pyx_t_6);
       goto __pyx_L19;
     }
     __pyx_L19:;
@@ -9942,9 +10239,15 @@
  *         if tdelta[i] < 0: tdelta[i] *= -1
  *     # The variable intersect contains the point we first pierce the grid
  */
-    __pyx_t_60 = __pyx_v_i;
-    __pyx_t_61 = __pyx_v_i;
-    (__pyx_v_tdelta[__pyx_v_i]) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_60, __pyx_bstride_0_dx)) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_61, __pyx_bstride_0_v)));
+    __pyx_t_64 = __pyx_v_i;
+    __pyx_t_6 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_dx.buf, __pyx_t_64, __pyx_bstride_0_dx));
+    __pyx_t_65 = __pyx_v_i;
+    __pyx_t_8 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_v.buf, __pyx_t_65, __pyx_bstride_0_v));
+    if (unlikely(__pyx_t_8 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    (__pyx_v_tdelta[__pyx_v_i]) = (__pyx_t_6 / __pyx_t_8);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":314
  *         if step[i] < 0: tmax[i] = (((cur_ind[i]+0)*dx[i])+left_edge[i]-u[i])/v[i]
@@ -9953,8 +10256,8 @@
  *     # The variable intersect contains the point we first pierce the grid
  *     enter_t = intersect_t
  */
-    __pyx_t_3 = ((__pyx_v_tdelta[__pyx_v_i]) < 0);
-    if (__pyx_t_3) {
+    __pyx_t_22 = ((__pyx_v_tdelta[__pyx_v_i]) < 0);
+    if (__pyx_t_22) {
       (__pyx_v_tdelta[__pyx_v_i]) *= -1;
       goto __pyx_L20;
     }
@@ -9977,12 +10280,13 @@
  *        (not (0 <= cur_ind[1] < dims[1])) or \
  *        (not (0 <= cur_ind[2] < dims[2])):
  */
-  __pyx_t_47 = (__pyx_v_cur_ind[0]);
-  __pyx_t_3 = (0 <= __pyx_t_47);
-  if (__pyx_t_3) {
-    __pyx_t_3 = (__pyx_t_47 < (__pyx_v_dims[0]));
+  __pyx_t_51 = (__pyx_v_cur_ind[0]);
+  __pyx_t_22 = (0 <= __pyx_t_51);
+  if (__pyx_t_22) {
+    __pyx_t_22 = (__pyx_t_51 < (__pyx_v_dims[0]));
   }
-  if (!(!__pyx_t_3)) {
+  __pyx_t_3 = (!__pyx_t_22);
+  if (!__pyx_t_3) {
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":318
  *     enter_t = intersect_t
@@ -9991,12 +10295,13 @@
  *        (not (0 <= cur_ind[2] < dims[2])):
  *         #print "Returning: cur_ind", cur_ind[0], cur_ind[1], cur_ind[2]
  */
-    __pyx_t_47 = (__pyx_v_cur_ind[1]);
-    __pyx_t_18 = (0 <= __pyx_t_47);
-    if (__pyx_t_18) {
-      __pyx_t_18 = (__pyx_t_47 < (__pyx_v_dims[1]));
+    __pyx_t_51 = (__pyx_v_cur_ind[1]);
+    __pyx_t_22 = (0 <= __pyx_t_51);
+    if (__pyx_t_22) {
+      __pyx_t_22 = (__pyx_t_51 < (__pyx_v_dims[1]));
     }
-    if (!(!__pyx_t_18)) {
+    __pyx_t_18 = (!__pyx_t_22);
+    if (!__pyx_t_18) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":319
  *     if (not (0 <= cur_ind[0] < dims[0])) or \
@@ -10005,18 +10310,19 @@
  *         #print "Returning: cur_ind", cur_ind[0], cur_ind[1], cur_ind[2]
  *         #print "  dims:     ", dims[0], dims[1], dims[2]
  */
-      __pyx_t_47 = (__pyx_v_cur_ind[2]);
-      __pyx_t_38 = (0 <= __pyx_t_47);
-      if (__pyx_t_38) {
-        __pyx_t_38 = (__pyx_t_47 < (__pyx_v_dims[2]));
+      __pyx_t_51 = (__pyx_v_cur_ind[2]);
+      __pyx_t_22 = (0 <= __pyx_t_51);
+      if (__pyx_t_22) {
+        __pyx_t_22 = (__pyx_t_51 < (__pyx_v_dims[2]));
       }
-      __pyx_t_36 = (!__pyx_t_38);
+      __pyx_t_20 = (!__pyx_t_22);
+      __pyx_t_22 = __pyx_t_20;
     } else {
-      __pyx_t_36 = (!__pyx_t_18);
+      __pyx_t_22 = __pyx_t_18;
     }
-    __pyx_t_18 = __pyx_t_36;
+    __pyx_t_18 = __pyx_t_22;
   } else {
-    __pyx_t_18 = (!__pyx_t_3);
+    __pyx_t_18 = __pyx_t_3;
   }
   if (__pyx_t_18) {
 
@@ -10041,10 +10347,10 @@
  *     #dt = 1e300
  *     while 1:
  */
-  __pyx_t_47 = (__pyx_v_cur_ind[0]);
-  __pyx_t_62 = (__pyx_v_cur_ind[1]);
-  __pyx_t_63 = (__pyx_v_cur_ind[2]);
-  __pyx_v_dv = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_data.buf, __pyx_t_47, __pyx_bstride_0_data, __pyx_t_62, __pyx_bstride_1_data, __pyx_t_63, __pyx_bstride_2_data));
+  __pyx_t_51 = (__pyx_v_cur_ind[0]);
+  __pyx_t_66 = (__pyx_v_cur_ind[1]);
+  __pyx_t_67 = (__pyx_v_cur_ind[2]);
+  __pyx_v_dv = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_data.buf, __pyx_t_51, __pyx_bstride_0_data, __pyx_t_66, __pyx_bstride_1_data, __pyx_t_67, __pyx_bstride_2_data));
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":330
  *     dv = data[cur_ind[0], cur_ind[1], cur_ind[2]]
@@ -10065,8 +10371,8 @@
  *            (not (0 <= cur_ind[1] < dims[1])) or \
  */
     __pyx_t_1 = __pyx_v_ind;
-    __pyx_t_64 = 3;
-    __pyx_t_18 = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_1, __pyx_bstride_0_image, __pyx_t_64, __pyx_bstride_1_image)) >= 1.0);
+    __pyx_t_68 = 3;
+    __pyx_t_18 = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_1, __pyx_bstride_0_image, __pyx_t_68, __pyx_bstride_1_image)) >= 1.0);
     if (__pyx_t_18) {
       goto __pyx_L23_break;
       goto __pyx_L24;
@@ -10080,12 +10386,13 @@
  *            (not (0 <= cur_ind[1] < dims[1])) or \
  *            (not (0 <= cur_ind[2] < dims[2])):
  */
-    __pyx_t_65 = (__pyx_v_cur_ind[0]);
-    __pyx_t_18 = (0 <= __pyx_t_65);
+    __pyx_t_69 = (__pyx_v_cur_ind[0]);
+    __pyx_t_18 = (0 <= __pyx_t_69);
     if (__pyx_t_18) {
-      __pyx_t_18 = (__pyx_t_65 < (__pyx_v_dims[0]));
+      __pyx_t_18 = (__pyx_t_69 < (__pyx_v_dims[0]));
     }
-    if (!(!__pyx_t_18)) {
+    __pyx_t_3 = (!__pyx_t_18);
+    if (!__pyx_t_3) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":333
  *         if image[ind,3] >= 1.0: break
@@ -10094,12 +10401,13 @@
  *            (not (0 <= cur_ind[2] < dims[2])):
  *             break
  */
-      __pyx_t_65 = (__pyx_v_cur_ind[1]);
-      __pyx_t_3 = (0 <= __pyx_t_65);
-      if (__pyx_t_3) {
-        __pyx_t_3 = (__pyx_t_65 < (__pyx_v_dims[1]));
+      __pyx_t_69 = (__pyx_v_cur_ind[1]);
+      __pyx_t_18 = (0 <= __pyx_t_69);
+      if (__pyx_t_18) {
+        __pyx_t_18 = (__pyx_t_69 < (__pyx_v_dims[1]));
       }
-      if (!(!__pyx_t_3)) {
+      __pyx_t_22 = (!__pyx_t_18);
+      if (!__pyx_t_22) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":334
  *         if (not (0 <= cur_ind[0] < dims[0])) or \
@@ -10108,20 +10416,21 @@
  *             break
  *         # Do our transfer here
  */
-        __pyx_t_65 = (__pyx_v_cur_ind[2]);
-        __pyx_t_36 = (0 <= __pyx_t_65);
-        if (__pyx_t_36) {
-          __pyx_t_36 = (__pyx_t_65 < (__pyx_v_dims[2]));
+        __pyx_t_69 = (__pyx_v_cur_ind[2]);
+        __pyx_t_18 = (0 <= __pyx_t_69);
+        if (__pyx_t_18) {
+          __pyx_t_18 = (__pyx_t_69 < (__pyx_v_dims[2]));
         }
-        __pyx_t_38 = (!__pyx_t_36);
+        __pyx_t_20 = (!__pyx_t_18);
+        __pyx_t_18 = __pyx_t_20;
       } else {
-        __pyx_t_38 = (!__pyx_t_3);
+        __pyx_t_18 = __pyx_t_22;
       }
-      __pyx_t_3 = __pyx_t_38;
+      __pyx_t_22 = __pyx_t_18;
     } else {
-      __pyx_t_3 = (!__pyx_t_18);
+      __pyx_t_22 = __pyx_t_3;
     }
-    if (__pyx_t_3) {
+    if (__pyx_t_22) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":335
  *            (not (0 <= cur_ind[1] < dims[1])) or \
@@ -10142,8 +10451,9 @@
  *             dist = shells[n, 0] - dv
  *             if dist < shells[n,1]:
  */
-    for (__pyx_t_66 = 0; __pyx_t_66 < __pyx_v_nshells; __pyx_t_66+=1) {
-      __pyx_v_n = __pyx_t_66;
+    __pyx_t_70 = __pyx_v_nshells;
+    for (__pyx_t_71 = 0; __pyx_t_71 < __pyx_t_70; __pyx_t_71+=1) {
+      __pyx_v_n = __pyx_t_71;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":338
  *         # Do our transfer here
@@ -10152,9 +10462,9 @@
  *             if dist < shells[n,1]:
  *                 dist = exp(-dist/8.0)
  */
-      __pyx_t_67 = __pyx_v_n;
-      __pyx_t_68 = 0;
-      __pyx_v_dist = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_67, __pyx_bstride_0_shells, __pyx_t_68, __pyx_bstride_1_shells)) - __pyx_v_dv);
+      __pyx_t_72 = __pyx_v_n;
+      __pyx_t_73 = 0;
+      __pyx_v_dist = ((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_72, __pyx_bstride_0_shells, __pyx_t_73, __pyx_bstride_1_shells)) - __pyx_v_dv);
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":339
  *         for n in range(nshells):
@@ -10163,10 +10473,10 @@
  *                 dist = exp(-dist/8.0)
  *                 alpha = (1.0 - shells[n,5])*shells[n,5]#*dt
  */
-      __pyx_t_69 = __pyx_v_n;
-      __pyx_t_70 = 1;
-      __pyx_t_3 = (__pyx_v_dist < (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_69, __pyx_bstride_0_shells, __pyx_t_70, __pyx_bstride_1_shells)));
-      if (__pyx_t_3) {
+      __pyx_t_74 = __pyx_v_n;
+      __pyx_t_75 = 1;
+      __pyx_t_22 = (__pyx_v_dist < (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_74, __pyx_bstride_0_shells, __pyx_t_75, __pyx_bstride_1_shells)));
+      if (__pyx_t_22) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":340
  *             dist = shells[n, 0] - dv
@@ -10184,11 +10494,11 @@
  *                 image[ind,0] += alpha*shells[n,2]*dist
  *                 image[ind,1] += alpha*shells[n,3]*dist
  */
-        __pyx_t_71 = __pyx_v_n;
-        __pyx_t_72 = 5;
-        __pyx_t_73 = __pyx_v_n;
-        __pyx_t_74 = 5;
-        __pyx_v_alpha = ((1.0 - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_71, __pyx_bstride_0_shells, __pyx_t_72, __pyx_bstride_1_shells))) * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_73, __pyx_bstride_0_shells, __pyx_t_74, __pyx_bstride_1_shells)));
+        __pyx_t_76 = __pyx_v_n;
+        __pyx_t_77 = 5;
+        __pyx_t_78 = __pyx_v_n;
+        __pyx_t_79 = 5;
+        __pyx_v_alpha = ((1.0 - (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_76, __pyx_bstride_0_shells, __pyx_t_77, __pyx_bstride_1_shells))) * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_78, __pyx_bstride_0_shells, __pyx_t_79, __pyx_bstride_1_shells)));
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":342
  *                 dist = exp(-dist/8.0)
@@ -10197,11 +10507,11 @@
  *                 image[ind,1] += alpha*shells[n,3]*dist
  *                 image[ind,2] += alpha*shells[n,4]*dist
  */
-        __pyx_t_75 = __pyx_v_n;
-        __pyx_t_76 = 2;
-        __pyx_t_77 = __pyx_v_ind;
-        __pyx_t_78 = 0;
-        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_77, __pyx_bstride_0_image, __pyx_t_78, __pyx_bstride_1_image) += ((__pyx_v_alpha * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_75, __pyx_bstride_0_shells, __pyx_t_76, __pyx_bstride_1_shells))) * __pyx_v_dist);
+        __pyx_t_80 = __pyx_v_n;
+        __pyx_t_81 = 2;
+        __pyx_t_82 = __pyx_v_ind;
+        __pyx_t_83 = 0;
+        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_82, __pyx_bstride_0_image, __pyx_t_83, __pyx_bstride_1_image) += ((__pyx_v_alpha * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_80, __pyx_bstride_0_shells, __pyx_t_81, __pyx_bstride_1_shells))) * __pyx_v_dist);
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":343
  *                 alpha = (1.0 - shells[n,5])*shells[n,5]#*dt
@@ -10210,11 +10520,11 @@
  *                 image[ind,2] += alpha*shells[n,4]*dist
  *                 image[ind,3] += alpha*shells[n,5]*dist
  */
-        __pyx_t_79 = __pyx_v_n;
-        __pyx_t_80 = 3;
-        __pyx_t_81 = __pyx_v_ind;
-        __pyx_t_82 = 1;
-        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_81, __pyx_bstride_0_image, __pyx_t_82, __pyx_bstride_1_image) += ((__pyx_v_alpha * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_79, __pyx_bstride_0_shells, __pyx_t_80, __pyx_bstride_1_shells))) * __pyx_v_dist);
+        __pyx_t_84 = __pyx_v_n;
+        __pyx_t_85 = 3;
+        __pyx_t_86 = __pyx_v_ind;
+        __pyx_t_87 = 1;
+        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_86, __pyx_bstride_0_image, __pyx_t_87, __pyx_bstride_1_image) += ((__pyx_v_alpha * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_84, __pyx_bstride_0_shells, __pyx_t_85, __pyx_bstride_1_shells))) * __pyx_v_dist);
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":344
  *                 image[ind,0] += alpha*shells[n,2]*dist
@@ -10223,11 +10533,11 @@
  *                 image[ind,3] += alpha*shells[n,5]*dist
  *                 #image[ind,i] += rgba[i]*dist*rgba[3]/dt
  */
-        __pyx_t_83 = __pyx_v_n;
-        __pyx_t_84 = 4;
-        __pyx_t_85 = __pyx_v_ind;
-        __pyx_t_86 = 2;
-        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_85, __pyx_bstride_0_image, __pyx_t_86, __pyx_bstride_1_image) += ((__pyx_v_alpha * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_83, __pyx_bstride_0_shells, __pyx_t_84, __pyx_bstride_1_shells))) * __pyx_v_dist);
+        __pyx_t_88 = __pyx_v_n;
+        __pyx_t_89 = 4;
+        __pyx_t_90 = __pyx_v_ind;
+        __pyx_t_91 = 2;
+        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_90, __pyx_bstride_0_image, __pyx_t_91, __pyx_bstride_1_image) += ((__pyx_v_alpha * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_88, __pyx_bstride_0_shells, __pyx_t_89, __pyx_bstride_1_shells))) * __pyx_v_dist);
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":345
  *                 image[ind,1] += alpha*shells[n,3]*dist
@@ -10236,11 +10546,11 @@
  *                 #image[ind,i] += rgba[i]*dist*rgba[3]/dt
  *                 #print rgba[i], image[ind,i], dist, dt
  */
-        __pyx_t_87 = __pyx_v_n;
-        __pyx_t_88 = 5;
-        __pyx_t_89 = __pyx_v_ind;
-        __pyx_t_90 = 3;
-        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_89, __pyx_bstride_0_image, __pyx_t_90, __pyx_bstride_1_image) += ((__pyx_v_alpha * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_87, __pyx_bstride_0_shells, __pyx_t_88, __pyx_bstride_1_shells))) * __pyx_v_dist);
+        __pyx_t_92 = __pyx_v_n;
+        __pyx_t_93 = 5;
+        __pyx_t_94 = __pyx_v_ind;
+        __pyx_t_95 = 3;
+        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_image.buf, __pyx_t_94, __pyx_bstride_0_image, __pyx_t_95, __pyx_bstride_1_image) += ((__pyx_v_alpha * (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_shells.buf, __pyx_t_92, __pyx_bstride_0_shells, __pyx_t_93, __pyx_bstride_1_shells))) * __pyx_v_dist);
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":348
  *                 #image[ind,i] += rgba[i]*dist*rgba[3]/dt
@@ -10263,17 +10573,20 @@
  *             dt = 1.0 - enter_t
  *             break
  */
-    if (((__pyx_v_tmax[0]) > 1.0)) {
-      if (((__pyx_v_tmax[1]) > 1.0)) {
-        __pyx_t_3 = ((__pyx_v_tmax[2]) > 1.0);
+    __pyx_t_22 = ((__pyx_v_tmax[0]) > 1.0);
+    if (__pyx_t_22) {
+      __pyx_t_3 = ((__pyx_v_tmax[1]) > 1.0);
+      if (__pyx_t_3) {
+        __pyx_t_18 = ((__pyx_v_tmax[2]) > 1.0);
+        __pyx_t_20 = __pyx_t_18;
       } else {
-        __pyx_t_3 = ((__pyx_v_tmax[1]) > 1.0);
+        __pyx_t_20 = __pyx_t_3;
       }
-      __pyx_t_18 = __pyx_t_3;
+      __pyx_t_3 = __pyx_t_20;
     } else {
-      __pyx_t_18 = ((__pyx_v_tmax[0]) > 1.0);
+      __pyx_t_3 = __pyx_t_22;
     }
-    if (__pyx_t_18) {
+    if (__pyx_t_3) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":350
  *                 break
@@ -10303,8 +10616,8 @@
  *             if tmax[0] < tmax[2]:
  *                 dt = tmax[0] - enter_t
  */
-    __pyx_t_18 = ((__pyx_v_tmax[0]) < (__pyx_v_tmax[1]));
-    if (__pyx_t_18) {
+    __pyx_t_3 = ((__pyx_v_tmax[0]) < (__pyx_v_tmax[1]));
+    if (__pyx_t_3) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":353
  *             break
@@ -10313,8 +10626,8 @@
  *                 dt = tmax[0] - enter_t
  *                 enter_t = tmax[0]
  */
-      __pyx_t_18 = ((__pyx_v_tmax[0]) < (__pyx_v_tmax[2]));
-      if (__pyx_t_18) {
+      __pyx_t_3 = ((__pyx_v_tmax[0]) < (__pyx_v_tmax[2]));
+      if (__pyx_t_3) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":354
  *         if tmax[0] < tmax[1]:
@@ -10403,8 +10716,8 @@
  *                 dt = tmax[1] - enter_t
  *                 enter_t = tmax[1]
  */
-      __pyx_t_18 = ((__pyx_v_tmax[1]) < (__pyx_v_tmax[2]));
-      if (__pyx_t_18) {
+      __pyx_t_3 = ((__pyx_v_tmax[1]) < (__pyx_v_tmax[2]));
+      if (__pyx_t_3) {
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":365
  *         else:
@@ -10489,20 +10802,19 @@
  *                 cur_ind[2] += step[2]
  *         dv = data[cur_ind[0], cur_ind[1], cur_ind[2]]             # <<<<<<<<<<<<<<
  */
-    __pyx_t_65 = (__pyx_v_cur_ind[0]);
-    __pyx_t_91 = (__pyx_v_cur_ind[1]);
-    __pyx_t_92 = (__pyx_v_cur_ind[2]);
-    __pyx_v_dv = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_data.buf, __pyx_t_65, __pyx_bstride_0_data, __pyx_t_91, __pyx_bstride_1_data, __pyx_t_92, __pyx_bstride_2_data));
+    __pyx_t_69 = (__pyx_v_cur_ind[0]);
+    __pyx_t_96 = (__pyx_v_cur_ind[1]);
+    __pyx_t_97 = (__pyx_v_cur_ind[2]);
+    __pyx_v_dv = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_data.buf, __pyx_t_69, __pyx_bstride_0_data, __pyx_t_96, __pyx_bstride_1_data, __pyx_t_97, __pyx_bstride_2_data));
   }
   __pyx_L23_break:;
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
-  __Pyx_XDECREF(__pyx_t_41);
   __Pyx_XDECREF(__pyx_t_45);
   __Pyx_XDECREF(__pyx_t_46);
+  __Pyx_XDECREF(__pyx_t_50);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_image);
@@ -10527,8 +10839,16 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_u);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_v);
   __pyx_L2:;
+  __Pyx_DECREF((PyObject *)__pyx_v_u);
+  __Pyx_DECREF((PyObject *)__pyx_v_v);
+  __Pyx_DECREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_dx);
+  __Pyx_DECREF((PyObject *)__pyx_v_data);
+  __Pyx_DECREF((PyObject *)__pyx_v_shells);
+  __Pyx_DECREF((PyObject *)__pyx_v_image);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -10540,10 +10860,10 @@
  *     return i1
  */
 
-static INLINE int __pyx_f_2yt_9amr_utils_imax(int __pyx_v_i0, int __pyx_v_i1) {
+static CYTHON_INLINE int __pyx_f_2yt_9amr_utils_imax(int __pyx_v_i0, int __pyx_v_i1) {
   int __pyx_r;
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("imax");
+  __Pyx_RefNannySetupContext("imax");
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":32
  * 
@@ -10572,7 +10892,7 @@
 
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -10584,10 +10904,10 @@
  *     return f1
  */
 
-static INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fmax(__pyx_t_5numpy_float64_t __pyx_v_f0, __pyx_t_5numpy_float64_t __pyx_v_f1) {
+static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fmax(__pyx_t_5numpy_float64_t __pyx_v_f0, __pyx_t_5numpy_float64_t __pyx_v_f1) {
   __pyx_t_5numpy_float64_t __pyx_r;
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("fmax");
+  __Pyx_RefNannySetupContext("fmax");
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":36
  * 
@@ -10616,7 +10936,7 @@
 
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -10628,10 +10948,10 @@
  *     return i1
  */
 
-static INLINE int __pyx_f_2yt_9amr_utils_imin(int __pyx_v_i0, int __pyx_v_i1) {
+static CYTHON_INLINE int __pyx_f_2yt_9amr_utils_imin(int __pyx_v_i0, int __pyx_v_i1) {
   int __pyx_r;
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("imin");
+  __Pyx_RefNannySetupContext("imin");
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":40
  * 
@@ -10660,7 +10980,7 @@
 
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -10672,10 +10992,10 @@
  *     return f1
  */
 
-static INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fmin(__pyx_t_5numpy_float64_t __pyx_v_f0, __pyx_t_5numpy_float64_t __pyx_v_f1) {
+static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fmin(__pyx_t_5numpy_float64_t __pyx_v_f0, __pyx_t_5numpy_float64_t __pyx_v_f1) {
   __pyx_t_5numpy_float64_t __pyx_r;
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("fmin");
+  __Pyx_RefNannySetupContext("fmin");
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":44
  * 
@@ -10704,7 +11024,7 @@
 
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -10716,9 +11036,9 @@
  * 
  */
 
-static INLINE int __pyx_f_2yt_9amr_utils_iclip(int __pyx_v_i, int __pyx_v_a, int __pyx_v_b) {
+static CYTHON_INLINE int __pyx_f_2yt_9amr_utils_iclip(int __pyx_v_i, int __pyx_v_a, int __pyx_v_b) {
   int __pyx_r;
-  __Pyx_SetupRefcountContext("iclip");
+  __Pyx_RefNannySetupContext("iclip");
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":48
  * 
@@ -10732,7 +11052,7 @@
 
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -10744,9 +11064,9 @@
  *     return fmin(fmax(f, a), b)
  */
 
-static INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fclip(__pyx_t_5numpy_float64_t __pyx_v_f, __pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
+static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_f_2yt_9amr_utils_fclip(__pyx_t_5numpy_float64_t __pyx_v_f, __pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
   __pyx_t_5numpy_float64_t __pyx_r;
-  __Pyx_SetupRefcountContext("fclip");
+  __Pyx_RefNannySetupContext("fclip");
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":52
  * cdef inline np.float64_t fclip(np.float64_t f,
@@ -10760,11 +11080,11 @@
 
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":83
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":84
  *     cdef int use_light
  *     cdef public object tf_obj
  *     def __cinit__(self, tf_obj):             # <<<<<<<<<<<<<<
@@ -10782,7 +11102,6 @@
   Py_ssize_t __pyx_bstride_0_temp = 0;
   Py_ssize_t __pyx_bshape_0_temp = 0;
   int __pyx_r;
-  PyObject *__pyx_1 = 0;
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyArrayObject *__pyx_t_3 = NULL;
@@ -10793,8 +11112,8 @@
   __pyx_t_5numpy_float64_t __pyx_t_8;
   Py_ssize_t __pyx_t_9;
   Py_ssize_t __pyx_t_10;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_tf_obj,0};
-  __Pyx_SetupRefcountContext("__cinit__");
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tf_obj,0};
+  __Pyx_RefNannySetupContext("__cinit__");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[1] = {0};
@@ -10805,12 +11124,12 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_tf_obj);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tf_obj);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_tf_obj = values[0];
   } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
@@ -10820,16 +11139,18 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.TransferFunctionProxy.__cinit__");
   return -1;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF(__pyx_v_tf_obj);
   __pyx_v_temp = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
   __pyx_bstruct_temp.buf = NULL;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":84
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":85
  *     cdef public object tf_obj
  *     def __cinit__(self, tf_obj):
  *         self.tf_obj = tf_obj             # <<<<<<<<<<<<<<
@@ -10842,19 +11163,19 @@
   __Pyx_DECREF(((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->tf_obj);
   ((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->tf_obj = __pyx_v_tf_obj;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":86
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":87
  *         self.tf_obj = tf_obj
  *         cdef np.ndarray[np.float64_t, ndim=1] temp
  *         temp = tf_obj.red.y             # <<<<<<<<<<<<<<
  *         self.vs[0] = <np.float64_t *> temp.data
  *         temp = tf_obj.green.y
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_red); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__red); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_kp_y); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__y); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_3 = ((PyArrayObject *)__pyx_t_2);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
@@ -10871,14 +11192,14 @@
     }
     __pyx_bstride_0_temp = __pyx_bstruct_temp.strides[0];
     __pyx_bshape_0_temp = __pyx_bstruct_temp.shape[0];
-    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_3 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_temp));
   __pyx_v_temp = ((PyArrayObject *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":87
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":88
  *         cdef np.ndarray[np.float64_t, ndim=1] temp
  *         temp = tf_obj.red.y
  *         self.vs[0] = <np.float64_t *> temp.data             # <<<<<<<<<<<<<<
@@ -10887,19 +11208,19 @@
  */
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->vs[0]) = ((__pyx_t_5numpy_float64_t *)__pyx_v_temp->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":88
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":89
  *         temp = tf_obj.red.y
  *         self.vs[0] = <np.float64_t *> temp.data
  *         temp = tf_obj.green.y             # <<<<<<<<<<<<<<
  *         self.vs[1] = <np.float64_t *> temp.data
  *         temp = tf_obj.blue.y
  */
-  __pyx_t_2 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_green); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__green); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_kp_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_3 = ((PyArrayObject *)__pyx_t_1);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
@@ -10916,14 +11237,14 @@
     }
     __pyx_bstride_0_temp = __pyx_bstruct_temp.strides[0];
     __pyx_bshape_0_temp = __pyx_bstruct_temp.shape[0];
-    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_3 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_temp));
   __pyx_v_temp = ((PyArrayObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":89
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":90
  *         self.vs[0] = <np.float64_t *> temp.data
  *         temp = tf_obj.green.y
  *         self.vs[1] = <np.float64_t *> temp.data             # <<<<<<<<<<<<<<
@@ -10932,19 +11253,19 @@
  */
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->vs[1]) = ((__pyx_t_5numpy_float64_t *)__pyx_v_temp->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":90
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":91
  *         temp = tf_obj.green.y
  *         self.vs[1] = <np.float64_t *> temp.data
  *         temp = tf_obj.blue.y             # <<<<<<<<<<<<<<
  *         self.vs[2] = <np.float64_t *> temp.data
  *         temp = tf_obj.alpha.y
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_blue); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__blue); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_kp_y); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__y); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_3 = ((PyArrayObject *)__pyx_t_2);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
@@ -10961,14 +11282,14 @@
     }
     __pyx_bstride_0_temp = __pyx_bstruct_temp.strides[0];
     __pyx_bshape_0_temp = __pyx_bstruct_temp.shape[0];
-    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_3 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_temp));
   __pyx_v_temp = ((PyArrayObject *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":91
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":92
  *         self.vs[1] = <np.float64_t *> temp.data
  *         temp = tf_obj.blue.y
  *         self.vs[2] = <np.float64_t *> temp.data             # <<<<<<<<<<<<<<
@@ -10977,19 +11298,19 @@
  */
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->vs[2]) = ((__pyx_t_5numpy_float64_t *)__pyx_v_temp->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":92
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":93
  *         temp = tf_obj.blue.y
  *         self.vs[2] = <np.float64_t *> temp.data
  *         temp = tf_obj.alpha.y             # <<<<<<<<<<<<<<
  *         self.vs[3] = <np.float64_t *> temp.data
  *         self.x_bounds[0] = tf_obj.x_bounds[0]
  */
-  __pyx_t_2 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_alpha); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__alpha); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_kp_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_3 = ((PyArrayObject *)__pyx_t_1);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
@@ -11006,14 +11327,14 @@
     }
     __pyx_bstride_0_temp = __pyx_bstruct_temp.strides[0];
     __pyx_bshape_0_temp = __pyx_bstruct_temp.shape[0];
-    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_3 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_temp));
   __pyx_v_temp = ((PyArrayObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":93
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":94
  *         self.vs[2] = <np.float64_t *> temp.data
  *         temp = tf_obj.alpha.y
  *         self.vs[3] = <np.float64_t *> temp.data             # <<<<<<<<<<<<<<
@@ -11022,157 +11343,162 @@
  */
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->vs[3]) = ((__pyx_t_5numpy_float64_t *)__pyx_v_temp->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":94
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":95
  *         temp = tf_obj.alpha.y
  *         self.vs[3] = <np.float64_t *> temp.data
  *         self.x_bounds[0] = tf_obj.x_bounds[0]             # <<<<<<<<<<<<<<
  *         self.x_bounds[1] = tf_obj.x_bounds[1]
  *         self.nbins = tf_obj.nbins
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_x_bounds); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__x_bounds); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_1 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->x_bounds[0]) = __pyx_t_8;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":95
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":96
  *         self.vs[3] = <np.float64_t *> temp.data
  *         self.x_bounds[0] = tf_obj.x_bounds[0]
  *         self.x_bounds[1] = tf_obj.x_bounds[1]             # <<<<<<<<<<<<<<
  *         self.nbins = tf_obj.nbins
  *         self.dbin = (self.x_bounds[1] - self.x_bounds[0])/self.nbins
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_x_bounds); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__x_bounds); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_1 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_8 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->x_bounds[1]) = __pyx_t_8;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":96
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":97
  *         self.x_bounds[0] = tf_obj.x_bounds[0]
  *         self.x_bounds[1] = tf_obj.x_bounds[1]
  *         self.nbins = tf_obj.nbins             # <<<<<<<<<<<<<<
  *         self.dbin = (self.x_bounds[1] - self.x_bounds[0])/self.nbins
  *         self.light_color[0] = tf_obj.light_color[0]
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_nbins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__nbins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   ((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->nbins = __pyx_t_4;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":97
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":98
  *         self.x_bounds[1] = tf_obj.x_bounds[1]
  *         self.nbins = tf_obj.nbins
  *         self.dbin = (self.x_bounds[1] - self.x_bounds[0])/self.nbins             # <<<<<<<<<<<<<<
  *         self.light_color[0] = tf_obj.light_color[0]
  *         self.light_color[1] = tf_obj.light_color[1]
  */
-  ((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->dbin = (((((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->x_bounds[1]) - (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->x_bounds[0])) / ((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->nbins);
+  __pyx_t_8 = ((((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->x_bounds[1]) - (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->x_bounds[0]));
+  if (unlikely(((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->nbins == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  ((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->dbin = (__pyx_t_8 / ((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->nbins);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":98
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":99
  *         self.nbins = tf_obj.nbins
  *         self.dbin = (self.x_bounds[1] - self.x_bounds[0])/self.nbins
  *         self.light_color[0] = tf_obj.light_color[0]             # <<<<<<<<<<<<<<
  *         self.light_color[1] = tf_obj.light_color[1]
  *         self.light_color[2] = tf_obj.light_color[2]
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_light_color); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__light_color); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_1 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->light_color[0]) = __pyx_t_8;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":99
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":100
  *         self.dbin = (self.x_bounds[1] - self.x_bounds[0])/self.nbins
  *         self.light_color[0] = tf_obj.light_color[0]
  *         self.light_color[1] = tf_obj.light_color[1]             # <<<<<<<<<<<<<<
  *         self.light_color[2] = tf_obj.light_color[2]
  *         self.light_dir[0] = tf_obj.light_dir[0]
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_light_color); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__light_color); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_1 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_8 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->light_color[1]) = __pyx_t_8;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":100
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":101
  *         self.light_color[0] = tf_obj.light_color[0]
  *         self.light_color[1] = tf_obj.light_color[1]
  *         self.light_color[2] = tf_obj.light_color[2]             # <<<<<<<<<<<<<<
  *         self.light_dir[0] = tf_obj.light_dir[0]
  *         self.light_dir[1] = tf_obj.light_dir[1]
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_light_color); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__light_color); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_1 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->light_color[2]) = __pyx_t_8;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":101
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":102
  *         self.light_color[1] = tf_obj.light_color[1]
  *         self.light_color[2] = tf_obj.light_color[2]
  *         self.light_dir[0] = tf_obj.light_dir[0]             # <<<<<<<<<<<<<<
  *         self.light_dir[1] = tf_obj.light_dir[1]
  *         self.light_dir[2] = tf_obj.light_dir[2]
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_light_dir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__light_dir); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_1 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_8 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->light_dir[0]) = __pyx_t_8;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":102
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":103
  *         self.light_color[2] = tf_obj.light_color[2]
  *         self.light_dir[0] = tf_obj.light_dir[0]
  *         self.light_dir[1] = tf_obj.light_dir[1]             # <<<<<<<<<<<<<<
  *         self.light_dir[2] = tf_obj.light_dir[2]
  *         cdef np.float64_t normval = 0.0
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_light_dir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__light_dir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_1 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->light_dir[1]) = __pyx_t_8;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":103
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":104
  *         self.light_dir[0] = tf_obj.light_dir[0]
  *         self.light_dir[1] = tf_obj.light_dir[1]
  *         self.light_dir[2] = tf_obj.light_dir[2]             # <<<<<<<<<<<<<<
  *         cdef np.float64_t normval = 0.0
  *         for i in range(3): normval += self.light_dir[i]**2
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_light_dir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__light_dir); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_1 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_8 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
   (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->light_dir[2]) = __pyx_t_8;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":104
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":105
  *         self.light_dir[1] = tf_obj.light_dir[1]
  *         self.light_dir[2] = tf_obj.light_dir[2]
  *         cdef np.float64_t normval = 0.0             # <<<<<<<<<<<<<<
@@ -11181,25 +11507,25 @@
  */
   __pyx_v_normval = 0.0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":105
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":106
  *         self.light_dir[2] = tf_obj.light_dir[2]
  *         cdef np.float64_t normval = 0.0
  *         for i in range(3): normval += self.light_dir[i]**2             # <<<<<<<<<<<<<<
  *         normval = normval**0.5
  *         for i in range(3): self.light_dir[i] /= normval
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_int_3);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_t_2 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
     __pyx_t_9 = 0; __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1);
   } else {
-    __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -11213,7 +11539,7 @@
     } else {
       __pyx_t_2 = PyIter_Next(__pyx_t_1);
       if (!__pyx_t_2) {
-        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         break;
       }
       __Pyx_GOTREF(__pyx_t_2);
@@ -11221,12 +11547,12 @@
     __Pyx_DECREF(__pyx_v_i);
     __pyx_v_i = __pyx_t_2;
     __pyx_t_2 = 0;
-    __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_normval += pow((((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->light_dir[__pyx_t_10]), 2);
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":106
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":107
  *         cdef np.float64_t normval = 0.0
  *         for i in range(3): normval += self.light_dir[i]**2
  *         normval = normval**0.5             # <<<<<<<<<<<<<<
@@ -11235,25 +11561,25 @@
  */
   __pyx_v_normval = pow(__pyx_v_normval, 0.5);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":107
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":108
  *         for i in range(3): normval += self.light_dir[i]**2
  *         normval = normval**0.5
  *         for i in range(3): self.light_dir[i] /= normval             # <<<<<<<<<<<<<<
  *         self.use_light = tf_obj.use_light
  * 
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_int_3);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_t_2 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
     __pyx_t_9 = 0; __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1);
   } else {
-    __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -11267,7 +11593,7 @@
     } else {
       __pyx_t_2 = PyIter_Next(__pyx_t_1);
       if (!__pyx_t_2) {
-        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         break;
       }
       __Pyx_GOTREF(__pyx_t_2);
@@ -11275,28 +11601,27 @@
     __Pyx_DECREF(__pyx_v_i);
     __pyx_v_i = __pyx_t_2;
     __pyx_t_2 = 0;
-    __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     (((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->light_dir[__pyx_t_10]) /= __pyx_v_normval;
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":108
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":109
  *         normval = normval**0.5
  *         for i in range(3): self.light_dir[i] /= normval
  *         self.use_light = tf_obj.use_light             # <<<<<<<<<<<<<<
  * 
  *     cdef void eval_transfer(self, np.float64_t dt, np.float64_t dv,
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_kp_use_light); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_tf_obj, __pyx_n_s__use_light); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   ((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_self)->use_light = __pyx_t_4;
 
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
@@ -11311,11 +11636,13 @@
   __pyx_L2:;
   __Pyx_DECREF((PyObject *)__pyx_v_temp);
   __Pyx_DECREF(__pyx_v_i);
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF(__pyx_v_tf_obj);
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":110
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":111
  *         self.use_light = tf_obj.use_light
  * 
  *     cdef void eval_transfer(self, np.float64_t dt, np.float64_t dv,             # <<<<<<<<<<<<<<
@@ -11333,10 +11660,12 @@
   __pyx_t_5numpy_float64_t __pyx_v_dd;
   __pyx_t_5numpy_float64_t __pyx_v_ta;
   __pyx_t_5numpy_float64_t __pyx_v_dot_prod;
-  int __pyx_t_1;
-  __Pyx_SetupRefcountContext("eval_transfer");
+  __pyx_t_5numpy_float64_t __pyx_t_1;
+  int __pyx_t_2;
+  __Pyx_RefNannySetupContext("eval_transfer");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":115
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":116
  *         cdef int bin_id
  *         cdef np.float64_t tf, trgba[4], bv, dx, dy, dd, ta, dot_prod
  *         dx = self.dbin             # <<<<<<<<<<<<<<
@@ -11346,15 +11675,28 @@
   __pyx_v_dx = __pyx_v_self->dbin;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":120
+ *         # get source alpha first
+ *         # First locate our points
+ *         bin_id = iclip(<int> floor((dv - self.x_bounds[0]) / dx),             # <<<<<<<<<<<<<<
+ *                         0, self.nbins-2)
+ *             # Recall that linear interpolation is y0 + (x-x0) * dx/dy
+ */
+  __pyx_t_1 = (__pyx_v_dv - (__pyx_v_self->x_bounds[0]));
+  if (unlikely(__pyx_v_dx == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":121
  *         # First locate our points
  *         bin_id = iclip(<int> floor((dv - self.x_bounds[0]) / dx),
  *                         0, self.nbins-2)             # <<<<<<<<<<<<<<
  *             # Recall that linear interpolation is y0 + (x-x0) * dx/dy
  *         bv = self.vs[3][bin_id] # This is x0
  */
-  __pyx_v_bin_id = __pyx_f_2yt_9amr_utils_iclip(((int)floor(((__pyx_v_dv - (__pyx_v_self->x_bounds[0])) / __pyx_v_dx))), 0, (__pyx_v_self->nbins - 2));
+  __pyx_v_bin_id = __pyx_f_2yt_9amr_utils_iclip(((int)floor((__pyx_t_1 / __pyx_v_dx))), 0, (__pyx_v_self->nbins - 2));
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":122
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":123
  *                         0, self.nbins-2)
  *             # Recall that linear interpolation is y0 + (x-x0) * dx/dy
  *         bv = self.vs[3][bin_id] # This is x0             # <<<<<<<<<<<<<<
@@ -11363,7 +11705,7 @@
  */
   __pyx_v_bv = ((__pyx_v_self->vs[3])[__pyx_v_bin_id]);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":123
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":124
  *             # Recall that linear interpolation is y0 + (x-x0) * dx/dy
  *         bv = self.vs[3][bin_id] # This is x0
  *         dy = self.vs[3][bin_id+1]-bv # dy             # <<<<<<<<<<<<<<
@@ -11372,7 +11714,7 @@
  */
   __pyx_v_dy = (((__pyx_v_self->vs[3])[(__pyx_v_bin_id + 1)]) - __pyx_v_bv);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":124
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":125
  *         bv = self.vs[3][bin_id] # This is x0
  *         dy = self.vs[3][bin_id+1]-bv # dy
  *         dd = dv-(self.x_bounds[0] + bin_id * dx) # x - x0             # <<<<<<<<<<<<<<
@@ -11381,16 +11723,20 @@
  */
   __pyx_v_dd = (__pyx_v_dv - ((__pyx_v_self->x_bounds[0]) + (__pyx_v_bin_id * __pyx_v_dx)));
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":126
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":127
  *         dd = dv-(self.x_bounds[0] + bin_id * dx) # x - x0
  *             # This is our final value for transfer function on the entering face
  *         tf = bv+dd*(dy/dx)             # <<<<<<<<<<<<<<
  *         ta = tf  # Store the source alpha
  *         dot_prod = 0.0
  */
+  if (unlikely(__pyx_v_dx == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
   __pyx_v_tf = (__pyx_v_bv + (__pyx_v_dd * (__pyx_v_dy / __pyx_v_dx)));
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":127
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":128
  *             # This is our final value for transfer function on the entering face
  *         tf = bv+dd*(dy/dx)
  *         ta = tf  # Store the source alpha             # <<<<<<<<<<<<<<
@@ -11399,7 +11745,7 @@
  */
   __pyx_v_ta = __pyx_v_tf;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":128
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":129
  *         tf = bv+dd*(dy/dx)
  *         ta = tf  # Store the source alpha
  *         dot_prod = 0.0             # <<<<<<<<<<<<<<
@@ -11408,17 +11754,17 @@
  */
   __pyx_v_dot_prod = 0.0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":129
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":130
  *         ta = tf  # Store the source alpha
  *         dot_prod = 0.0
  *         for i in range(3):             # <<<<<<<<<<<<<<
  *             dot_prod += self.light_dir[i] * grad[i]
  *         #print dot_prod, grad[0], grad[1], grad[2]
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) {
-    __pyx_v_i = __pyx_t_1;
+  for (__pyx_t_2 = 0; __pyx_t_2 < 3; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":130
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":131
  *         dot_prod = 0.0
  *         for i in range(3):
  *             dot_prod += self.light_dir[i] * grad[i]             # <<<<<<<<<<<<<<
@@ -11428,7 +11774,7 @@
     __pyx_v_dot_prod += ((__pyx_v_self->light_dir[__pyx_v_i]) * (__pyx_v_grad[__pyx_v_i]));
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":132
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":133
  *             dot_prod += self.light_dir[i] * grad[i]
  *         #print dot_prod, grad[0], grad[1], grad[2]
  *         dot_prod = fmax(0.0, dot_prod)             # <<<<<<<<<<<<<<
@@ -11437,17 +11783,17 @@
  */
   __pyx_v_dot_prod = __pyx_f_2yt_9amr_utils_fmax(0.0, __pyx_v_dot_prod);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":133
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":134
  *         #print dot_prod, grad[0], grad[1], grad[2]
  *         dot_prod = fmax(0.0, dot_prod)
  *         for i in range(3):             # <<<<<<<<<<<<<<
  *             # Recall that linear interpolation is y0 + (x-x0) * dx/dy
  *             bv = self.vs[i][bin_id] # This is x0
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) {
-    __pyx_v_i = __pyx_t_1;
+  for (__pyx_t_2 = 0; __pyx_t_2 < 3; __pyx_t_2+=1) {
+    __pyx_v_i = __pyx_t_2;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":135
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":136
  *         for i in range(3):
  *             # Recall that linear interpolation is y0 + (x-x0) * dx/dy
  *             bv = self.vs[i][bin_id] # This is x0             # <<<<<<<<<<<<<<
@@ -11456,7 +11802,7 @@
  */
     __pyx_v_bv = ((__pyx_v_self->vs[__pyx_v_i])[__pyx_v_bin_id]);
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":136
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":137
  *             # Recall that linear interpolation is y0 + (x-x0) * dx/dy
  *             bv = self.vs[i][bin_id] # This is x0
  *             dy = self.vs[i][bin_id+1]-bv # dy             # <<<<<<<<<<<<<<
@@ -11465,7 +11811,7 @@
  */
     __pyx_v_dy = (((__pyx_v_self->vs[__pyx_v_i])[(__pyx_v_bin_id + 1)]) - __pyx_v_bv);
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":137
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":138
  *             bv = self.vs[i][bin_id] # This is x0
  *             dy = self.vs[i][bin_id+1]-bv # dy
  *             dd = dv-(self.x_bounds[0] + bin_id * dx) # x - x0             # <<<<<<<<<<<<<<
@@ -11474,16 +11820,20 @@
  */
     __pyx_v_dd = (__pyx_v_dv - ((__pyx_v_self->x_bounds[0]) + (__pyx_v_bin_id * __pyx_v_dx)));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":139
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":140
  *             dd = dv-(self.x_bounds[0] + bin_id * dx) # x - x0
  *             # This is our final value for transfer function on the entering face
  *             tf = bv+dd*(dy/dx) + dot_prod * self.light_color[i]             # <<<<<<<<<<<<<<
  *             # alpha blending
  *             rgba[i] += (1. - rgba[3])*ta*tf*dt
  */
+    if (unlikely(__pyx_v_dx == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
     __pyx_v_tf = ((__pyx_v_bv + (__pyx_v_dd * (__pyx_v_dy / __pyx_v_dx))) + (__pyx_v_dot_prod * (__pyx_v_self->light_color[__pyx_v_i])));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":141
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":142
  *             tf = bv+dd*(dy/dx) + dot_prod * self.light_color[i]
  *             # alpha blending
  *             rgba[i] += (1. - rgba[3])*ta*tf*dt             # <<<<<<<<<<<<<<
@@ -11493,7 +11843,7 @@
     (__pyx_v_rgba[__pyx_v_i]) += ((((1.0 - (__pyx_v_rgba[3])) * __pyx_v_ta) * __pyx_v_tf) * __pyx_v_dt);
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":143
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":144
  *             rgba[i] += (1. - rgba[3])*ta*tf*dt
  *         #update alpha
  *         rgba[3] += (1. - rgba[3])*ta*dt             # <<<<<<<<<<<<<<
@@ -11502,10 +11852,15 @@
  */
   (__pyx_v_rgba[3]) += (((1.0 - (__pyx_v_rgba[3])) * __pyx_v_ta) * __pyx_v_dt);
 
-  __Pyx_FinishRefcountContext();
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("yt.amr_utils.TransferFunctionProxy.eval_transfer");
+  __pyx_L0:;
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_RefNannyFinishContext();
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":157
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":158
  *     cdef np.float64_t *x_vec, *y_vec
  * 
  *     def __cinit__(self,             # <<<<<<<<<<<<<<
@@ -11550,11 +11905,11 @@
   Py_ssize_t __pyx_bshape_1_vp_pos = 0;
   Py_ssize_t __pyx_bshape_2_vp_pos = 0;
   int __pyx_r;
-  PyObject *__pyx_1 = 0;
   int __pyx_t_1;
-  __pyx_t_5numpy_float64_t __pyx_t_2;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_vp_pos,&__pyx_kp_vp_dir,&__pyx_kp_center,&__pyx_kp_bounds,&__pyx_kp_image,&__pyx_kp_x_vec,&__pyx_kp_y_vec,0};
-  __Pyx_SetupRefcountContext("__cinit__");
+  PyObject *__pyx_t_2 = NULL;
+  __pyx_t_5numpy_float64_t __pyx_t_3;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vp_pos,&__pyx_n_s__vp_dir,&__pyx_n_s__center,&__pyx_n_s__bounds,&__pyx_n_s__image,&__pyx_n_s__x_vec,&__pyx_n_s__y_vec,0};
+  __Pyx_RefNannySetupContext("__cinit__");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[7] = {0,0,0,0,0,0,0};
@@ -11571,48 +11926,48 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_vp_pos);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vp_pos);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_vp_dir);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vp_dir);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_center);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__center);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_bounds);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__bounds);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 3); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 3); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_image);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__image);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 4); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 4); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x_vec);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x_vec);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 5); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 5); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_y_vec);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y_vec);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 6); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 6); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_vp_pos = ((PyArrayObject *)values[0]);
     __pyx_v_vp_dir = ((PyArrayObject *)values[1]);
@@ -11634,61 +11989,69 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.VectorPlane.__cinit__");
   return -1;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF((PyObject *)__pyx_v_vp_pos);
+  __Pyx_INCREF((PyObject *)__pyx_v_vp_dir);
+  __Pyx_INCREF((PyObject *)__pyx_v_center);
+  __Pyx_INCREF(__pyx_v_bounds);
+  __Pyx_INCREF((PyObject *)__pyx_v_image);
+  __Pyx_INCREF((PyObject *)__pyx_v_x_vec);
+  __Pyx_INCREF((PyObject *)__pyx_v_y_vec);
   __pyx_bstruct_vp_pos.buf = NULL;
   __pyx_bstruct_vp_dir.buf = NULL;
   __pyx_bstruct_center.buf = NULL;
   __pyx_bstruct_image.buf = NULL;
   __pyx_bstruct_x_vec.buf = NULL;
   __pyx_bstruct_y_vec.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vp_pos), __pyx_ptype_5numpy_ndarray, 1, "vp_pos", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vp_dir), __pyx_ptype_5numpy_ndarray, 1, "vp_dir", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_center), __pyx_ptype_5numpy_ndarray, 1, "center", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_image), __pyx_ptype_5numpy_ndarray, 1, "image", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_vec), __pyx_ptype_5numpy_ndarray, 1, "x_vec", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_vec), __pyx_ptype_5numpy_ndarray, 1, "y_vec", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vp_pos), __pyx_ptype_5numpy_ndarray, 1, "vp_pos", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vp_dir), __pyx_ptype_5numpy_ndarray, 1, "vp_dir", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_center), __pyx_ptype_5numpy_ndarray, 1, "center", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_image), __pyx_ptype_5numpy_ndarray, 1, "image", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x_vec), __pyx_ptype_5numpy_ndarray, 1, "x_vec", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_vec), __pyx_ptype_5numpy_ndarray, 1, "y_vec", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_vp_pos, (PyObject*)__pyx_v_vp_pos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_vp_pos, (PyObject*)__pyx_v_vp_pos, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_vp_pos = __pyx_bstruct_vp_pos.strides[0]; __pyx_bstride_1_vp_pos = __pyx_bstruct_vp_pos.strides[1]; __pyx_bstride_2_vp_pos = __pyx_bstruct_vp_pos.strides[2];
   __pyx_bshape_0_vp_pos = __pyx_bstruct_vp_pos.shape[0]; __pyx_bshape_1_vp_pos = __pyx_bstruct_vp_pos.shape[1]; __pyx_bshape_2_vp_pos = __pyx_bstruct_vp_pos.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_vp_dir, (PyObject*)__pyx_v_vp_dir, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_vp_dir, (PyObject*)__pyx_v_vp_dir, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_vp_dir = __pyx_bstruct_vp_dir.strides[0];
   __pyx_bshape_0_vp_dir = __pyx_bstruct_vp_dir.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_center, (PyObject*)__pyx_v_center, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_center, (PyObject*)__pyx_v_center, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_center = __pyx_bstruct_center.strides[0];
   __pyx_bshape_0_center = __pyx_bstruct_center.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_image, (PyObject*)__pyx_v_image, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_image, (PyObject*)__pyx_v_image, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_image = __pyx_bstruct_image.strides[0]; __pyx_bstride_1_image = __pyx_bstruct_image.strides[1]; __pyx_bstride_2_image = __pyx_bstruct_image.strides[2];
   __pyx_bshape_0_image = __pyx_bstruct_image.shape[0]; __pyx_bshape_1_image = __pyx_bstruct_image.shape[1]; __pyx_bshape_2_image = __pyx_bstruct_image.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_vec, (PyObject*)__pyx_v_x_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_x_vec, (PyObject*)__pyx_v_x_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_x_vec = __pyx_bstruct_x_vec.strides[0];
   __pyx_bshape_0_x_vec = __pyx_bstruct_x_vec.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_vec, (PyObject*)__pyx_v_y_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_y_vec, (PyObject*)__pyx_v_y_vec, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_y_vec = __pyx_bstruct_y_vec.strides[0];
   __pyx_bshape_0_y_vec = __pyx_bstruct_y_vec.shape[0];
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":166
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":167
  *                   np.ndarray[np.float64_t, ndim=1] y_vec):
  *         cdef int i, j
  *         self.avp_pos = vp_pos             # <<<<<<<<<<<<<<
@@ -11701,7 +12064,7 @@
   __Pyx_DECREF(((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->avp_pos);
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->avp_pos = ((PyObject *)__pyx_v_vp_pos);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":167
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":168
  *         cdef int i, j
  *         self.avp_pos = vp_pos
  *         self.avp_dir = vp_dir             # <<<<<<<<<<<<<<
@@ -11714,7 +12077,7 @@
   __Pyx_DECREF(((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->avp_dir);
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->avp_dir = ((PyObject *)__pyx_v_vp_dir);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":168
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":169
  *         self.avp_pos = vp_pos
  *         self.avp_dir = vp_dir
  *         self.acenter = center             # <<<<<<<<<<<<<<
@@ -11727,7 +12090,7 @@
   __Pyx_DECREF(((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->acenter);
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->acenter = ((PyObject *)__pyx_v_center);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":169
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":170
  *         self.avp_dir = vp_dir
  *         self.acenter = center
  *         self.aimage = image             # <<<<<<<<<<<<<<
@@ -11740,7 +12103,7 @@
   __Pyx_DECREF(((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->aimage);
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->aimage = ((PyObject *)__pyx_v_image);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":170
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":171
  *         self.acenter = center
  *         self.aimage = image
  *         self.ax_vec = x_vec             # <<<<<<<<<<<<<<
@@ -11753,7 +12116,7 @@
   __Pyx_DECREF(((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->ax_vec);
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->ax_vec = ((PyObject *)__pyx_v_x_vec);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":171
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":172
  *         self.aimage = image
  *         self.ax_vec = x_vec
  *         self.ay_vec = y_vec             # <<<<<<<<<<<<<<
@@ -11766,7 +12129,7 @@
   __Pyx_DECREF(((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->ay_vec);
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->ay_vec = ((PyObject *)__pyx_v_y_vec);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":172
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":173
  *         self.ax_vec = x_vec
  *         self.ay_vec = y_vec
  *         self.vp_pos = <np.float64_t *> vp_pos.data             # <<<<<<<<<<<<<<
@@ -11775,7 +12138,7 @@
  */
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->vp_pos = ((__pyx_t_5numpy_float64_t *)__pyx_v_vp_pos->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":173
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":174
  *         self.ay_vec = y_vec
  *         self.vp_pos = <np.float64_t *> vp_pos.data
  *         self.vp_dir = <np.float64_t *> vp_dir.data             # <<<<<<<<<<<<<<
@@ -11784,7 +12147,7 @@
  */
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->vp_dir = ((__pyx_t_5numpy_float64_t *)__pyx_v_vp_dir->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":174
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":175
  *         self.vp_pos = <np.float64_t *> vp_pos.data
  *         self.vp_dir = <np.float64_t *> vp_dir.data
  *         self.center = <np.float64_t *> center.data             # <<<<<<<<<<<<<<
@@ -11793,7 +12156,7 @@
  */
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->center = ((__pyx_t_5numpy_float64_t *)__pyx_v_center->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":175
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":176
  *         self.vp_dir = <np.float64_t *> vp_dir.data
  *         self.center = <np.float64_t *> center.data
  *         self.image = <np.float64_t *> image.data             # <<<<<<<<<<<<<<
@@ -11802,7 +12165,7 @@
  */
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->image = ((__pyx_t_5numpy_float64_t *)__pyx_v_image->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":176
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":177
  *         self.center = <np.float64_t *> center.data
  *         self.image = <np.float64_t *> image.data
  *         self.x_vec = <np.float64_t *> x_vec.data             # <<<<<<<<<<<<<<
@@ -11811,7 +12174,7 @@
  */
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->x_vec = ((__pyx_t_5numpy_float64_t *)__pyx_v_x_vec->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":177
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":178
  *         self.image = <np.float64_t *> image.data
  *         self.x_vec = <np.float64_t *> x_vec.data
  *         self.y_vec = <np.float64_t *> y_vec.data             # <<<<<<<<<<<<<<
@@ -11820,7 +12183,7 @@
  */
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->y_vec = ((__pyx_t_5numpy_float64_t *)__pyx_v_y_vec->data);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":178
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":179
  *         self.x_vec = <np.float64_t *> x_vec.data
  *         self.y_vec = <np.float64_t *> y_vec.data
  *         self.nv = vp_pos.shape[0]             # <<<<<<<<<<<<<<
@@ -11829,7 +12192,7 @@
  */
   ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->nv = (__pyx_v_vp_pos->dimensions[0]);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":179
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":180
  *         self.y_vec = <np.float64_t *> y_vec.data
  *         self.nv = vp_pos.shape[0]
  *         for i in range(4): self.bounds[i] = bounds[i]             # <<<<<<<<<<<<<<
@@ -11838,35 +12201,45 @@
  */
   for (__pyx_t_1 = 0; __pyx_t_1 < 4; __pyx_t_1+=1) {
     __pyx_v_i = __pyx_t_1;
-    __pyx_1 = __Pyx_GetItemInt(__pyx_v_bounds, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_1);
-    __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-    (((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[__pyx_v_i]) = __pyx_t_2;
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_bounds, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_3 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    (((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[__pyx_v_i]) = __pyx_t_3;
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":180
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":181
  *         self.nv = vp_pos.shape[0]
  *         for i in range(4): self.bounds[i] = bounds[i]
  *         self.pdx = (self.bounds[1] - self.bounds[0])/self.nv             # <<<<<<<<<<<<<<
  *         self.pdy = (self.bounds[3] - self.bounds[2])/self.nv
  * 
  */
-  ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->pdx = (((((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[1]) - (((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[0])) / ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->nv);
+  __pyx_t_3 = ((((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[1]) - (((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[0]));
+  if (unlikely(((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->nv == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->pdx = (__pyx_t_3 / ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->nv);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":181
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":182
  *         for i in range(4): self.bounds[i] = bounds[i]
  *         self.pdx = (self.bounds[1] - self.bounds[0])/self.nv
  *         self.pdy = (self.bounds[3] - self.bounds[2])/self.nv             # <<<<<<<<<<<<<<
  * 
  *     cdef void get_start_stop(self, np.float64_t *ex, int *rv):
  */
-  ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->pdy = (((((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[3]) - (((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[2])) / ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->nv);
+  __pyx_t_3 = ((((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[3]) - (((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->bounds[2]));
+  if (unlikely(((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->nv == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->pdy = (__pyx_t_3 / ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)__pyx_v_self)->nv);
 
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
+  __Pyx_XDECREF(__pyx_t_2);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_center);
@@ -11887,11 +12260,19 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_image);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_vp_pos);
   __pyx_L2:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF((PyObject *)__pyx_v_vp_pos);
+  __Pyx_DECREF((PyObject *)__pyx_v_vp_dir);
+  __Pyx_DECREF((PyObject *)__pyx_v_center);
+  __Pyx_DECREF(__pyx_v_bounds);
+  __Pyx_DECREF((PyObject *)__pyx_v_image);
+  __Pyx_DECREF((PyObject *)__pyx_v_x_vec);
+  __Pyx_DECREF((PyObject *)__pyx_v_y_vec);
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":183
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":184
  *         self.pdy = (self.bounds[3] - self.bounds[2])/self.nv
  * 
  *     cdef void get_start_stop(self, np.float64_t *ex, int *rv):             # <<<<<<<<<<<<<<
@@ -11908,10 +12289,12 @@
   PyObject *__pyx_t_3 = NULL;
   Py_ssize_t __pyx_t_4;
   Py_ssize_t __pyx_t_5;
-  __Pyx_SetupRefcountContext("get_start_stop");
+  __pyx_t_5numpy_float64_t __pyx_t_6;
+  __Pyx_RefNannySetupContext("get_start_stop");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
   __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":186
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":187
  *         # Extrema need to be re-centered
  *         cdef np.float64_t cx, cy
  *         cx = cy = 0.0             # <<<<<<<<<<<<<<
@@ -11921,25 +12304,25 @@
   __pyx_v_cx = 0.0;
   __pyx_v_cy = 0.0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":187
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":188
  *         cdef np.float64_t cx, cy
  *         cx = cy = 0.0
  *         for i in range(3):             # <<<<<<<<<<<<<<
  *             cx += self.center[i] * self.x_vec[i]
  *             cy += self.center[i] * self.y_vec[i]
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_int_3);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_t_3 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
     __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2);
   } else {
-    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -11953,7 +12336,7 @@
     } else {
       __pyx_t_3 = PyIter_Next(__pyx_t_2);
       if (!__pyx_t_3) {
-        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         break;
       }
       __Pyx_GOTREF(__pyx_t_3);
@@ -11962,65 +12345,85 @@
     __pyx_v_i = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":188
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":189
  *         cx = cy = 0.0
  *         for i in range(3):
  *             cx += self.center[i] * self.x_vec[i]             # <<<<<<<<<<<<<<
  *             cy += self.center[i] * self.y_vec[i]
  *         rv[0] = <int> floor((ex[0] - cx - self.bounds[0])/self.pdx)
  */
-    __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_cx += ((__pyx_v_self->center[__pyx_t_4]) * (__pyx_v_self->x_vec[__pyx_t_5]));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":189
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":190
  *         for i in range(3):
  *             cx += self.center[i] * self.x_vec[i]
  *             cy += self.center[i] * self.y_vec[i]             # <<<<<<<<<<<<<<
  *         rv[0] = <int> floor((ex[0] - cx - self.bounds[0])/self.pdx)
  *         rv[1] = rv[0] + <int> ceil((ex[1] - ex[0])/self.pdx)
  */
-    __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_cy += ((__pyx_v_self->center[__pyx_t_5]) * (__pyx_v_self->y_vec[__pyx_t_4]));
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":190
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":191
  *             cx += self.center[i] * self.x_vec[i]
  *             cy += self.center[i] * self.y_vec[i]
  *         rv[0] = <int> floor((ex[0] - cx - self.bounds[0])/self.pdx)             # <<<<<<<<<<<<<<
  *         rv[1] = rv[0] + <int> ceil((ex[1] - ex[0])/self.pdx)
  *         rv[2] = <int> floor((ex[2] - cy - self.bounds[2])/self.pdy)
  */
-  (__pyx_v_rv[0]) = ((int)floor(((((__pyx_v_ex[0]) - __pyx_v_cx) - (__pyx_v_self->bounds[0])) / __pyx_v_self->pdx)));
+  __pyx_t_6 = (((__pyx_v_ex[0]) - __pyx_v_cx) - (__pyx_v_self->bounds[0]));
+  if (unlikely(__pyx_v_self->pdx == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  (__pyx_v_rv[0]) = ((int)floor((__pyx_t_6 / __pyx_v_self->pdx)));
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":191
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":192
  *             cy += self.center[i] * self.y_vec[i]
  *         rv[0] = <int> floor((ex[0] - cx - self.bounds[0])/self.pdx)
  *         rv[1] = rv[0] + <int> ceil((ex[1] - ex[0])/self.pdx)             # <<<<<<<<<<<<<<
  *         rv[2] = <int> floor((ex[2] - cy - self.bounds[2])/self.pdy)
  *         rv[3] = rv[2] + <int> ceil((ex[3] - ex[2])/self.pdy)
  */
-  (__pyx_v_rv[1]) = ((__pyx_v_rv[0]) + ((int)ceil((((__pyx_v_ex[1]) - (__pyx_v_ex[0])) / __pyx_v_self->pdx))));
+  __pyx_t_6 = ((__pyx_v_ex[1]) - (__pyx_v_ex[0]));
+  if (unlikely(__pyx_v_self->pdx == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  (__pyx_v_rv[1]) = ((__pyx_v_rv[0]) + ((int)ceil((__pyx_t_6 / __pyx_v_self->pdx))));
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":192
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":193
  *         rv[0] = <int> floor((ex[0] - cx - self.bounds[0])/self.pdx)
  *         rv[1] = rv[0] + <int> ceil((ex[1] - ex[0])/self.pdx)
  *         rv[2] = <int> floor((ex[2] - cy - self.bounds[2])/self.pdy)             # <<<<<<<<<<<<<<
  *         rv[3] = rv[2] + <int> ceil((ex[3] - ex[2])/self.pdy)
  * 
  */
-  (__pyx_v_rv[2]) = ((int)floor(((((__pyx_v_ex[2]) - __pyx_v_cy) - (__pyx_v_self->bounds[2])) / __pyx_v_self->pdy)));
+  __pyx_t_6 = (((__pyx_v_ex[2]) - __pyx_v_cy) - (__pyx_v_self->bounds[2]));
+  if (unlikely(__pyx_v_self->pdy == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  (__pyx_v_rv[2]) = ((int)floor((__pyx_t_6 / __pyx_v_self->pdy)));
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":193
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":194
  *         rv[1] = rv[0] + <int> ceil((ex[1] - ex[0])/self.pdx)
  *         rv[2] = <int> floor((ex[2] - cy - self.bounds[2])/self.pdy)
  *         rv[3] = rv[2] + <int> ceil((ex[3] - ex[2])/self.pdy)             # <<<<<<<<<<<<<<
  * 
  *     cdef inline void copy_into(self, np.float64_t *fv, np.float64_t *tv,
  */
-  (__pyx_v_rv[3]) = ((__pyx_v_rv[2]) + ((int)ceil((((__pyx_v_ex[3]) - (__pyx_v_ex[2])) / __pyx_v_self->pdy))));
+  __pyx_t_6 = ((__pyx_v_ex[3]) - (__pyx_v_ex[2]));
+  if (unlikely(__pyx_v_self->pdy == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  (__pyx_v_rv[3]) = ((__pyx_v_rv[2]) + ((int)ceil((__pyx_t_6 / __pyx_v_self->pdy))));
 
   goto __pyx_L0;
   __pyx_L1_error:;
@@ -12029,10 +12432,11 @@
   __Pyx_WriteUnraisable("yt.amr_utils.VectorPlane.get_start_stop");
   __pyx_L0:;
   __Pyx_DECREF(__pyx_v_i);
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_RefNannyFinishContext();
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":195
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":196
  *         rv[3] = rv[2] + <int> ceil((ex[3] - ex[2])/self.pdy)
  * 
  *     cdef inline void copy_into(self, np.float64_t *fv, np.float64_t *tv,             # <<<<<<<<<<<<<<
@@ -12040,22 +12444,25 @@
  *         # We know the first two dimensions of our from-vector, and our
  */
 
-static INLINE void __pyx_f_2yt_9amr_utils_11VectorPlane_copy_into(struct __pyx_obj_2yt_9amr_utils_VectorPlane *__pyx_v_self, __pyx_t_5numpy_float64_t *__pyx_v_fv, __pyx_t_5numpy_float64_t *__pyx_v_tv, int __pyx_v_i, int __pyx_v_j, int __pyx_v_nk) {
+static CYTHON_INLINE void __pyx_f_2yt_9amr_utils_11VectorPlane_copy_into(struct __pyx_obj_2yt_9amr_utils_VectorPlane *__pyx_v_self, __pyx_t_5numpy_float64_t *__pyx_v_fv, __pyx_t_5numpy_float64_t *__pyx_v_tv, int __pyx_v_i, int __pyx_v_j, int __pyx_v_nk) {
   int __pyx_v_k;
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("copy_into");
+  int __pyx_t_2;
+  __Pyx_RefNannySetupContext("copy_into");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":200
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":201
  *         # to-vector is flat and 'ni' long
  *         cdef int k
  *         for k in range(nk):             # <<<<<<<<<<<<<<
  *             tv[k] = fv[(((k*self.nv)+j)*self.nv+i)]
  * 
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_v_nk; __pyx_t_1+=1) {
-    __pyx_v_k = __pyx_t_1;
+  __pyx_t_1 = __pyx_v_nk;
+  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_k = __pyx_t_2;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":201
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":202
  *         cdef int k
  *         for k in range(nk):
  *             tv[k] = fv[(((k*self.nv)+j)*self.nv+i)]             # <<<<<<<<<<<<<<
@@ -12065,10 +12472,11 @@
     (__pyx_v_tv[__pyx_v_k]) = (__pyx_v_fv[((((__pyx_v_k * __pyx_v_self->nv) + __pyx_v_j) * __pyx_v_self->nv) + __pyx_v_i)]);
   }
 
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_RefNannyFinishContext();
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":203
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":204
  *             tv[k] = fv[(((k*self.nv)+j)*self.nv+i)]
  * 
  *     cdef inline void copy_back(self, np.float64_t *fv, np.float64_t *tv,             # <<<<<<<<<<<<<<
@@ -12076,22 +12484,25 @@
  *         cdef int k
  */
 
-static INLINE void __pyx_f_2yt_9amr_utils_11VectorPlane_copy_back(struct __pyx_obj_2yt_9amr_utils_VectorPlane *__pyx_v_self, __pyx_t_5numpy_float64_t *__pyx_v_fv, __pyx_t_5numpy_float64_t *__pyx_v_tv, int __pyx_v_i, int __pyx_v_j, int __pyx_v_nk) {
+static CYTHON_INLINE void __pyx_f_2yt_9amr_utils_11VectorPlane_copy_back(struct __pyx_obj_2yt_9amr_utils_VectorPlane *__pyx_v_self, __pyx_t_5numpy_float64_t *__pyx_v_fv, __pyx_t_5numpy_float64_t *__pyx_v_tv, int __pyx_v_i, int __pyx_v_j, int __pyx_v_nk) {
   int __pyx_v_k;
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("copy_back");
+  int __pyx_t_2;
+  __Pyx_RefNannySetupContext("copy_back");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":206
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":207
  *                         int i, int j, int nk):
  *         cdef int k
  *         for k in range(nk):             # <<<<<<<<<<<<<<
  *             tv[(((k*self.nv)+j)*self.nv+i)] = fv[k]
  * 
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_v_nk; __pyx_t_1+=1) {
-    __pyx_v_k = __pyx_t_1;
+  __pyx_t_1 = __pyx_v_nk;
+  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_k = __pyx_t_2;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":207
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":208
  *         cdef int k
  *         for k in range(nk):
  *             tv[(((k*self.nv)+j)*self.nv+i)] = fv[k]             # <<<<<<<<<<<<<<
@@ -12101,7 +12512,8 @@
     (__pyx_v_tv[((((__pyx_v_k * __pyx_v_self->nv) + __pyx_v_j) * __pyx_v_self->nv) + __pyx_v_i)]) = (__pyx_v_fv[__pyx_v_k]);
   }
 
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_RefNannyFinishContext();
 }
 
 /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":223
@@ -12140,9 +12552,11 @@
   int __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
-  int __pyx_t_5;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_data,&__pyx_kp_left_edge,&__pyx_kp_right_edge,&__pyx_kp_dims,0};
-  __Pyx_SetupRefcountContext("__cinit__");
+  __pyx_t_5numpy_float64_t __pyx_t_5;
+  int __pyx_t_6;
+  __pyx_t_5numpy_int64_t __pyx_t_7;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__data,&__pyx_n_s__left_edge,&__pyx_n_s__right_edge,&__pyx_n_s__dims,0};
+  __Pyx_RefNannySetupContext("__cinit__");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[4] = {0,0,0,0};
@@ -12156,30 +12570,30 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_data);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__data);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_left_edge);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left_edge);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_right_edge);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right_edge);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dims);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dims);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_data = ((PyArrayObject *)values[0]);
     __pyx_v_left_edge = ((PyArrayObject *)values[1]);
@@ -12195,40 +12609,45 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.PartitionedGrid.__cinit__");
   return -1;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF((PyObject *)__pyx_v_data);
+  __Pyx_INCREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_dims);
   __pyx_bstruct_data.buf = NULL;
   __pyx_bstruct_left_edge.buf = NULL;
   __pyx_bstruct_right_edge.buf = NULL;
   __pyx_bstruct_dims.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dims), __pyx_ptype_5numpy_ndarray, 1, "dims", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dims), __pyx_ptype_5numpy_ndarray, 1, "dims", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_data = __pyx_bstruct_data.strides[0]; __pyx_bstride_1_data = __pyx_bstruct_data.strides[1]; __pyx_bstride_2_data = __pyx_bstruct_data.strides[2];
   __pyx_bshape_0_data = __pyx_bstruct_data.shape[0]; __pyx_bshape_1_data = __pyx_bstruct_data.shape[1]; __pyx_bshape_2_data = __pyx_bstruct_data.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_left_edge = __pyx_bstruct_left_edge.strides[0];
   __pyx_bshape_0_left_edge = __pyx_bstruct_left_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_right_edge = __pyx_bstruct_right_edge.strides[0];
   __pyx_bshape_0_right_edge = __pyx_bstruct_right_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dims, (PyObject*)__pyx_v_dims, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dims, (PyObject*)__pyx_v_dims, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_dims = __pyx_bstruct_dims.strides[0];
   __pyx_bshape_0_dims = __pyx_bstruct_dims.shape[0];
@@ -12306,8 +12725,14 @@
  *         self.my_data = data
  *         self.data = <np.float64_t*> data.data
  */
-    __pyx_t_5 = __pyx_v_i;
-    (((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self)->dds[__pyx_v_i]) = (((((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self)->right_edge[__pyx_v_i]) - (((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self)->left_edge[__pyx_v_i])) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_dims.buf, __pyx_t_5, __pyx_bstride_0_dims)));
+    __pyx_t_5 = ((((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self)->right_edge[__pyx_v_i]) - (((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self)->left_edge[__pyx_v_i]));
+    __pyx_t_6 = __pyx_v_i;
+    __pyx_t_7 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_dims.buf, __pyx_t_6, __pyx_bstride_0_dims));
+    if (unlikely(__pyx_t_7 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    (((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self)->dds[__pyx_v_i]) = (__pyx_t_5 / __pyx_t_7);
   }
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":237
@@ -12351,7 +12776,12 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left_edge);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_data);
   __pyx_L2:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF((PyObject *)__pyx_v_data);
+  __Pyx_DECREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_dims);
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -12378,9 +12808,11 @@
   PyObject *__pyx_r = NULL;
   int __pyx_t_1;
   int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_tf,&__pyx_kp_vp,0};
-  __Pyx_SetupRefcountContext("cast_plane");
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tf,&__pyx_n_s__vp,0};
+  __Pyx_RefNannySetupContext("cast_plane");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[2] = {0,0};
@@ -12392,18 +12824,18 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_tf);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tf);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_vp);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vp);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("cast_plane", 1, 2, 2, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("cast_plane", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "cast_plane") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "cast_plane") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_tf = ((struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy *)values[0]);
     __pyx_v_vp = ((struct __pyx_obj_2yt_9amr_utils_VectorPlane *)values[1]);
@@ -12415,24 +12847,18 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("cast_plane", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("cast_plane", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.PartitionedGrid.cast_plane");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tf), __pyx_ptype_2yt_9amr_utils_TransferFunctionProxy, 1, "tf", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vp), __pyx_ptype_2yt_9amr_utils_VectorPlane, 1, "vp", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF((PyObject *)__pyx_v_tf);
+  __Pyx_INCREF((PyObject *)__pyx_v_vp);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tf), __pyx_ptype_2yt_9amr_utils_TransferFunctionProxy, 1, "tf", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vp), __pyx_ptype_2yt_9amr_utils_VectorPlane, 1, "vp", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":247
- *         # like http://courses.csusm.edu/cs697exz/ray_box.htm
- *         cdef int vi, vj, hit, i, ni, nj, nn
- *         self.ns = 5 #* (1 + <int> log2(self.dds[0] / self.min_dds))             # <<<<<<<<<<<<<<
- *         cdef int iter[4]
- *         cdef np.float64_t v_pos[3], v_dir[3], rgba[4], extrema[4]
- */
-  ((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self)->ns = 5;
-
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":250
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":249
  *         cdef int iter[4]
  *         cdef np.float64_t v_pos[3], v_dir[3], rgba[4], extrema[4]
  *         self.calculate_extent(vp, extrema)             # <<<<<<<<<<<<<<
@@ -12441,7 +12867,7 @@
  */
   ((struct __pyx_vtabstruct_2yt_9amr_utils_PartitionedGrid *)((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self)->__pyx_vtab)->calculate_extent(((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self), __pyx_v_vp, __pyx_v_extrema);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":251
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":250
  *         cdef np.float64_t v_pos[3], v_dir[3], rgba[4], extrema[4]
  *         self.calculate_extent(vp, extrema)
  *         vp.get_start_stop(extrema, iter)             # <<<<<<<<<<<<<<
@@ -12450,7 +12876,7 @@
  */
   ((struct __pyx_vtabstruct_2yt_9amr_utils_VectorPlane *)__pyx_v_vp->__pyx_vtab)->get_start_stop(__pyx_v_vp, __pyx_v_extrema, __pyx_v_iter);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":252
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":251
  *         self.calculate_extent(vp, extrema)
  *         vp.get_start_stop(extrema, iter)
  *         for i in range(4): iter[i] = iclip(iter[i], 0, vp.nv)             # <<<<<<<<<<<<<<
@@ -12462,7 +12888,7 @@
     (__pyx_v_iter[__pyx_v_i]) = __pyx_f_2yt_9amr_utils_iclip((__pyx_v_iter[__pyx_v_i]), 0, __pyx_v_vp->nv);
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":253
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":252
  *         vp.get_start_stop(extrema, iter)
  *         for i in range(4): iter[i] = iclip(iter[i], 0, vp.nv)
  *         hit = 0             # <<<<<<<<<<<<<<
@@ -12471,27 +12897,29 @@
  */
   __pyx_v_hit = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":254
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":253
  *         for i in range(4): iter[i] = iclip(iter[i], 0, vp.nv)
  *         hit = 0
  *         for vj in range(iter[0], iter[1]):             # <<<<<<<<<<<<<<
  *             for vi in range(iter[2], iter[3]):
  *                 vp.copy_into(vp.vp_pos, v_pos, vi, vj, 3)
  */
-  for (__pyx_t_1 = (__pyx_v_iter[0]); __pyx_t_1 < (__pyx_v_iter[1]); __pyx_t_1+=1) {
-    __pyx_v_vj = __pyx_t_1;
+  __pyx_t_1 = (__pyx_v_iter[1]);
+  for (__pyx_t_2 = (__pyx_v_iter[0]); __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
+    __pyx_v_vj = __pyx_t_2;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":255
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":254
  *         hit = 0
  *         for vj in range(iter[0], iter[1]):
  *             for vi in range(iter[2], iter[3]):             # <<<<<<<<<<<<<<
  *                 vp.copy_into(vp.vp_pos, v_pos, vi, vj, 3)
  *                 vp.copy_into(vp.image, rgba, vi, vj, 4)
  */
-    for (__pyx_t_2 = (__pyx_v_iter[2]); __pyx_t_2 < (__pyx_v_iter[3]); __pyx_t_2+=1) {
-      __pyx_v_vi = __pyx_t_2;
+    __pyx_t_3 = (__pyx_v_iter[3]);
+    for (__pyx_t_4 = (__pyx_v_iter[2]); __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
+      __pyx_v_vi = __pyx_t_4;
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":256
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":255
  *         for vj in range(iter[0], iter[1]):
  *             for vi in range(iter[2], iter[3]):
  *                 vp.copy_into(vp.vp_pos, v_pos, vi, vj, 3)             # <<<<<<<<<<<<<<
@@ -12500,7 +12928,7 @@
  */
       ((struct __pyx_vtabstruct_2yt_9amr_utils_VectorPlane *)__pyx_v_vp->__pyx_vtab)->copy_into(__pyx_v_vp, __pyx_v_vp->vp_pos, __pyx_v_v_pos, __pyx_v_vi, __pyx_v_vj, 3);
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":257
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":256
  *             for vi in range(iter[2], iter[3]):
  *                 vp.copy_into(vp.vp_pos, v_pos, vi, vj, 3)
  *                 vp.copy_into(vp.image, rgba, vi, vj, 4)             # <<<<<<<<<<<<<<
@@ -12509,7 +12937,7 @@
  */
       ((struct __pyx_vtabstruct_2yt_9amr_utils_VectorPlane *)__pyx_v_vp->__pyx_vtab)->copy_into(__pyx_v_vp, __pyx_v_vp->image, __pyx_v_rgba, __pyx_v_vi, __pyx_v_vj, 4);
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":258
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":257
  *                 vp.copy_into(vp.vp_pos, v_pos, vi, vj, 3)
  *                 vp.copy_into(vp.image, rgba, vi, vj, 4)
  *                 self.integrate_ray(v_pos, vp.vp_dir, rgba, tf)             # <<<<<<<<<<<<<<
@@ -12518,7 +12946,7 @@
  */
       ((struct __pyx_vtabstruct_2yt_9amr_utils_PartitionedGrid *)((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self)->__pyx_vtab)->integrate_ray(((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self), __pyx_v_v_pos, __pyx_v_vp->vp_dir, __pyx_v_rgba, __pyx_v_tf);
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":259
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":258
  *                 vp.copy_into(vp.image, rgba, vi, vj, 4)
  *                 self.integrate_ray(v_pos, vp.vp_dir, rgba, tf)
  *                 vp.copy_back(rgba, vp.image, vi, vj, 4)             # <<<<<<<<<<<<<<
@@ -12529,7 +12957,7 @@
     }
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":260
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":259
  *                 self.integrate_ray(v_pos, vp.vp_dir, rgba, tf)
  *                 vp.copy_back(rgba, vp.image, vi, vj, 4)
  *         return hit             # <<<<<<<<<<<<<<
@@ -12537,25 +12965,28 @@
  *     @cython.boundscheck(False)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyInt_FromLong(__pyx_v_hit); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __pyx_t_5 = PyInt_FromLong(__pyx_v_hit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
   goto __pyx_L0;
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
   __Pyx_AddTraceback("yt.amr_utils.PartitionedGrid.cast_plane");
   __pyx_r = NULL;
   __pyx_L0:;
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF((PyObject *)__pyx_v_tf);
+  __Pyx_DECREF((PyObject *)__pyx_v_vp);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":264
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":263
  *     @cython.boundscheck(False)
  *     @cython.wraparound(False)
  *     cdef void calculate_extent(self, VectorPlane vp,             # <<<<<<<<<<<<<<
@@ -12574,9 +13005,11 @@
   int __pyx_t_3;
   int __pyx_t_4;
   int __pyx_t_5;
-  __Pyx_SetupRefcountContext("calculate_extent");
+  __Pyx_RefNannySetupContext("calculate_extent");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF((PyObject *)__pyx_v_vp);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":268
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":267
  *         # We do this for all eight corners
  *         cdef np.float64_t *edges[2], temp
  *         edges[0] = self.left_edge             # <<<<<<<<<<<<<<
@@ -12585,7 +13018,7 @@
  */
   (__pyx_v_edges[0]) = __pyx_v_self->left_edge;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":269
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":268
  *         cdef np.float64_t *edges[2], temp
  *         edges[0] = self.left_edge
  *         edges[1] = self.right_edge             # <<<<<<<<<<<<<<
@@ -12594,7 +13027,7 @@
  */
   (__pyx_v_edges[1]) = __pyx_v_self->right_edge;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":270
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":269
  *         edges[0] = self.left_edge
  *         edges[1] = self.right_edge
  *         extrema[0] = extrema[2] = 1e300; extrema[1] = extrema[3] = -1e300             # <<<<<<<<<<<<<<
@@ -12607,7 +13040,7 @@
   (__pyx_v_extrema[1]) = __pyx_t_1;
   (__pyx_v_extrema[3]) = __pyx_t_1;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":272
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":271
  *         extrema[0] = extrema[2] = 1e300; extrema[1] = extrema[3] = -1e300
  *         cdef int i, j, k
  *         for i in range(2):             # <<<<<<<<<<<<<<
@@ -12617,7 +13050,7 @@
   for (__pyx_t_2 = 0; __pyx_t_2 < 2; __pyx_t_2+=1) {
     __pyx_v_i = __pyx_t_2;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":273
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":272
  *         cdef int i, j, k
  *         for i in range(2):
  *             for j in range(2):             # <<<<<<<<<<<<<<
@@ -12627,7 +13060,7 @@
     for (__pyx_t_3 = 0; __pyx_t_3 < 2; __pyx_t_3+=1) {
       __pyx_v_j = __pyx_t_3;
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":274
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":273
  *         for i in range(2):
  *             for j in range(2):
  *                 for k in range(2):             # <<<<<<<<<<<<<<
@@ -12637,7 +13070,7 @@
       for (__pyx_t_4 = 0; __pyx_t_4 < 2; __pyx_t_4+=1) {
         __pyx_v_k = __pyx_t_4;
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":276
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":275
  *                 for k in range(2):
  *                     # This should rotate it into the vector plane
  *                     temp  = edges[i][0] * vp.x_vec[0]             # <<<<<<<<<<<<<<
@@ -12646,7 +13079,7 @@
  */
         __pyx_v_temp = (((__pyx_v_edges[__pyx_v_i])[0]) * (__pyx_v_vp->x_vec[0]));
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":277
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":276
  *                     # This should rotate it into the vector plane
  *                     temp  = edges[i][0] * vp.x_vec[0]
  *                     temp += edges[j][1] * vp.x_vec[1]             # <<<<<<<<<<<<<<
@@ -12655,7 +13088,7 @@
  */
         __pyx_v_temp += (((__pyx_v_edges[__pyx_v_j])[1]) * (__pyx_v_vp->x_vec[1]));
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":278
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":277
  *                     temp  = edges[i][0] * vp.x_vec[0]
  *                     temp += edges[j][1] * vp.x_vec[1]
  *                     temp += edges[k][2] * vp.x_vec[2]             # <<<<<<<<<<<<<<
@@ -12664,7 +13097,7 @@
  */
         __pyx_v_temp += (((__pyx_v_edges[__pyx_v_k])[2]) * (__pyx_v_vp->x_vec[2]));
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":279
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":278
  *                     temp += edges[j][1] * vp.x_vec[1]
  *                     temp += edges[k][2] * vp.x_vec[2]
  *                     if temp < extrema[0]: extrema[0] = temp             # <<<<<<<<<<<<<<
@@ -12678,7 +13111,7 @@
         }
         __pyx_L9:;
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":280
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":279
  *                     temp += edges[k][2] * vp.x_vec[2]
  *                     if temp < extrema[0]: extrema[0] = temp
  *                     if temp > extrema[1]: extrema[1] = temp             # <<<<<<<<<<<<<<
@@ -12692,7 +13125,7 @@
         }
         __pyx_L10:;
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":281
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":280
  *                     if temp < extrema[0]: extrema[0] = temp
  *                     if temp > extrema[1]: extrema[1] = temp
  *                     temp  = edges[i][0] * vp.y_vec[0]             # <<<<<<<<<<<<<<
@@ -12701,7 +13134,7 @@
  */
         __pyx_v_temp = (((__pyx_v_edges[__pyx_v_i])[0]) * (__pyx_v_vp->y_vec[0]));
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":282
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":281
  *                     if temp > extrema[1]: extrema[1] = temp
  *                     temp  = edges[i][0] * vp.y_vec[0]
  *                     temp += edges[j][1] * vp.y_vec[1]             # <<<<<<<<<<<<<<
@@ -12710,7 +13143,7 @@
  */
         __pyx_v_temp += (((__pyx_v_edges[__pyx_v_j])[1]) * (__pyx_v_vp->y_vec[1]));
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":283
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":282
  *                     temp  = edges[i][0] * vp.y_vec[0]
  *                     temp += edges[j][1] * vp.y_vec[1]
  *                     temp += edges[k][2] * vp.y_vec[2]             # <<<<<<<<<<<<<<
@@ -12719,7 +13152,7 @@
  */
         __pyx_v_temp += (((__pyx_v_edges[__pyx_v_k])[2]) * (__pyx_v_vp->y_vec[2]));
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":284
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":283
  *                     temp += edges[j][1] * vp.y_vec[1]
  *                     temp += edges[k][2] * vp.y_vec[2]
  *                     if temp < extrema[2]: extrema[2] = temp             # <<<<<<<<<<<<<<
@@ -12733,7 +13166,7 @@
         }
         __pyx_L11:;
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":285
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":284
  *                     temp += edges[k][2] * vp.y_vec[2]
  *                     if temp < extrema[2]: extrema[2] = temp
  *                     if temp > extrema[3]: extrema[3] = temp             # <<<<<<<<<<<<<<
@@ -12750,10 +13183,12 @@
     }
   }
 
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF((PyObject *)__pyx_v_vp);
+  __Pyx_RefNannyFinishContext();
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":290
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":289
  *     @cython.boundscheck(False)
  *     @cython.wraparound(False)
  *     cdef int integrate_ray(self, np.float64_t v_pos[3],             # <<<<<<<<<<<<<<
@@ -12782,12 +13217,19 @@
   int __pyx_r;
   int __pyx_t_1;
   int __pyx_t_2;
-  int __pyx_t_3;
-  int __pyx_t_4;
+  __pyx_t_5numpy_float64_t __pyx_t_3;
+  __pyx_t_5numpy_float64_t __pyx_t_4;
   int __pyx_t_5;
-  __Pyx_SetupRefcountContext("integrate_ray");
+  int __pyx_t_6;
+  int __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  __Pyx_RefNannySetupContext("integrate_ray");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF((PyObject *)__pyx_v_tf);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":295
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":294
  *                                  TransferFunctionProxy tf):
  *         cdef int cur_ind[3], step[3], x, y, i, n, flat_ind, hit, direction
  *         cdef np.float64_t intersect_t = 1.0             # <<<<<<<<<<<<<<
@@ -12796,7 +13238,7 @@
  */
   __pyx_v_intersect_t = 1.0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":299
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":298
  *         cdef np.float64_t enter_t, dist, alpha, dt
  *         cdef np.float64_t tr, tl, temp_x, temp_y, dv
  *         for i in range(3):             # <<<<<<<<<<<<<<
@@ -12806,7 +13248,7 @@
   for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) {
     __pyx_v_i = __pyx_t_1;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":300
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":299
  *         cdef np.float64_t tr, tl, temp_x, temp_y, dv
  *         for i in range(3):
  *             if (v_dir[i] < 0):             # <<<<<<<<<<<<<<
@@ -12816,7 +13258,7 @@
     __pyx_t_2 = ((__pyx_v_v_dir[__pyx_v_i]) < 0);
     if (__pyx_t_2) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":301
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":300
  *         for i in range(3):
  *             if (v_dir[i] < 0):
  *                 step[i] = -1             # <<<<<<<<<<<<<<
@@ -12828,7 +13270,7 @@
     }
     /*else*/ {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":303
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":302
  *                 step[i] = -1
  *             else:
  *                 step[i] = 1             # <<<<<<<<<<<<<<
@@ -12839,43 +13281,55 @@
     }
     __pyx_L5:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":304
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":303
  *             else:
  *                 step[i] = 1
  *             x = (i+1) % 3             # <<<<<<<<<<<<<<
  *             y = (i+2) % 3
  *             tl = (self.left_edge[i] - v_pos[i])/v_dir[i]
  */
-    __pyx_v_x = ((__pyx_v_i + 1) % 3);
+    __pyx_v_x = __Pyx_mod_long((__pyx_v_i + 1), 3);
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":305
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":304
  *                 step[i] = 1
  *             x = (i+1) % 3
  *             y = (i+2) % 3             # <<<<<<<<<<<<<<
  *             tl = (self.left_edge[i] - v_pos[i])/v_dir[i]
  *             tr = (self.right_edge[i] - v_pos[i])/v_dir[i]
  */
-    __pyx_v_y = ((__pyx_v_i + 2) % 3);
+    __pyx_v_y = __Pyx_mod_long((__pyx_v_i + 2), 3);
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":306
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":305
  *             x = (i+1) % 3
  *             y = (i+2) % 3
  *             tl = (self.left_edge[i] - v_pos[i])/v_dir[i]             # <<<<<<<<<<<<<<
  *             tr = (self.right_edge[i] - v_pos[i])/v_dir[i]
  *             temp_x = (v_pos[x] + tl*v_dir[x])
  */
-    __pyx_v_tl = (((__pyx_v_self->left_edge[__pyx_v_i]) - (__pyx_v_v_pos[__pyx_v_i])) / (__pyx_v_v_dir[__pyx_v_i]));
+    __pyx_t_3 = ((__pyx_v_self->left_edge[__pyx_v_i]) - (__pyx_v_v_pos[__pyx_v_i]));
+    __pyx_t_4 = (__pyx_v_v_dir[__pyx_v_i]);
+    if (unlikely(__pyx_t_4 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_tl = (__pyx_t_3 / __pyx_t_4);
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":307
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":306
  *             y = (i+2) % 3
  *             tl = (self.left_edge[i] - v_pos[i])/v_dir[i]
  *             tr = (self.right_edge[i] - v_pos[i])/v_dir[i]             # <<<<<<<<<<<<<<
  *             temp_x = (v_pos[x] + tl*v_dir[x])
  *             temp_y = (v_pos[y] + tl*v_dir[y])
  */
-    __pyx_v_tr = (((__pyx_v_self->right_edge[__pyx_v_i]) - (__pyx_v_v_pos[__pyx_v_i])) / (__pyx_v_v_dir[__pyx_v_i]));
+    __pyx_t_4 = ((__pyx_v_self->right_edge[__pyx_v_i]) - (__pyx_v_v_pos[__pyx_v_i]));
+    __pyx_t_3 = (__pyx_v_v_dir[__pyx_v_i]);
+    if (unlikely(__pyx_t_3 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_v_tr = (__pyx_t_4 / __pyx_t_3);
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":308
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":307
  *             tl = (self.left_edge[i] - v_pos[i])/v_dir[i]
  *             tr = (self.right_edge[i] - v_pos[i])/v_dir[i]
  *             temp_x = (v_pos[x] + tl*v_dir[x])             # <<<<<<<<<<<<<<
@@ -12884,7 +13338,7 @@
  */
     __pyx_v_temp_x = ((__pyx_v_v_pos[__pyx_v_x]) + (__pyx_v_tl * (__pyx_v_v_dir[__pyx_v_x])));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":309
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":308
  *             tr = (self.right_edge[i] - v_pos[i])/v_dir[i]
  *             temp_x = (v_pos[x] + tl*v_dir[x])
  *             temp_y = (v_pos[y] + tl*v_dir[y])             # <<<<<<<<<<<<<<
@@ -12893,57 +13347,63 @@
  */
     __pyx_v_temp_y = ((__pyx_v_v_pos[__pyx_v_y]) + (__pyx_v_tl * (__pyx_v_v_dir[__pyx_v_y])));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":310
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":309
  *             temp_x = (v_pos[x] + tl*v_dir[x])
  *             temp_y = (v_pos[y] + tl*v_dir[y])
  *             if self.left_edge[x] <= temp_x and temp_x <= self.right_edge[x] and \             # <<<<<<<<<<<<<<
  *                self.left_edge[y] <= temp_y and temp_y <= self.right_edge[y] and \
  *                0.0 <= tl and tl < intersect_t:
  */
-    if (((__pyx_v_self->left_edge[__pyx_v_x]) <= __pyx_v_temp_x)) {
-      if ((__pyx_v_temp_x <= (__pyx_v_self->right_edge[__pyx_v_x]))) {
+    __pyx_t_2 = ((__pyx_v_self->left_edge[__pyx_v_x]) <= __pyx_v_temp_x);
+    if (__pyx_t_2) {
+      __pyx_t_5 = (__pyx_v_temp_x <= (__pyx_v_self->right_edge[__pyx_v_x]));
+      if (__pyx_t_5) {
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":311
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":310
  *             temp_y = (v_pos[y] + tl*v_dir[y])
  *             if self.left_edge[x] <= temp_x and temp_x <= self.right_edge[x] and \
  *                self.left_edge[y] <= temp_y and temp_y <= self.right_edge[y] and \             # <<<<<<<<<<<<<<
  *                0.0 <= tl and tl < intersect_t:
  *                 direction = i
  */
-        if (((__pyx_v_self->left_edge[__pyx_v_y]) <= __pyx_v_temp_y)) {
-          if ((__pyx_v_temp_y <= (__pyx_v_self->right_edge[__pyx_v_y]))) {
+        __pyx_t_6 = ((__pyx_v_self->left_edge[__pyx_v_y]) <= __pyx_v_temp_y);
+        if (__pyx_t_6) {
+          __pyx_t_7 = (__pyx_v_temp_y <= (__pyx_v_self->right_edge[__pyx_v_y]));
+          if (__pyx_t_7) {
 
-            /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":312
+            /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":311
  *             if self.left_edge[x] <= temp_x and temp_x <= self.right_edge[x] and \
  *                self.left_edge[y] <= temp_y and temp_y <= self.right_edge[y] and \
  *                0.0 <= tl and tl < intersect_t:             # <<<<<<<<<<<<<<
  *                 direction = i
  *                 intersect_t = tl
  */
-            if ((0.0 <= __pyx_v_tl)) {
-              __pyx_t_2 = (__pyx_v_tl < __pyx_v_intersect_t);
+            __pyx_t_8 = (0.0 <= __pyx_v_tl);
+            if (__pyx_t_8) {
+              __pyx_t_9 = (__pyx_v_tl < __pyx_v_intersect_t);
+              __pyx_t_10 = __pyx_t_9;
             } else {
-              __pyx_t_2 = (0.0 <= __pyx_v_tl);
+              __pyx_t_10 = __pyx_t_8;
             }
-            __pyx_t_3 = __pyx_t_2;
+            __pyx_t_8 = __pyx_t_10;
           } else {
-            __pyx_t_3 = (__pyx_v_temp_y <= (__pyx_v_self->right_edge[__pyx_v_y]));
+            __pyx_t_8 = __pyx_t_7;
           }
-          __pyx_t_2 = __pyx_t_3;
+          __pyx_t_7 = __pyx_t_8;
         } else {
-          __pyx_t_2 = ((__pyx_v_self->left_edge[__pyx_v_y]) <= __pyx_v_temp_y);
+          __pyx_t_7 = __pyx_t_6;
         }
-        __pyx_t_3 = __pyx_t_2;
+        __pyx_t_6 = __pyx_t_7;
       } else {
-        __pyx_t_3 = (__pyx_v_temp_x <= (__pyx_v_self->right_edge[__pyx_v_x]));
+        __pyx_t_6 = __pyx_t_5;
       }
-      __pyx_t_2 = __pyx_t_3;
+      __pyx_t_5 = __pyx_t_6;
     } else {
-      __pyx_t_2 = ((__pyx_v_self->left_edge[__pyx_v_x]) <= __pyx_v_temp_x);
+      __pyx_t_5 = __pyx_t_2;
     }
-    if (__pyx_t_2) {
+    if (__pyx_t_5) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":313
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":312
  *                self.left_edge[y] <= temp_y and temp_y <= self.right_edge[y] and \
  *                0.0 <= tl and tl < intersect_t:
  *                 direction = i             # <<<<<<<<<<<<<<
@@ -12952,7 +13412,7 @@
  */
       __pyx_v_direction = __pyx_v_i;
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":314
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":313
  *                0.0 <= tl and tl < intersect_t:
  *                 direction = i
  *                 intersect_t = tl             # <<<<<<<<<<<<<<
@@ -12964,7 +13424,7 @@
     }
     __pyx_L6:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":315
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":314
  *                 direction = i
  *                 intersect_t = tl
  *             temp_x = (v_pos[x] + tr*v_dir[x])             # <<<<<<<<<<<<<<
@@ -12973,7 +13433,7 @@
  */
     __pyx_v_temp_x = ((__pyx_v_v_pos[__pyx_v_x]) + (__pyx_v_tr * (__pyx_v_v_dir[__pyx_v_x])));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":316
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":315
  *                 intersect_t = tl
  *             temp_x = (v_pos[x] + tr*v_dir[x])
  *             temp_y = (v_pos[y] + tr*v_dir[y])             # <<<<<<<<<<<<<<
@@ -12982,57 +13442,63 @@
  */
     __pyx_v_temp_y = ((__pyx_v_v_pos[__pyx_v_y]) + (__pyx_v_tr * (__pyx_v_v_dir[__pyx_v_y])));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":317
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":316
  *             temp_x = (v_pos[x] + tr*v_dir[x])
  *             temp_y = (v_pos[y] + tr*v_dir[y])
  *             if self.left_edge[x] <= temp_x and temp_x <= self.right_edge[x] and \             # <<<<<<<<<<<<<<
  *                self.left_edge[y] <= temp_y and temp_y <= self.right_edge[y] and \
  *                0.0 <= tr and tr < intersect_t:
  */
-    if (((__pyx_v_self->left_edge[__pyx_v_x]) <= __pyx_v_temp_x)) {
-      if ((__pyx_v_temp_x <= (__pyx_v_self->right_edge[__pyx_v_x]))) {
+    __pyx_t_5 = ((__pyx_v_self->left_edge[__pyx_v_x]) <= __pyx_v_temp_x);
+    if (__pyx_t_5) {
+      __pyx_t_2 = (__pyx_v_temp_x <= (__pyx_v_self->right_edge[__pyx_v_x]));
+      if (__pyx_t_2) {
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":318
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":317
  *             temp_y = (v_pos[y] + tr*v_dir[y])
  *             if self.left_edge[x] <= temp_x and temp_x <= self.right_edge[x] and \
  *                self.left_edge[y] <= temp_y and temp_y <= self.right_edge[y] and \             # <<<<<<<<<<<<<<
  *                0.0 <= tr and tr < intersect_t:
  *                 direction = i
  */
-        if (((__pyx_v_self->left_edge[__pyx_v_y]) <= __pyx_v_temp_y)) {
-          if ((__pyx_v_temp_y <= (__pyx_v_self->right_edge[__pyx_v_y]))) {
+        __pyx_t_6 = ((__pyx_v_self->left_edge[__pyx_v_y]) <= __pyx_v_temp_y);
+        if (__pyx_t_6) {
+          __pyx_t_7 = (__pyx_v_temp_y <= (__pyx_v_self->right_edge[__pyx_v_y]));
+          if (__pyx_t_7) {
 
-            /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":319
+            /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":318
  *             if self.left_edge[x] <= temp_x and temp_x <= self.right_edge[x] and \
  *                self.left_edge[y] <= temp_y and temp_y <= self.right_edge[y] and \
  *                0.0 <= tr and tr < intersect_t:             # <<<<<<<<<<<<<<
  *                 direction = i
  *                 intersect_t = tr
  */
-            if ((0.0 <= __pyx_v_tr)) {
-              __pyx_t_2 = (__pyx_v_tr < __pyx_v_intersect_t);
+            __pyx_t_8 = (0.0 <= __pyx_v_tr);
+            if (__pyx_t_8) {
+              __pyx_t_10 = (__pyx_v_tr < __pyx_v_intersect_t);
+              __pyx_t_9 = __pyx_t_10;
             } else {
-              __pyx_t_2 = (0.0 <= __pyx_v_tr);
+              __pyx_t_9 = __pyx_t_8;
             }
-            __pyx_t_3 = __pyx_t_2;
+            __pyx_t_8 = __pyx_t_9;
           } else {
-            __pyx_t_3 = (__pyx_v_temp_y <= (__pyx_v_self->right_edge[__pyx_v_y]));
+            __pyx_t_8 = __pyx_t_7;
           }
-          __pyx_t_2 = __pyx_t_3;
+          __pyx_t_7 = __pyx_t_8;
         } else {
-          __pyx_t_2 = ((__pyx_v_self->left_edge[__pyx_v_y]) <= __pyx_v_temp_y);
+          __pyx_t_7 = __pyx_t_6;
         }
-        __pyx_t_3 = __pyx_t_2;
+        __pyx_t_6 = __pyx_t_7;
       } else {
-        __pyx_t_3 = (__pyx_v_temp_x <= (__pyx_v_self->right_edge[__pyx_v_x]));
+        __pyx_t_6 = __pyx_t_2;
       }
-      __pyx_t_2 = __pyx_t_3;
+      __pyx_t_2 = __pyx_t_6;
     } else {
-      __pyx_t_2 = ((__pyx_v_self->left_edge[__pyx_v_x]) <= __pyx_v_temp_x);
+      __pyx_t_2 = __pyx_t_5;
     }
     if (__pyx_t_2) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":320
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":319
  *                self.left_edge[y] <= temp_y and temp_y <= self.right_edge[y] and \
  *                0.0 <= tr and tr < intersect_t:
  *                 direction = i             # <<<<<<<<<<<<<<
@@ -13041,7 +13507,7 @@
  */
       __pyx_v_direction = __pyx_v_i;
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":321
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":320
  *                0.0 <= tr and tr < intersect_t:
  *                 direction = i
  *                 intersect_t = tr             # <<<<<<<<<<<<<<
@@ -13054,57 +13520,63 @@
     __pyx_L7:;
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":322
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":321
  *                 direction = i
  *                 intersect_t = tr
  *         if self.left_edge[0] <= v_pos[0] and v_pos[0] <= self.right_edge[0] and \             # <<<<<<<<<<<<<<
  *            self.left_edge[1] <= v_pos[1] and v_pos[1] <= self.right_edge[1] and \
  *            self.left_edge[2] <= v_pos[2] and v_pos[2] <= self.right_edge[2]:
  */
-  if (((__pyx_v_self->left_edge[0]) <= (__pyx_v_v_pos[0]))) {
-    if (((__pyx_v_v_pos[0]) <= (__pyx_v_self->right_edge[0]))) {
+  __pyx_t_2 = ((__pyx_v_self->left_edge[0]) <= (__pyx_v_v_pos[0]));
+  if (__pyx_t_2) {
+    __pyx_t_5 = ((__pyx_v_v_pos[0]) <= (__pyx_v_self->right_edge[0]));
+    if (__pyx_t_5) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":323
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":322
  *                 intersect_t = tr
  *         if self.left_edge[0] <= v_pos[0] and v_pos[0] <= self.right_edge[0] and \
  *            self.left_edge[1] <= v_pos[1] and v_pos[1] <= self.right_edge[1] and \             # <<<<<<<<<<<<<<
  *            self.left_edge[2] <= v_pos[2] and v_pos[2] <= self.right_edge[2]:
  *             intersect_t = 0.0
  */
-      if (((__pyx_v_self->left_edge[1]) <= (__pyx_v_v_pos[1]))) {
-        if (((__pyx_v_v_pos[1]) <= (__pyx_v_self->right_edge[1]))) {
+      __pyx_t_6 = ((__pyx_v_self->left_edge[1]) <= (__pyx_v_v_pos[1]));
+      if (__pyx_t_6) {
+        __pyx_t_7 = ((__pyx_v_v_pos[1]) <= (__pyx_v_self->right_edge[1]));
+        if (__pyx_t_7) {
 
-          /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":324
+          /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":323
  *         if self.left_edge[0] <= v_pos[0] and v_pos[0] <= self.right_edge[0] and \
  *            self.left_edge[1] <= v_pos[1] and v_pos[1] <= self.right_edge[1] and \
  *            self.left_edge[2] <= v_pos[2] and v_pos[2] <= self.right_edge[2]:             # <<<<<<<<<<<<<<
  *             intersect_t = 0.0
  *         if not ((0.0 <= intersect_t) and (intersect_t < 1.0)): return 0
  */
-          if (((__pyx_v_self->left_edge[2]) <= (__pyx_v_v_pos[2]))) {
-            __pyx_t_2 = ((__pyx_v_v_pos[2]) <= (__pyx_v_self->right_edge[2]));
+          __pyx_t_8 = ((__pyx_v_self->left_edge[2]) <= (__pyx_v_v_pos[2]));
+          if (__pyx_t_8) {
+            __pyx_t_9 = ((__pyx_v_v_pos[2]) <= (__pyx_v_self->right_edge[2]));
+            __pyx_t_10 = __pyx_t_9;
           } else {
-            __pyx_t_2 = ((__pyx_v_self->left_edge[2]) <= (__pyx_v_v_pos[2]));
+            __pyx_t_10 = __pyx_t_8;
           }
-          __pyx_t_3 = __pyx_t_2;
+          __pyx_t_8 = __pyx_t_10;
         } else {
-          __pyx_t_3 = ((__pyx_v_v_pos[1]) <= (__pyx_v_self->right_edge[1]));
+          __pyx_t_8 = __pyx_t_7;
         }
-        __pyx_t_2 = __pyx_t_3;
+        __pyx_t_7 = __pyx_t_8;
       } else {
-        __pyx_t_2 = ((__pyx_v_self->left_edge[1]) <= (__pyx_v_v_pos[1]));
+        __pyx_t_7 = __pyx_t_6;
       }
-      __pyx_t_3 = __pyx_t_2;
+      __pyx_t_6 = __pyx_t_7;
     } else {
-      __pyx_t_3 = ((__pyx_v_v_pos[0]) <= (__pyx_v_self->right_edge[0]));
+      __pyx_t_6 = __pyx_t_5;
     }
-    __pyx_t_2 = __pyx_t_3;
+    __pyx_t_5 = __pyx_t_6;
   } else {
-    __pyx_t_2 = ((__pyx_v_self->left_edge[0]) <= (__pyx_v_v_pos[0]));
+    __pyx_t_5 = __pyx_t_2;
   }
-  if (__pyx_t_2) {
+  if (__pyx_t_5) {
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":325
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":324
  *            self.left_edge[1] <= v_pos[1] and v_pos[1] <= self.right_edge[1] and \
  *            self.left_edge[2] <= v_pos[2] and v_pos[2] <= self.right_edge[2]:
  *             intersect_t = 0.0             # <<<<<<<<<<<<<<
@@ -13116,27 +13588,29 @@
   }
   __pyx_L8:;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":326
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":325
  *            self.left_edge[2] <= v_pos[2] and v_pos[2] <= self.right_edge[2]:
  *             intersect_t = 0.0
  *         if not ((0.0 <= intersect_t) and (intersect_t < 1.0)): return 0             # <<<<<<<<<<<<<<
  *         for i in range(3):
  *             intersect[i] = v_pos[i] + intersect_t * v_dir[i]
  */
-  if ((0.0 <= __pyx_v_intersect_t)) {
+  __pyx_t_5 = (0.0 <= __pyx_v_intersect_t);
+  if (__pyx_t_5) {
     __pyx_t_2 = (__pyx_v_intersect_t < 1.0);
+    __pyx_t_6 = __pyx_t_2;
   } else {
-    __pyx_t_2 = (0.0 <= __pyx_v_intersect_t);
+    __pyx_t_6 = __pyx_t_5;
   }
-  __pyx_t_3 = (!__pyx_t_2);
-  if (__pyx_t_3) {
+  __pyx_t_5 = (!__pyx_t_6);
+  if (__pyx_t_5) {
     __pyx_r = 0;
     goto __pyx_L0;
     goto __pyx_L9;
   }
   __pyx_L9:;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":327
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":326
  *             intersect_t = 0.0
  *         if not ((0.0 <= intersect_t) and (intersect_t < 1.0)): return 0
  *         for i in range(3):             # <<<<<<<<<<<<<<
@@ -13146,7 +13620,7 @@
   for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) {
     __pyx_v_i = __pyx_t_1;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":328
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":327
  *         if not ((0.0 <= intersect_t) and (intersect_t < 1.0)): return 0
  *         for i in range(3):
  *             intersect[i] = v_pos[i] + intersect_t * v_dir[i]             # <<<<<<<<<<<<<<
@@ -13155,39 +13629,69 @@
  */
     (__pyx_v_intersect[__pyx_v_i]) = ((__pyx_v_v_pos[__pyx_v_i]) + (__pyx_v_intersect_t * (__pyx_v_v_dir[__pyx_v_i])));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":329
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":330
+ *             cur_ind[i] = <int> floor((intersect[i] +
+ *                                       step[i]*1e-8*self.dds[i] -
+ *                                       self.left_edge[i])/self.dds[i])             # <<<<<<<<<<<<<<
+ *             tmax[i] = (((cur_ind[i]+step[i])*self.dds[i])+
+ *                         self.left_edge[i]-v_pos[i])/v_dir[i]
+ */
+    __pyx_t_3 = (((__pyx_v_intersect[__pyx_v_i]) + (((__pyx_v_step[__pyx_v_i]) * 1e-08) * (__pyx_v_self->dds[__pyx_v_i]))) - (__pyx_v_self->left_edge[__pyx_v_i]));
+    __pyx_t_4 = (__pyx_v_self->dds[__pyx_v_i]);
+    if (unlikely(__pyx_t_4 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":328
  *         for i in range(3):
  *             intersect[i] = v_pos[i] + intersect_t * v_dir[i]
  *             cur_ind[i] = <int> floor((intersect[i] +             # <<<<<<<<<<<<<<
  *                                       step[i]*1e-8*self.dds[i] -
  *                                       self.left_edge[i])/self.dds[i])
  */
-    (__pyx_v_cur_ind[__pyx_v_i]) = ((int)floor(((((__pyx_v_intersect[__pyx_v_i]) + (((__pyx_v_step[__pyx_v_i]) * 1e-08) * (__pyx_v_self->dds[__pyx_v_i]))) - (__pyx_v_self->left_edge[__pyx_v_i])) / (__pyx_v_self->dds[__pyx_v_i]))));
+    (__pyx_v_cur_ind[__pyx_v_i]) = ((int)floor((__pyx_t_3 / __pyx_t_4)));
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":332
+ *                                       self.left_edge[i])/self.dds[i])
+ *             tmax[i] = (((cur_ind[i]+step[i])*self.dds[i])+
+ *                         self.left_edge[i]-v_pos[i])/v_dir[i]             # <<<<<<<<<<<<<<
+ *             if cur_ind[i] == self.dims[i] and step[i] < 0:
+ *                 cur_ind[i] = self.dims[i] - 1
+ */
+    __pyx_t_4 = (((((__pyx_v_cur_ind[__pyx_v_i]) + (__pyx_v_step[__pyx_v_i])) * (__pyx_v_self->dds[__pyx_v_i])) + (__pyx_v_self->left_edge[__pyx_v_i])) - (__pyx_v_v_pos[__pyx_v_i]));
+    __pyx_t_3 = (__pyx_v_v_dir[__pyx_v_i]);
+    if (unlikely(__pyx_t_3 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":331
  *                                       step[i]*1e-8*self.dds[i] -
  *                                       self.left_edge[i])/self.dds[i])
  *             tmax[i] = (((cur_ind[i]+step[i])*self.dds[i])+             # <<<<<<<<<<<<<<
  *                         self.left_edge[i]-v_pos[i])/v_dir[i]
  *             if cur_ind[i] == self.dims[i] and step[i] < 0:
  */
-    (__pyx_v_tmax[__pyx_v_i]) = ((((((__pyx_v_cur_ind[__pyx_v_i]) + (__pyx_v_step[__pyx_v_i])) * (__pyx_v_self->dds[__pyx_v_i])) + (__pyx_v_self->left_edge[__pyx_v_i])) - (__pyx_v_v_pos[__pyx_v_i])) / (__pyx_v_v_dir[__pyx_v_i]));
+    (__pyx_v_tmax[__pyx_v_i]) = (__pyx_t_4 / __pyx_t_3);
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":334
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":333
  *             tmax[i] = (((cur_ind[i]+step[i])*self.dds[i])+
  *                         self.left_edge[i]-v_pos[i])/v_dir[i]
  *             if cur_ind[i] == self.dims[i] and step[i] < 0:             # <<<<<<<<<<<<<<
  *                 cur_ind[i] = self.dims[i] - 1
  *             if cur_ind[i] < 0 or cur_ind[i] >= self.dims[i]: return 0
  */
-    if (((__pyx_v_cur_ind[__pyx_v_i]) == (__pyx_v_self->dims[__pyx_v_i]))) {
-      __pyx_t_3 = ((__pyx_v_step[__pyx_v_i]) < 0);
+    __pyx_t_5 = ((__pyx_v_cur_ind[__pyx_v_i]) == (__pyx_v_self->dims[__pyx_v_i]));
+    if (__pyx_t_5) {
+      __pyx_t_6 = ((__pyx_v_step[__pyx_v_i]) < 0);
+      __pyx_t_2 = __pyx_t_6;
     } else {
-      __pyx_t_3 = ((__pyx_v_cur_ind[__pyx_v_i]) == (__pyx_v_self->dims[__pyx_v_i]));
+      __pyx_t_2 = __pyx_t_5;
     }
-    if (__pyx_t_3) {
+    if (__pyx_t_2) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":335
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":334
  *                         self.left_edge[i]-v_pos[i])/v_dir[i]
  *             if cur_ind[i] == self.dims[i] and step[i] < 0:
  *                 cur_ind[i] = self.dims[i] - 1             # <<<<<<<<<<<<<<
@@ -13199,94 +13703,130 @@
     }
     __pyx_L12:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":336
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":335
  *             if cur_ind[i] == self.dims[i] and step[i] < 0:
  *                 cur_ind[i] = self.dims[i] - 1
  *             if cur_ind[i] < 0 or cur_ind[i] >= self.dims[i]: return 0             # <<<<<<<<<<<<<<
  *             if step[i] > 0:
  *                 tmax[i] = (((cur_ind[i]+1)*self.dds[i])
  */
-    if (!((__pyx_v_cur_ind[__pyx_v_i]) < 0)) {
-      __pyx_t_3 = ((__pyx_v_cur_ind[__pyx_v_i]) >= (__pyx_v_self->dims[__pyx_v_i]));
+    __pyx_t_2 = ((__pyx_v_cur_ind[__pyx_v_i]) < 0);
+    if (!__pyx_t_2) {
+      __pyx_t_5 = ((__pyx_v_cur_ind[__pyx_v_i]) >= (__pyx_v_self->dims[__pyx_v_i]));
+      __pyx_t_6 = __pyx_t_5;
     } else {
-      __pyx_t_3 = ((__pyx_v_cur_ind[__pyx_v_i]) < 0);
+      __pyx_t_6 = __pyx_t_2;
     }
-    if (__pyx_t_3) {
+    if (__pyx_t_6) {
       __pyx_r = 0;
       goto __pyx_L0;
       goto __pyx_L13;
     }
     __pyx_L13:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":337
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":336
  *                 cur_ind[i] = self.dims[i] - 1
  *             if cur_ind[i] < 0 or cur_ind[i] >= self.dims[i]: return 0
  *             if step[i] > 0:             # <<<<<<<<<<<<<<
  *                 tmax[i] = (((cur_ind[i]+1)*self.dds[i])
  *                             +self.left_edge[i]-v_pos[i])/v_dir[i]
  */
-    __pyx_t_3 = ((__pyx_v_step[__pyx_v_i]) > 0);
-    if (__pyx_t_3) {
+    __pyx_t_6 = ((__pyx_v_step[__pyx_v_i]) > 0);
+    if (__pyx_t_6) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":338
+ *             if step[i] > 0:
+ *                 tmax[i] = (((cur_ind[i]+1)*self.dds[i])
+ *                             +self.left_edge[i]-v_pos[i])/v_dir[i]             # <<<<<<<<<<<<<<
+ *             if step[i] < 0:
+ *                 tmax[i] = (((cur_ind[i]+0)*self.dds[i])
+ */
+      __pyx_t_3 = (((((__pyx_v_cur_ind[__pyx_v_i]) + 1) * (__pyx_v_self->dds[__pyx_v_i])) + (__pyx_v_self->left_edge[__pyx_v_i])) - (__pyx_v_v_pos[__pyx_v_i]));
+      __pyx_t_4 = (__pyx_v_v_dir[__pyx_v_i]);
+      if (unlikely(__pyx_t_4 == 0)) {
+        PyErr_Format(PyExc_ZeroDivisionError, "float division");
+        {__pyx_filename = __pyx_f[2]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":337
  *             if cur_ind[i] < 0 or cur_ind[i] >= self.dims[i]: return 0
  *             if step[i] > 0:
  *                 tmax[i] = (((cur_ind[i]+1)*self.dds[i])             # <<<<<<<<<<<<<<
  *                             +self.left_edge[i]-v_pos[i])/v_dir[i]
  *             if step[i] < 0:
  */
-      (__pyx_v_tmax[__pyx_v_i]) = ((((((__pyx_v_cur_ind[__pyx_v_i]) + 1) * (__pyx_v_self->dds[__pyx_v_i])) + (__pyx_v_self->left_edge[__pyx_v_i])) - (__pyx_v_v_pos[__pyx_v_i])) / (__pyx_v_v_dir[__pyx_v_i]));
+      (__pyx_v_tmax[__pyx_v_i]) = (__pyx_t_3 / __pyx_t_4);
       goto __pyx_L14;
     }
     __pyx_L14:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":340
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":339
  *                 tmax[i] = (((cur_ind[i]+1)*self.dds[i])
  *                             +self.left_edge[i]-v_pos[i])/v_dir[i]
  *             if step[i] < 0:             # <<<<<<<<<<<<<<
  *                 tmax[i] = (((cur_ind[i]+0)*self.dds[i])
  *                             +self.left_edge[i]-v_pos[i])/v_dir[i]
  */
-    __pyx_t_3 = ((__pyx_v_step[__pyx_v_i]) < 0);
-    if (__pyx_t_3) {
+    __pyx_t_6 = ((__pyx_v_step[__pyx_v_i]) < 0);
+    if (__pyx_t_6) {
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":341
+ *             if step[i] < 0:
+ *                 tmax[i] = (((cur_ind[i]+0)*self.dds[i])
+ *                             +self.left_edge[i]-v_pos[i])/v_dir[i]             # <<<<<<<<<<<<<<
+ *             tdelta[i] = (self.dds[i]/v_dir[i])
+ *             if tdelta[i] < 0: tdelta[i] *= -1
+ */
+      __pyx_t_4 = (((((__pyx_v_cur_ind[__pyx_v_i]) + 0) * (__pyx_v_self->dds[__pyx_v_i])) + (__pyx_v_self->left_edge[__pyx_v_i])) - (__pyx_v_v_pos[__pyx_v_i]));
+      __pyx_t_3 = (__pyx_v_v_dir[__pyx_v_i]);
+      if (unlikely(__pyx_t_3 == 0)) {
+        PyErr_Format(PyExc_ZeroDivisionError, "float division");
+        {__pyx_filename = __pyx_f[2]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":340
  *                             +self.left_edge[i]-v_pos[i])/v_dir[i]
  *             if step[i] < 0:
  *                 tmax[i] = (((cur_ind[i]+0)*self.dds[i])             # <<<<<<<<<<<<<<
  *                             +self.left_edge[i]-v_pos[i])/v_dir[i]
  *             tdelta[i] = (self.dds[i]/v_dir[i])
  */
-      (__pyx_v_tmax[__pyx_v_i]) = ((((((__pyx_v_cur_ind[__pyx_v_i]) + 0) * (__pyx_v_self->dds[__pyx_v_i])) + (__pyx_v_self->left_edge[__pyx_v_i])) - (__pyx_v_v_pos[__pyx_v_i])) / (__pyx_v_v_dir[__pyx_v_i]));
+      (__pyx_v_tmax[__pyx_v_i]) = (__pyx_t_4 / __pyx_t_3);
       goto __pyx_L15;
     }
     __pyx_L15:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":343
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":342
  *                 tmax[i] = (((cur_ind[i]+0)*self.dds[i])
  *                             +self.left_edge[i]-v_pos[i])/v_dir[i]
  *             tdelta[i] = (self.dds[i]/v_dir[i])             # <<<<<<<<<<<<<<
  *             if tdelta[i] < 0: tdelta[i] *= -1
  *         # We have to jumpstart our calculation
  */
-    (__pyx_v_tdelta[__pyx_v_i]) = ((__pyx_v_self->dds[__pyx_v_i]) / (__pyx_v_v_dir[__pyx_v_i]));
+    __pyx_t_3 = (__pyx_v_self->dds[__pyx_v_i]);
+    __pyx_t_4 = (__pyx_v_v_dir[__pyx_v_i]);
+    if (unlikely(__pyx_t_4 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    (__pyx_v_tdelta[__pyx_v_i]) = (__pyx_t_3 / __pyx_t_4);
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":344
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":343
  *                             +self.left_edge[i]-v_pos[i])/v_dir[i]
  *             tdelta[i] = (self.dds[i]/v_dir[i])
  *             if tdelta[i] < 0: tdelta[i] *= -1             # <<<<<<<<<<<<<<
  *         # We have to jumpstart our calculation
  *         enter_t = intersect_t
  */
-    __pyx_t_3 = ((__pyx_v_tdelta[__pyx_v_i]) < 0);
-    if (__pyx_t_3) {
+    __pyx_t_6 = ((__pyx_v_tdelta[__pyx_v_i]) < 0);
+    if (__pyx_t_6) {
       (__pyx_v_tdelta[__pyx_v_i]) *= -1;
       goto __pyx_L16;
     }
     __pyx_L16:;
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":346
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":345
  *             if tdelta[i] < 0: tdelta[i] *= -1
  *         # We have to jumpstart our calculation
  *         enter_t = intersect_t             # <<<<<<<<<<<<<<
@@ -13295,7 +13835,7 @@
  */
   __pyx_v_enter_t = __pyx_v_intersect_t;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":347
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":346
  *         # We have to jumpstart our calculation
  *         enter_t = intersect_t
  *         while 1:             # <<<<<<<<<<<<<<
@@ -13303,10 +13843,10 @@
  *             # but we are tracing on the grid, not on the data...
  */
   while (1) {
-    __pyx_t_3 = 1;
-    if (!__pyx_t_3) break;
+    __pyx_t_6 = 1;
+    if (!__pyx_t_6) break;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":350
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":349
  *             # dims here is one less than the dimensions of the data,
  *             # but we are tracing on the grid, not on the data...
  *             if (not (0 <= cur_ind[0] < self.dims[0])) or \             # <<<<<<<<<<<<<<
@@ -13314,13 +13854,14 @@
  *                (not (0 <= cur_ind[2] < self.dims[2])):
  */
     __pyx_t_1 = (__pyx_v_cur_ind[0]);
-    __pyx_t_3 = (0 <= __pyx_t_1);
-    if (__pyx_t_3) {
-      __pyx_t_3 = (__pyx_t_1 < (__pyx_v_self->dims[0]));
+    __pyx_t_6 = (0 <= __pyx_t_1);
+    if (__pyx_t_6) {
+      __pyx_t_6 = (__pyx_t_1 < (__pyx_v_self->dims[0]));
     }
-    if (!(!__pyx_t_3)) {
+    __pyx_t_2 = (!__pyx_t_6);
+    if (!__pyx_t_2) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":351
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":350
  *             # but we are tracing on the grid, not on the data...
  *             if (not (0 <= cur_ind[0] < self.dims[0])) or \
  *                (not (0 <= cur_ind[1] < self.dims[1])) or \             # <<<<<<<<<<<<<<
@@ -13328,13 +13869,14 @@
  *                 break
  */
       __pyx_t_1 = (__pyx_v_cur_ind[1]);
-      __pyx_t_2 = (0 <= __pyx_t_1);
-      if (__pyx_t_2) {
-        __pyx_t_2 = (__pyx_t_1 < (__pyx_v_self->dims[1]));
+      __pyx_t_6 = (0 <= __pyx_t_1);
+      if (__pyx_t_6) {
+        __pyx_t_6 = (__pyx_t_1 < (__pyx_v_self->dims[1]));
       }
-      if (!(!__pyx_t_2)) {
+      __pyx_t_5 = (!__pyx_t_6);
+      if (!__pyx_t_5) {
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":352
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":351
  *             if (not (0 <= cur_ind[0] < self.dims[0])) or \
  *                (not (0 <= cur_ind[1] < self.dims[1])) or \
  *                (not (0 <= cur_ind[2] < self.dims[2])):             # <<<<<<<<<<<<<<
@@ -13342,21 +13884,22 @@
  *             hit += 1
  */
         __pyx_t_1 = (__pyx_v_cur_ind[2]);
-        __pyx_t_4 = (0 <= __pyx_t_1);
-        if (__pyx_t_4) {
-          __pyx_t_4 = (__pyx_t_1 < (__pyx_v_self->dims[2]));
+        __pyx_t_6 = (0 <= __pyx_t_1);
+        if (__pyx_t_6) {
+          __pyx_t_6 = (__pyx_t_1 < (__pyx_v_self->dims[2]));
         }
-        __pyx_t_5 = (!__pyx_t_4);
+        __pyx_t_7 = (!__pyx_t_6);
+        __pyx_t_6 = __pyx_t_7;
       } else {
-        __pyx_t_5 = (!__pyx_t_2);
+        __pyx_t_6 = __pyx_t_5;
       }
-      __pyx_t_2 = __pyx_t_5;
+      __pyx_t_5 = __pyx_t_6;
     } else {
-      __pyx_t_2 = (!__pyx_t_3);
+      __pyx_t_5 = __pyx_t_2;
     }
-    if (__pyx_t_2) {
+    if (__pyx_t_5) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":353
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":352
  *                (not (0 <= cur_ind[1] < self.dims[1])) or \
  *                (not (0 <= cur_ind[2] < self.dims[2])):
  *                 break             # <<<<<<<<<<<<<<
@@ -13368,7 +13911,7 @@
     }
     __pyx_L19:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":354
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":353
  *                (not (0 <= cur_ind[2] < self.dims[2])):
  *                 break
  *             hit += 1             # <<<<<<<<<<<<<<
@@ -13377,27 +13920,27 @@
  */
     __pyx_v_hit += 1;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":355
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":354
  *                 break
  *             hit += 1
  *             if tmax[0] < tmax[1]:             # <<<<<<<<<<<<<<
  *                 if tmax[0] < tmax[2]:
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[0], cur_ind,
  */
-    __pyx_t_2 = ((__pyx_v_tmax[0]) < (__pyx_v_tmax[1]));
-    if (__pyx_t_2) {
+    __pyx_t_5 = ((__pyx_v_tmax[0]) < (__pyx_v_tmax[1]));
+    if (__pyx_t_5) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":356
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":355
  *             hit += 1
  *             if tmax[0] < tmax[1]:
  *                 if tmax[0] < tmax[2]:             # <<<<<<<<<<<<<<
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[0], cur_ind,
  *                                        rgba, tf)
  */
-      __pyx_t_2 = ((__pyx_v_tmax[0]) < (__pyx_v_tmax[2]));
-      if (__pyx_t_2) {
+      __pyx_t_5 = ((__pyx_v_tmax[0]) < (__pyx_v_tmax[2]));
+      if (__pyx_t_5) {
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":358
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":357
  *                 if tmax[0] < tmax[2]:
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[0], cur_ind,
  *                                        rgba, tf)             # <<<<<<<<<<<<<<
@@ -13406,7 +13949,7 @@
  */
         ((struct __pyx_vtabstruct_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self->__pyx_vtab)->sample_values(__pyx_v_self, __pyx_v_v_pos, __pyx_v_v_dir, __pyx_v_enter_t, (__pyx_v_tmax[0]), __pyx_v_cur_ind, __pyx_v_rgba, __pyx_v_tf);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":359
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":358
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[0], cur_ind,
  *                                        rgba, tf)
  *                     cur_ind[0] += step[0]             # <<<<<<<<<<<<<<
@@ -13415,7 +13958,7 @@
  */
         (__pyx_v_cur_ind[0]) += (__pyx_v_step[0]);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":360
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":359
  *                                        rgba, tf)
  *                     cur_ind[0] += step[0]
  *                     dt = fmin(tmax[0], 1.0) - enter_t             # <<<<<<<<<<<<<<
@@ -13424,7 +13967,7 @@
  */
         __pyx_v_dt = (__pyx_f_2yt_9amr_utils_fmin((__pyx_v_tmax[0]), 1.0) - __pyx_v_enter_t);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":361
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":360
  *                     cur_ind[0] += step[0]
  *                     dt = fmin(tmax[0], 1.0) - enter_t
  *                     enter_t = tmax[0]             # <<<<<<<<<<<<<<
@@ -13433,7 +13976,7 @@
  */
         __pyx_v_enter_t = (__pyx_v_tmax[0]);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":362
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":361
  *                     dt = fmin(tmax[0], 1.0) - enter_t
  *                     enter_t = tmax[0]
  *                     tmax[0] += tdelta[0]             # <<<<<<<<<<<<<<
@@ -13445,7 +13988,7 @@
       }
       /*else*/ {
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":365
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":364
  *                 else:
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[2], cur_ind,
  *                                        rgba, tf)             # <<<<<<<<<<<<<<
@@ -13454,7 +13997,7 @@
  */
         ((struct __pyx_vtabstruct_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self->__pyx_vtab)->sample_values(__pyx_v_self, __pyx_v_v_pos, __pyx_v_v_dir, __pyx_v_enter_t, (__pyx_v_tmax[2]), __pyx_v_cur_ind, __pyx_v_rgba, __pyx_v_tf);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":366
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":365
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[2], cur_ind,
  *                                        rgba, tf)
  *                     cur_ind[2] += step[2]             # <<<<<<<<<<<<<<
@@ -13463,7 +14006,7 @@
  */
         (__pyx_v_cur_ind[2]) += (__pyx_v_step[2]);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":367
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":366
  *                                        rgba, tf)
  *                     cur_ind[2] += step[2]
  *                     dt = fmin(tmax[2], 1.0) - enter_t             # <<<<<<<<<<<<<<
@@ -13472,7 +14015,7 @@
  */
         __pyx_v_dt = (__pyx_f_2yt_9amr_utils_fmin((__pyx_v_tmax[2]), 1.0) - __pyx_v_enter_t);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":368
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":367
  *                     cur_ind[2] += step[2]
  *                     dt = fmin(tmax[2], 1.0) - enter_t
  *                     enter_t = tmax[2]             # <<<<<<<<<<<<<<
@@ -13481,7 +14024,7 @@
  */
         __pyx_v_enter_t = (__pyx_v_tmax[2]);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":369
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":368
  *                     dt = fmin(tmax[2], 1.0) - enter_t
  *                     enter_t = tmax[2]
  *                     tmax[2] += tdelta[2]             # <<<<<<<<<<<<<<
@@ -13495,17 +14038,17 @@
     }
     /*else*/ {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":371
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":370
  *                     tmax[2] += tdelta[2]
  *             else:
  *                 if tmax[1] < tmax[2]:             # <<<<<<<<<<<<<<
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[1], cur_ind,
  *                                        rgba, tf)
  */
-      __pyx_t_2 = ((__pyx_v_tmax[1]) < (__pyx_v_tmax[2]));
-      if (__pyx_t_2) {
+      __pyx_t_5 = ((__pyx_v_tmax[1]) < (__pyx_v_tmax[2]));
+      if (__pyx_t_5) {
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":373
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":372
  *                 if tmax[1] < tmax[2]:
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[1], cur_ind,
  *                                        rgba, tf)             # <<<<<<<<<<<<<<
@@ -13514,7 +14057,7 @@
  */
         ((struct __pyx_vtabstruct_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self->__pyx_vtab)->sample_values(__pyx_v_self, __pyx_v_v_pos, __pyx_v_v_dir, __pyx_v_enter_t, (__pyx_v_tmax[1]), __pyx_v_cur_ind, __pyx_v_rgba, __pyx_v_tf);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":374
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":373
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[1], cur_ind,
  *                                        rgba, tf)
  *                     cur_ind[1] += step[1]             # <<<<<<<<<<<<<<
@@ -13523,7 +14066,7 @@
  */
         (__pyx_v_cur_ind[1]) += (__pyx_v_step[1]);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":375
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":374
  *                                        rgba, tf)
  *                     cur_ind[1] += step[1]
  *                     dt = fmin(tmax[1], 1.0) - enter_t             # <<<<<<<<<<<<<<
@@ -13532,7 +14075,7 @@
  */
         __pyx_v_dt = (__pyx_f_2yt_9amr_utils_fmin((__pyx_v_tmax[1]), 1.0) - __pyx_v_enter_t);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":376
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":375
  *                     cur_ind[1] += step[1]
  *                     dt = fmin(tmax[1], 1.0) - enter_t
  *                     enter_t = tmax[1]             # <<<<<<<<<<<<<<
@@ -13541,7 +14084,7 @@
  */
         __pyx_v_enter_t = (__pyx_v_tmax[1]);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":377
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":376
  *                     dt = fmin(tmax[1], 1.0) - enter_t
  *                     enter_t = tmax[1]
  *                     tmax[1] += tdelta[1]             # <<<<<<<<<<<<<<
@@ -13553,7 +14096,7 @@
       }
       /*else*/ {
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":380
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":379
  *                 else:
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[2], cur_ind,
  *                                        rgba, tf)             # <<<<<<<<<<<<<<
@@ -13562,7 +14105,7 @@
  */
         ((struct __pyx_vtabstruct_2yt_9amr_utils_PartitionedGrid *)__pyx_v_self->__pyx_vtab)->sample_values(__pyx_v_self, __pyx_v_v_pos, __pyx_v_v_dir, __pyx_v_enter_t, (__pyx_v_tmax[2]), __pyx_v_cur_ind, __pyx_v_rgba, __pyx_v_tf);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":381
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":380
  *                     self.sample_values(v_pos, v_dir, enter_t, tmax[2], cur_ind,
  *                                        rgba, tf)
  *                     cur_ind[2] += step[2]             # <<<<<<<<<<<<<<
@@ -13571,7 +14114,7 @@
  */
         (__pyx_v_cur_ind[2]) += (__pyx_v_step[2]);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":382
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":381
  *                                        rgba, tf)
  *                     cur_ind[2] += step[2]
  *                     dt = fmin(tmax[2], 1.0) - enter_t             # <<<<<<<<<<<<<<
@@ -13580,7 +14123,7 @@
  */
         __pyx_v_dt = (__pyx_f_2yt_9amr_utils_fmin((__pyx_v_tmax[2]), 1.0) - __pyx_v_enter_t);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":383
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":382
  *                     cur_ind[2] += step[2]
  *                     dt = fmin(tmax[2], 1.0) - enter_t
  *                     enter_t = tmax[2]             # <<<<<<<<<<<<<<
@@ -13589,7 +14132,7 @@
  */
         __pyx_v_enter_t = (__pyx_v_tmax[2]);
 
-        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":384
+        /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":383
  *                     dt = fmin(tmax[2], 1.0) - enter_t
  *                     enter_t = tmax[2]
  *                     tmax[2] += tdelta[2]             # <<<<<<<<<<<<<<
@@ -13602,15 +14145,15 @@
     }
     __pyx_L20:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":385
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":384
  *                     enter_t = tmax[2]
  *                     tmax[2] += tdelta[2]
  *             if enter_t > 1.0: break             # <<<<<<<<<<<<<<
  *         return hit
  * 
  */
-    __pyx_t_2 = (__pyx_v_enter_t > 1.0);
-    if (__pyx_t_2) {
+    __pyx_t_5 = (__pyx_v_enter_t > 1.0);
+    if (__pyx_t_5) {
       goto __pyx_L18_break;
       goto __pyx_L23;
     }
@@ -13618,7 +14161,7 @@
   }
   __pyx_L18_break:;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":386
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":385
  *                     tmax[2] += tdelta[2]
  *             if enter_t > 1.0: break
  *         return hit             # <<<<<<<<<<<<<<
@@ -13629,12 +14172,18 @@
   goto __pyx_L0;
 
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("yt.amr_utils.PartitionedGrid.integrate_ray");
+  __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF((PyObject *)__pyx_v_tf);
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":388
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":387
  *         return hit
  * 
  *     cdef void sample_values(self,             # <<<<<<<<<<<<<<
@@ -13651,50 +14200,62 @@
   __pyx_t_5numpy_float64_t __pyx_v_grad[3];
   int __pyx_v_dti;
   int __pyx_v_i;
-  int __pyx_t_1;
-  int __pyx_t_2;
+  __pyx_t_5numpy_float64_t __pyx_t_1;
+  long __pyx_t_2;
   int __pyx_t_3;
-  __Pyx_SetupRefcountContext("sample_values");
+  int __pyx_t_4;
+  double __pyx_t_5;
+  int __pyx_t_6;
+  __Pyx_RefNannySetupContext("sample_values");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF((PyObject *)__pyx_v_tf);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":399
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":398
  *         cdef np.float64_t grad[3]
  *         cdef int dti, i
- *         dt = (exit_t - enter_t) / (self.ns-1) # five samples, so divide by four             # <<<<<<<<<<<<<<
- *         for dti in range(self.ns - 1):
+ *         dt = (exit_t - enter_t) / (tf.ns-1) # five samples, so divide by four             # <<<<<<<<<<<<<<
+ *         for dti in range(tf.ns - 1):
  *             t = enter_t + dt * dti
  */
-  __pyx_v_dt = ((__pyx_v_exit_t - __pyx_v_enter_t) / (__pyx_v_self->ns - 1));
+  __pyx_t_1 = (__pyx_v_exit_t - __pyx_v_enter_t);
+  __pyx_t_2 = (__pyx_v_tf->ns - 1);
+  if (unlikely(__pyx_t_2 == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_v_dt = (__pyx_t_1 / __pyx_t_2);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":400
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":399
  *         cdef int dti, i
- *         dt = (exit_t - enter_t) / (self.ns-1) # five samples, so divide by four
- *         for dti in range(self.ns - 1):             # <<<<<<<<<<<<<<
+ *         dt = (exit_t - enter_t) / (tf.ns-1) # five samples, so divide by four
+ *         for dti in range(tf.ns - 1):             # <<<<<<<<<<<<<<
  *             t = enter_t + dt * dti
  *             for i in range(3):
  */
-  for (__pyx_t_1 = 0; __pyx_t_1 < (__pyx_v_self->ns - 1); __pyx_t_1+=1) {
-    __pyx_v_dti = __pyx_t_1;
-
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":401
- *         dt = (exit_t - enter_t) / (self.ns-1) # five samples, so divide by four
- *         for dti in range(self.ns - 1):
+  __pyx_t_2 = (__pyx_v_tf->ns - 1);
+  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
+    __pyx_v_dti = __pyx_t_3;
+
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":400
+ *         dt = (exit_t - enter_t) / (tf.ns-1) # five samples, so divide by four
+ *         for dti in range(tf.ns - 1):
  *             t = enter_t + dt * dti             # <<<<<<<<<<<<<<
  *             for i in range(3):
  *                 cp[i] = v_pos[i] + t * v_dir[i]
  */
     __pyx_v_t = (__pyx_v_enter_t + (__pyx_v_dt * __pyx_v_dti));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":402
- *         for dti in range(self.ns - 1):
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":401
+ *         for dti in range(tf.ns - 1):
  *             t = enter_t + dt * dti
  *             for i in range(3):             # <<<<<<<<<<<<<<
  *                 cp[i] = v_pos[i] + t * v_dir[i]
  *                 dp[i] = fclip(fmod(cp[i], self.dds[i])/self.dds[i], 0, 1.0)
  */
-    for (__pyx_t_2 = 0; __pyx_t_2 < 3; __pyx_t_2+=1) {
-      __pyx_v_i = __pyx_t_2;
+    for (__pyx_t_4 = 0; __pyx_t_4 < 3; __pyx_t_4+=1) {
+      __pyx_v_i = __pyx_t_4;
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":403
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":402
  *             t = enter_t + dt * dti
  *             for i in range(3):
  *                 cp[i] = v_pos[i] + t * v_dir[i]             # <<<<<<<<<<<<<<
@@ -13703,17 +14264,23 @@
  */
       (__pyx_v_cp[__pyx_v_i]) = ((__pyx_v_v_pos[__pyx_v_i]) + (__pyx_v_t * (__pyx_v_v_dir[__pyx_v_i])));
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":404
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":403
  *             for i in range(3):
  *                 cp[i] = v_pos[i] + t * v_dir[i]
  *                 dp[i] = fclip(fmod(cp[i], self.dds[i])/self.dds[i], 0, 1.0)             # <<<<<<<<<<<<<<
  *             dv = trilinear_interpolate(self.dims, ci, dp, self.data)
  *             if tf.use_light == 1:
  */
-      (__pyx_v_dp[__pyx_v_i]) = __pyx_f_2yt_9amr_utils_fclip((fmod((__pyx_v_cp[__pyx_v_i]), (__pyx_v_self->dds[__pyx_v_i])) / (__pyx_v_self->dds[__pyx_v_i])), 0, 1.0);
+      __pyx_t_5 = fmod((__pyx_v_cp[__pyx_v_i]), (__pyx_v_self->dds[__pyx_v_i]));
+      __pyx_t_1 = (__pyx_v_self->dds[__pyx_v_i]);
+      if (unlikely(__pyx_t_1 == 0)) {
+        PyErr_Format(PyExc_ZeroDivisionError, "float division");
+        {__pyx_filename = __pyx_f[2]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      (__pyx_v_dp[__pyx_v_i]) = __pyx_f_2yt_9amr_utils_fclip((__pyx_t_5 / __pyx_t_1), 0, 1.0);
     }
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":405
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":404
  *                 cp[i] = v_pos[i] + t * v_dir[i]
  *                 dp[i] = fclip(fmod(cp[i], self.dds[i])/self.dds[i], 0, 1.0)
  *             dv = trilinear_interpolate(self.dims, ci, dp, self.data)             # <<<<<<<<<<<<<<
@@ -13722,17 +14289,17 @@
  */
     __pyx_v_dv = trilinear_interpolate(__pyx_v_self->dims, __pyx_v_ci, __pyx_v_dp, __pyx_v_self->data);
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":406
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":405
  *                 dp[i] = fclip(fmod(cp[i], self.dds[i])/self.dds[i], 0, 1.0)
  *             dv = trilinear_interpolate(self.dims, ci, dp, self.data)
  *             if tf.use_light == 1:             # <<<<<<<<<<<<<<
  *                 eval_gradient(self.dims, ci, dp, self.data, grad)
  *             tf.eval_transfer(dt, dv, rgba, grad)
  */
-    __pyx_t_3 = (__pyx_v_tf->use_light == 1);
-    if (__pyx_t_3) {
+    __pyx_t_6 = (__pyx_v_tf->use_light == 1);
+    if (__pyx_t_6) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":407
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":406
  *             dv = trilinear_interpolate(self.dims, ci, dp, self.data)
  *             if tf.use_light == 1:
  *                 eval_gradient(self.dims, ci, dp, self.data, grad)             # <<<<<<<<<<<<<<
@@ -13744,7 +14311,7 @@
     }
     __pyx_L7:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":408
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":407
  *             if tf.use_light == 1:
  *                 eval_gradient(self.dims, ci, dp, self.data, grad)
  *             tf.eval_transfer(dt, dv, rgba, grad)             # <<<<<<<<<<<<<<
@@ -13754,10 +14321,16 @@
     ((struct __pyx_vtabstruct_2yt_9amr_utils_TransferFunctionProxy *)__pyx_v_tf->__pyx_vtab)->eval_transfer(__pyx_v_tf, __pyx_v_dt, __pyx_v_dv, __pyx_v_rgba, __pyx_v_grad);
   }
 
-  __Pyx_FinishRefcountContext();
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("yt.amr_utils.PartitionedGrid.sample_values");
+  __pyx_L0:;
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF((PyObject *)__pyx_v_tf);
+  __Pyx_RefNannyFinishContext();
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":418
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":417
  *     @cython.boundscheck(False)
  *     @cython.wraparound(False)
  *     def __init__(self, grid, int direction, int left):             # <<<<<<<<<<<<<<
@@ -13772,13 +14345,13 @@
   int __pyx_v_left;
   int __pyx_v_i;
   int __pyx_r;
-  PyObject *__pyx_1 = 0;
   int __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
-  __pyx_t_5numpy_float64_t __pyx_t_3;
-  int __pyx_t_4;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_grid,&__pyx_kp_direction,&__pyx_kp_left,0};
-  __Pyx_SetupRefcountContext("__init__");
+  PyObject *__pyx_t_3 = NULL;
+  __pyx_t_5numpy_float64_t __pyx_t_4;
+  int __pyx_t_5;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__grid,&__pyx_n_s__direction,&__pyx_n_s__left,0};
+  __Pyx_RefNannySetupContext("__init__");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[3] = {0,0,0};
@@ -13791,44 +14364,46 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_grid);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grid);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_direction);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__direction);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_left);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_grid = values[0];
-    __pyx_v_direction = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_left = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_left == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_direction = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_left = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_left == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
     goto __pyx_L5_argtuple_error;
   } else {
     __pyx_v_grid = PyTuple_GET_ITEM(__pyx_args, 0);
-    __pyx_v_direction = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_left = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_left == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_direction = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_left = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_left == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.GridFace.__init__");
   return -1;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF(__pyx_v_grid);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":419
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":418
  *     @cython.wraparound(False)
  *     def __init__(self, grid, int direction, int left):
  *         self.direction = direction             # <<<<<<<<<<<<<<
@@ -13837,7 +14412,7 @@
  */
   ((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_v_self)->direction = __pyx_v_direction;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":420
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":419
  *     def __init__(self, grid, int direction, int left):
  *         self.direction = direction
  *         if left == 1:             # <<<<<<<<<<<<<<
@@ -13847,87 +14422,87 @@
   __pyx_t_1 = (__pyx_v_left == 1);
   if (__pyx_t_1) {
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":421
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":420
  *         self.direction = direction
  *         if left == 1:
  *             self.coord = grid.LeftEdge[direction]             # <<<<<<<<<<<<<<
  *         else:
  *             self.coord = grid.RightEdge[direction]
  */
-    __pyx_t_2 = PyObject_GetAttr(__pyx_v_grid, __pyx_kp_LeftEdge); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_GetAttr(__pyx_v_grid, __pyx_n_s__LeftEdge); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_direction, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_1);
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_direction, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-    ((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_v_self)->coord = __pyx_t_3;
+    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_4 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    ((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_v_self)->coord = __pyx_t_4;
     goto __pyx_L6;
   }
   /*else*/ {
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":423
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":422
  *             self.coord = grid.LeftEdge[direction]
  *         else:
  *             self.coord = grid.RightEdge[direction]             # <<<<<<<<<<<<<<
  *         cdef int i
  *         for i in range(3):
  */
-    __pyx_t_2 = PyObject_GetAttr(__pyx_v_grid, __pyx_kp_RightEdge); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_GetAttr(__pyx_v_grid, __pyx_n_s__RightEdge); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_direction, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_direction, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_4 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-    ((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_v_self)->coord = __pyx_t_3;
+    ((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_v_self)->coord = __pyx_t_4;
   }
   __pyx_L6:;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":425
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":424
  *             self.coord = grid.RightEdge[direction]
  *         cdef int i
  *         for i in range(3):             # <<<<<<<<<<<<<<
  *             self.left_edge[i] = grid.LeftEdge[i]
  *             self.right_edge[i] = grid.RightEdge[i]
  */
-  for (__pyx_t_4 = 0; __pyx_t_4 < 3; __pyx_t_4+=1) {
-    __pyx_v_i = __pyx_t_4;
+  for (__pyx_t_5 = 0; __pyx_t_5 < 3; __pyx_t_5+=1) {
+    __pyx_v_i = __pyx_t_5;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":426
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":425
  *         cdef int i
  *         for i in range(3):
  *             self.left_edge[i] = grid.LeftEdge[i]             # <<<<<<<<<<<<<<
  *             self.right_edge[i] = grid.RightEdge[i]
  *         self.left_edge[direction] = self.right_edge[direction] = self.coord
  */
-    __pyx_t_2 = PyObject_GetAttr(__pyx_v_grid, __pyx_kp_LeftEdge); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_GetAttr(__pyx_v_grid, __pyx_n_s__LeftEdge); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_1);
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-    (((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_v_self)->left_edge[__pyx_v_i]) = __pyx_t_3;
+    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_4 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    (((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_v_self)->left_edge[__pyx_v_i]) = __pyx_t_4;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":427
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":426
  *         for i in range(3):
  *             self.left_edge[i] = grid.LeftEdge[i]
  *             self.right_edge[i] = grid.RightEdge[i]             # <<<<<<<<<<<<<<
  *         self.left_edge[direction] = self.right_edge[direction] = self.coord
  * 
  */
-    __pyx_t_2 = PyObject_GetAttr(__pyx_v_grid, __pyx_kp_RightEdge); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_GetAttr(__pyx_v_grid, __pyx_n_s__RightEdge); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_4 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-    (((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_v_self)->right_edge[__pyx_v_i]) = __pyx_t_3;
+    (((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_v_self)->right_edge[__pyx_v_i]) = __pyx_t_4;
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":428
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":427
  *             self.left_edge[i] = grid.LeftEdge[i]
  *             self.right_edge[i] = grid.RightEdge[i]
  *         self.left_edge[direction] = self.right_edge[direction] = self.coord             # <<<<<<<<<<<<<<
@@ -13940,16 +14515,18 @@
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
   __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
   __Pyx_AddTraceback("yt.amr_utils.GridFace.__init__");
   __pyx_r = -1;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF(__pyx_v_grid);
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":432
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":431
  *     @cython.boundscheck(False)
  *     @cython.wraparound(False)
  *     cdef int proj_overlap(self, np.float64_t *left_edge, np.float64_t *right_edge):             # <<<<<<<<<<<<<<
@@ -13962,27 +14539,28 @@
   int __pyx_v_yax;
   int __pyx_r;
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("proj_overlap");
+  __Pyx_RefNannySetupContext("proj_overlap");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":434
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":433
  *     cdef int proj_overlap(self, np.float64_t *left_edge, np.float64_t *right_edge):
  *         cdef int xax, yax
  *         xax = (self.direction + 1) % 3             # <<<<<<<<<<<<<<
  *         yax = (self.direction + 2) % 3
  *         if left_edge[xax] >= self.right_edge[xax]: return 0
  */
-  __pyx_v_xax = ((__pyx_v_self->direction + 1) % 3);
+  __pyx_v_xax = __Pyx_mod_long((__pyx_v_self->direction + 1), 3);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":435
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":434
  *         cdef int xax, yax
  *         xax = (self.direction + 1) % 3
  *         yax = (self.direction + 2) % 3             # <<<<<<<<<<<<<<
  *         if left_edge[xax] >= self.right_edge[xax]: return 0
  *         if right_edge[xax] <= self.left_edge[xax]: return 0
  */
-  __pyx_v_yax = ((__pyx_v_self->direction + 2) % 3);
+  __pyx_v_yax = __Pyx_mod_long((__pyx_v_self->direction + 2), 3);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":436
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":435
  *         xax = (self.direction + 1) % 3
  *         yax = (self.direction + 2) % 3
  *         if left_edge[xax] >= self.right_edge[xax]: return 0             # <<<<<<<<<<<<<<
@@ -13997,7 +14575,7 @@
   }
   __pyx_L3:;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":437
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":436
  *         yax = (self.direction + 2) % 3
  *         if left_edge[xax] >= self.right_edge[xax]: return 0
  *         if right_edge[xax] <= self.left_edge[xax]: return 0             # <<<<<<<<<<<<<<
@@ -14012,7 +14590,7 @@
   }
   __pyx_L4:;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":438
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":437
  *         if left_edge[xax] >= self.right_edge[xax]: return 0
  *         if right_edge[xax] <= self.left_edge[xax]: return 0
  *         if left_edge[yax] >= self.right_edge[yax]: return 0             # <<<<<<<<<<<<<<
@@ -14027,7 +14605,7 @@
   }
   __pyx_L5:;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":439
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":438
  *         if right_edge[xax] <= self.left_edge[xax]: return 0
  *         if left_edge[yax] >= self.right_edge[yax]: return 0
  *         if right_edge[yax] <= self.left_edge[yax]: return 0             # <<<<<<<<<<<<<<
@@ -14042,7 +14620,7 @@
   }
   __pyx_L6:;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":440
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":439
  *         if left_edge[yax] >= self.right_edge[yax]: return 0
  *         if right_edge[yax] <= self.left_edge[yax]: return 0
  *         return 1             # <<<<<<<<<<<<<<
@@ -14054,11 +14632,12 @@
 
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":448
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":447
  *     cdef public object RightEdge
  *     cdef public object subgrid_faces
  *     def __cinit__(self, np.ndarray[np.float64_t, ndim=1] left_edge,             # <<<<<<<<<<<<<<
@@ -14083,8 +14662,8 @@
   int __pyx_t_2;
   int __pyx_t_3;
   int __pyx_t_4;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_left_edge,&__pyx_kp_right_edge,&__pyx_kp_subgrid_faces,0};
-  __Pyx_SetupRefcountContext("__cinit__");
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left_edge,&__pyx_n_s__right_edge,&__pyx_n_s__subgrid_faces,0};
+  __Pyx_RefNannySetupContext("__cinit__");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[3] = {0,0,0};
@@ -14097,24 +14676,24 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_left_edge);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left_edge);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_right_edge);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right_edge);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_subgrid_faces);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__subgrid_faces);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__cinit__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_left_edge = ((PyArrayObject *)values[0]);
     __pyx_v_right_edge = ((PyArrayObject *)values[1]);
@@ -14128,29 +14707,33 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.ProtoPrism.__cinit__");
   return -1;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_INCREF(__pyx_v_subgrid_faces);
   __pyx_bstruct_left_edge.buf = NULL;
   __pyx_bstruct_right_edge.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left_edge), __pyx_ptype_5numpy_ndarray, 1, "left_edge", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right_edge), __pyx_ptype_5numpy_ndarray, 1, "right_edge", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left_edge, (PyObject*)__pyx_v_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_left_edge = __pyx_bstruct_left_edge.strides[0];
   __pyx_bshape_0_left_edge = __pyx_bstruct_left_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right_edge, (PyObject*)__pyx_v_right_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_right_edge = __pyx_bstruct_right_edge.strides[0];
   __pyx_bshape_0_right_edge = __pyx_bstruct_right_edge.shape[0];
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":452
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":451
  *                        subgrid_faces):
  *         cdef int i
  *         self.LeftEdge = left_edge             # <<<<<<<<<<<<<<
@@ -14163,7 +14746,7 @@
   __Pyx_DECREF(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->LeftEdge);
   ((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->LeftEdge = ((PyObject *)__pyx_v_left_edge);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":453
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":452
  *         cdef int i
  *         self.LeftEdge = left_edge
  *         self.RightEdge = right_edge             # <<<<<<<<<<<<<<
@@ -14176,7 +14759,7 @@
   __Pyx_DECREF(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->RightEdge);
   ((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->RightEdge = ((PyObject *)__pyx_v_right_edge);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":454
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":453
  *         self.LeftEdge = left_edge
  *         self.RightEdge = right_edge
  *         for i in range(3):             # <<<<<<<<<<<<<<
@@ -14186,7 +14769,7 @@
   for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) {
     __pyx_v_i = __pyx_t_1;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":455
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":454
  *         self.RightEdge = right_edge
  *         for i in range(3):
  *             self.left_edge[i] = left_edge[i]             # <<<<<<<<<<<<<<
@@ -14201,11 +14784,11 @@
     } else if (unlikely(__pyx_t_2 >= __pyx_bshape_0_left_edge)) __pyx_t_3 = 0;
     if (unlikely(__pyx_t_3 != -1)) {
       __Pyx_RaiseBufferIndexError(__pyx_t_3);
-      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     (((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->left_edge[__pyx_v_i]) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left_edge.buf, __pyx_t_2, __pyx_bstride_0_left_edge));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":456
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":455
  *         for i in range(3):
  *             self.left_edge[i] = left_edge[i]
  *             self.right_edge[i] = right_edge[i]             # <<<<<<<<<<<<<<
@@ -14220,12 +14803,12 @@
     } else if (unlikely(__pyx_t_3 >= __pyx_bshape_0_right_edge)) __pyx_t_4 = 0;
     if (unlikely(__pyx_t_4 != -1)) {
       __Pyx_RaiseBufferIndexError(__pyx_t_4);
-      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     (((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->right_edge[__pyx_v_i]) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right_edge.buf, __pyx_t_3, __pyx_bstride_0_right_edge));
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":457
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":456
  *             self.left_edge[i] = left_edge[i]
  *             self.right_edge[i] = right_edge[i]
  *         self.subgrid_faces = subgrid_faces             # <<<<<<<<<<<<<<
@@ -14253,11 +14836,15 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left_edge);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right_edge);
   __pyx_L2:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF((PyObject *)__pyx_v_left_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_right_edge);
+  __Pyx_DECREF(__pyx_v_subgrid_faces);
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":461
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":460
  *     @cython.boundscheck(False)
  *     @cython.wraparound(False)
  *     def sweep(self, int direction = 0, int stack = 0):             # <<<<<<<<<<<<<<
@@ -14277,9 +14864,6 @@
   PyObject *__pyx_v_LC;
   PyObject *__pyx_v_RC;
   PyObject *__pyx_r = NULL;
-  PyObject *__pyx_1 = 0;
-  PyObject *__pyx_2 = 0;
-  PyObject *__pyx_3 = 0;
   int __pyx_t_1;
   Py_ssize_t __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
@@ -14288,8 +14872,8 @@
   PyObject *__pyx_t_6 = NULL;
   PyObject *__pyx_t_7 = NULL;
   PyObject *__pyx_t_8 = NULL;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_direction,&__pyx_kp_stack,0};
-  __Pyx_SetupRefcountContext("sweep");
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__direction,&__pyx_n_s__stack,0};
+  __Pyx_RefNannySetupContext("sweep");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[2] = {0,0};
@@ -14302,52 +14886,53 @@
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
       if (kw_args > 1) {
-        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_direction);
+        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__direction);
         if (unlikely(value)) { values[0] = value; kw_args--; }
       }
       case  1:
       if (kw_args > 1) {
-        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_stack);
+        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__stack);
         if (unlikely(value)) { values[1] = value; kw_args--; }
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "sweep") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "sweep") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     if (values[0]) {
-      __pyx_v_direction = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_direction = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     } else {
-      __pyx_v_direction = 0;
+      __pyx_v_direction = ((int)0);
     }
     if (values[1]) {
-      __pyx_v_stack = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_stack == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_stack = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_stack == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     } else {
-      __pyx_v_stack = 0;
+      __pyx_v_stack = ((int)0);
     }
   } else {
-    __pyx_v_direction = 0;
-    __pyx_v_stack = 0;
+    __pyx_v_direction = ((int)0);
+    __pyx_v_stack = ((int)0);
     switch (PyTuple_GET_SIZE(__pyx_args)) {
-      case  2: __pyx_v_stack = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_stack == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      case  1: __pyx_v_direction = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      case  2: __pyx_v_stack = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_stack == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      case  1: __pyx_v_direction = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       case  0: break;
       default: goto __pyx_L5_argtuple_error;
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sweep", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("sweep", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.ProtoPrism.sweep");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
   __pyx_v_face = ((struct __pyx_obj_2yt_9amr_utils_GridFace *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_left = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_right = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_LC = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_RC = Py_None; __Pyx_INCREF(Py_None);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":465
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":464
  *         cdef GridFace face
  *         cdef np.float64_t proto_split[3]
  *         for i in range(3): proto_split[i] = self.right_edge[i]             # <<<<<<<<<<<<<<
@@ -14359,43 +14944,43 @@
     (__pyx_v_proto_split[__pyx_v_i]) = (((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->right_edge[__pyx_v_i]);
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":466
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":465
  *         cdef np.float64_t proto_split[3]
  *         for i in range(3): proto_split[i] = self.right_edge[i]
  *         for face in self.subgrid_faces[direction]:             # <<<<<<<<<<<<<<
  *             proto_split[direction] = face.coord
  *             if proto_split[direction] <= self.left_edge[direction]:
  */
-  __pyx_1 = __Pyx_GetItemInt(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->subgrid_faces, __pyx_v_direction, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (PyList_CheckExact(__pyx_1) || PyTuple_CheckExact(__pyx_1)) {
-    __pyx_t_2 = 0; __pyx_t_3 = __pyx_1; __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_3 = __Pyx_GetItemInt(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->subgrid_faces, __pyx_v_direction, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
+    __pyx_t_2 = 0; __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4);
   } else {
-    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
   }
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   for (;;) {
-    if (likely(PyList_CheckExact(__pyx_t_3))) {
-      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
-      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++;
-    } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
-      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
-      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++;
+    if (likely(PyList_CheckExact(__pyx_t_4))) {
+      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;
+      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
+    } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
+      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
+      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
     } else {
-      __pyx_t_4 = PyIter_Next(__pyx_t_3);
-      if (!__pyx_t_4) {
-        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyIter_Next(__pyx_t_4);
+      if (!__pyx_t_3) {
+        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         break;
       }
-      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GOTREF(__pyx_t_3);
     }
-    if (!(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_2yt_9amr_utils_GridFace))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_2yt_9amr_utils_GridFace))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(((PyObject *)__pyx_v_face));
-    __pyx_v_face = ((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_t_4);
-    __pyx_t_4 = 0;
+    __pyx_v_face = ((struct __pyx_obj_2yt_9amr_utils_GridFace *)__pyx_t_3);
+    __pyx_t_3 = 0;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":467
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":466
  *         for i in range(3): proto_split[i] = self.right_edge[i]
  *         for face in self.subgrid_faces[direction]:
  *             proto_split[direction] = face.coord             # <<<<<<<<<<<<<<
@@ -14404,7 +14989,7 @@
  */
     (__pyx_v_proto_split[__pyx_v_direction]) = __pyx_v_face->coord;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":468
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":467
  *         for face in self.subgrid_faces[direction]:
  *             proto_split[direction] = face.coord
  *             if proto_split[direction] <= self.left_edge[direction]:             # <<<<<<<<<<<<<<
@@ -14414,7 +14999,7 @@
     __pyx_t_5 = ((__pyx_v_proto_split[__pyx_v_direction]) <= (((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->left_edge[__pyx_v_direction]));
     if (__pyx_t_5) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":469
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":468
  *             proto_split[direction] = face.coord
  *             if proto_split[direction] <= self.left_edge[direction]:
  *                 continue             # <<<<<<<<<<<<<<
@@ -14426,7 +15011,7 @@
     }
     __pyx_L10:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":470
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":469
  *             if proto_split[direction] <= self.left_edge[direction]:
  *                 continue
  *             if proto_split[direction] == self.right_edge[direction]:             # <<<<<<<<<<<<<<
@@ -14436,7 +15021,7 @@
     __pyx_t_5 = ((__pyx_v_proto_split[__pyx_v_direction]) == (((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->right_edge[__pyx_v_direction]));
     if (__pyx_t_5) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":471
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":470
  *                 continue
  *             if proto_split[direction] == self.right_edge[direction]:
  *                 if stack == 2: return [self]             # <<<<<<<<<<<<<<
@@ -14446,20 +15031,20 @@
       __pyx_t_5 = (__pyx_v_stack == 2);
       if (__pyx_t_5) {
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+        __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(((PyObject *)__pyx_t_3));
         __Pyx_INCREF(__pyx_v_self);
-        PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_self);
+        PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
         __Pyx_GIVEREF(__pyx_v_self);
-        __pyx_r = ((PyObject *)__pyx_t_4);
-        __pyx_t_4 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = ((PyObject *)__pyx_t_3);
+        __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         goto __pyx_L0;
         goto __pyx_L12;
       }
       __pyx_L12:;
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":472
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":471
  *             if proto_split[direction] == self.right_edge[direction]:
  *                 if stack == 2: return [self]
  *                 return self.sweep((direction + 1) % 3, stack + 1)             # <<<<<<<<<<<<<<
@@ -14467,33 +15052,33 @@
  *                 left, right = self.split(proto_split, direction)
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_sweep); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = PyInt_FromLong(((__pyx_v_direction + 1) % 3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__sweep); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_6 = PyInt_FromLong(__Pyx_mod_long((__pyx_v_direction + 1), 3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_7 = PyInt_FromLong((__pyx_v_stack + 1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyInt_FromLong((__pyx_v_stack + 1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
+      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_8);
       PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_7);
       __pyx_t_6 = 0;
       __pyx_t_7 = 0;
-      __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __pyx_r = __pyx_t_7;
       __pyx_t_7 = 0;
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       goto __pyx_L0;
       goto __pyx_L11;
     }
     __pyx_L11:;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":473
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":472
  *                 if stack == 2: return [self]
  *                 return self.sweep((direction + 1) % 3, stack + 1)
  *             if face.proj_overlap(self.left_edge, proto_split) == 1:             # <<<<<<<<<<<<<<
@@ -14503,93 +15088,93 @@
     __pyx_t_5 = (((struct __pyx_vtabstruct_2yt_9amr_utils_GridFace *)__pyx_v_face->__pyx_vtab)->proj_overlap(__pyx_v_face, ((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->left_edge, __pyx_v_proto_split) == 1);
     if (__pyx_t_5) {
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":474
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":473
  *                 return self.sweep((direction + 1) % 3, stack + 1)
  *             if face.proj_overlap(self.left_edge, proto_split) == 1:
  *                 left, right = self.split(proto_split, direction)             # <<<<<<<<<<<<<<
  *                 LC = left.sweep((direction + 1) % 3)
  *                 RC = right.sweep(direction)
  */
-      __pyx_t_7 = ((struct __pyx_vtabstruct_2yt_9amr_utils_ProtoPrism *)((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->__pyx_vtab)->split(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self), __pyx_v_proto_split, __pyx_v_direction); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = ((struct __pyx_vtabstruct_2yt_9amr_utils_ProtoPrism *)((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->__pyx_vtab)->split(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self), __pyx_v_proto_split, __pyx_v_direction); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       if (PyTuple_CheckExact(__pyx_t_7) && likely(PyTuple_GET_SIZE(__pyx_t_7) == 2)) {
         PyObject* tuple = __pyx_t_7;
-        __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
-        __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
+        __pyx_t_8 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_8);
+        __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_v_left);
-        __pyx_v_left = __pyx_2;
-        __pyx_2 = 0;
+        __pyx_v_left = __pyx_t_8;
+        __pyx_t_8 = 0;
         __Pyx_DECREF(__pyx_v_right);
-        __pyx_v_right = __pyx_3;
-        __pyx_3 = 0;
+        __pyx_v_right = __pyx_t_3;
+        __pyx_t_3 = 0;
       } else {
-        __pyx_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_1);
+        __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_2);
-        __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_3);
-        if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+        __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_6, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_8);
+        __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_6, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_3);
+        if (__Pyx_EndUnpack(__pyx_t_6) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_DECREF(__pyx_v_left);
-        __pyx_v_left = __pyx_2;
-        __pyx_2 = 0;
+        __pyx_v_left = __pyx_t_8;
+        __pyx_t_8 = 0;
         __Pyx_DECREF(__pyx_v_right);
-        __pyx_v_right = __pyx_3;
-        __pyx_3 = 0;
+        __pyx_v_right = __pyx_t_3;
+        __pyx_t_3 = 0;
       }
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":475
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":474
  *             if face.proj_overlap(self.left_edge, proto_split) == 1:
  *                 left, right = self.split(proto_split, direction)
  *                 LC = left.sweep((direction + 1) % 3)             # <<<<<<<<<<<<<<
  *                 RC = right.sweep(direction)
  *                 return LC + RC
  */
-      __pyx_t_7 = PyObject_GetAttr(__pyx_v_left, __pyx_kp_sweep); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyObject_GetAttr(__pyx_v_left, __pyx_n_s__sweep); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyInt_FromLong(((__pyx_v_direction + 1) % 3)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8);
-      __Pyx_GIVEREF(__pyx_t_8);
-      __pyx_t_8 = 0;
-      __pyx_t_8 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(__Pyx_mod_long((__pyx_v_direction + 1), 3)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_3);
+      __pyx_t_3 = 0;
+      __pyx_t_3 = PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_v_LC);
-      __pyx_v_LC = __pyx_t_8;
-      __pyx_t_8 = 0;
+      __pyx_v_LC = __pyx_t_3;
+      __pyx_t_3 = 0;
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":476
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":475
  *                 left, right = self.split(proto_split, direction)
  *                 LC = left.sweep((direction + 1) % 3)
  *                 RC = right.sweep(direction)             # <<<<<<<<<<<<<<
  *                 return LC + RC
  *         raise RuntimeError
  */
-      __pyx_t_8 = PyObject_GetAttr(__pyx_v_right, __pyx_kp_sweep); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_GetAttr(__pyx_v_right, __pyx_n_s__sweep); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_8 = PyInt_FromLong(__pyx_v_direction); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_4 = PyInt_FromLong(__pyx_v_direction); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_7));
-      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_4);
-      __pyx_t_4 = 0;
-      __pyx_t_4 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
+      __Pyx_GIVEREF(__pyx_t_8);
+      __pyx_t_8 = 0;
+      __pyx_t_8 = PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_v_RC);
-      __pyx_v_RC = __pyx_t_4;
-      __pyx_t_4 = 0;
+      __pyx_v_RC = __pyx_t_8;
+      __pyx_t_8 = 0;
 
-      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":477
+      /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":476
  *                 LC = left.sweep((direction + 1) % 3)
  *                 RC = right.sweep(direction)
  *                 return LC + RC             # <<<<<<<<<<<<<<
@@ -14597,20 +15182,20 @@
  * 
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_4 = PyNumber_Add(__pyx_v_LC, __pyx_v_RC); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_r = __pyx_t_4;
-      __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_8 = PyNumber_Add(__pyx_v_LC, __pyx_v_RC); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_8);
+      __pyx_r = __pyx_t_8;
+      __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       goto __pyx_L0;
       goto __pyx_L13;
     }
     __pyx_L13:;
     __pyx_L8_continue:;
   }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":478
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":477
  *                 RC = right.sweep(direction)
  *                 return LC + RC
  *         raise RuntimeError             # <<<<<<<<<<<<<<
@@ -14618,14 +15203,11 @@
  *     @cython.boundscheck(False)
  */
   __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0);
-  {__pyx_filename = __pyx_f[3]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[2]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
-  __Pyx_XDECREF(__pyx_2);
-  __Pyx_XDECREF(__pyx_3);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
   __Pyx_XDECREF(__pyx_t_6);
@@ -14639,12 +15221,13 @@
   __Pyx_DECREF(__pyx_v_right);
   __Pyx_DECREF(__pyx_v_LC);
   __Pyx_DECREF(__pyx_v_RC);
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":482
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":481
  *     @cython.boundscheck(False)
  *     @cython.wraparound(False)
  *     cdef object split(self, np.float64_t *sp, int direction):             # <<<<<<<<<<<<<<
@@ -14662,43 +15245,44 @@
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   int __pyx_t_3;
-  __Pyx_SetupRefcountContext("split");
+  __Pyx_RefNannySetupContext("split");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
   __pyx_v_left = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_right = Py_None; __Pyx_INCREF(Py_None);
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":484
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":483
  *     cdef object split(self, np.float64_t *sp, int direction):
  *         cdef int i
  *         cdef np.ndarray split_left = self.LeftEdge.copy()             # <<<<<<<<<<<<<<
  *         cdef np.ndarray split_right = self.RightEdge.copy()
  * 
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self->LeftEdge, __pyx_kp_copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self->LeftEdge, __pyx_n_s__copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_split_left = ((PyArrayObject *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":485
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":484
  *         cdef int i
  *         cdef np.ndarray split_left = self.LeftEdge.copy()
  *         cdef np.ndarray split_right = self.RightEdge.copy()             # <<<<<<<<<<<<<<
  * 
  *         for i in range(3): split_left[i] = self.right_edge[i]
  */
-  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self->RightEdge, __pyx_kp_copy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self->RightEdge, __pyx_n_s__copy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_split_right = ((PyArrayObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":487
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":486
  *         cdef np.ndarray split_right = self.RightEdge.copy()
  * 
  *         for i in range(3): split_left[i] = self.right_edge[i]             # <<<<<<<<<<<<<<
@@ -14707,33 +15291,33 @@
  */
   for (__pyx_t_3 = 0; __pyx_t_3 < 3; __pyx_t_3+=1) {
     __pyx_v_i = __pyx_t_3;
-    __pyx_t_1 = PyFloat_FromDouble((__pyx_v_self->right_edge[__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyFloat_FromDouble((__pyx_v_self->right_edge[__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    if (__Pyx_SetItemInt(((PyObject *)__pyx_v_split_left), __pyx_v_i, __pyx_t_1, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_SetItemInt(((PyObject *)__pyx_v_split_left), __pyx_v_i, __pyx_t_1, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":488
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":487
  * 
  *         for i in range(3): split_left[i] = self.right_edge[i]
  *         split_left[direction] = sp[direction]             # <<<<<<<<<<<<<<
  *         left = ProtoPrism(self.LeftEdge, split_left, self.subgrid_faces)
  * 
  */
-  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_sp[__pyx_v_direction])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_sp[__pyx_v_direction])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (__Pyx_SetItemInt(((PyObject *)__pyx_v_split_left), __pyx_v_direction, __pyx_t_1, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetItemInt(((PyObject *)__pyx_v_split_left), __pyx_v_direction, __pyx_t_1, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":489
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":488
  *         for i in range(3): split_left[i] = self.right_edge[i]
  *         split_left[direction] = sp[direction]
  *         left = ProtoPrism(self.LeftEdge, split_left, self.subgrid_faces)             # <<<<<<<<<<<<<<
  * 
  *         for i in range(3): split_right[i] = self.left_edge[i]
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->LeftEdge);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->LeftEdge);
   __Pyx_GIVEREF(__pyx_v_self->LeftEdge);
@@ -14743,14 +15327,14 @@
   __Pyx_INCREF(__pyx_v_self->subgrid_faces);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->subgrid_faces);
   __Pyx_GIVEREF(__pyx_v_self->subgrid_faces);
-  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_2yt_9amr_utils_ProtoPrism)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_2yt_9amr_utils_ProtoPrism)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_v_left);
   __pyx_v_left = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":491
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":490
  *         left = ProtoPrism(self.LeftEdge, split_left, self.subgrid_faces)
  * 
  *         for i in range(3): split_right[i] = self.left_edge[i]             # <<<<<<<<<<<<<<
@@ -14759,33 +15343,33 @@
  */
   for (__pyx_t_3 = 0; __pyx_t_3 < 3; __pyx_t_3+=1) {
     __pyx_v_i = __pyx_t_3;
-    __pyx_t_2 = PyFloat_FromDouble((__pyx_v_self->left_edge[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyFloat_FromDouble((__pyx_v_self->left_edge[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    if (__Pyx_SetItemInt(((PyObject *)__pyx_v_split_right), __pyx_v_i, __pyx_t_2, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_SetItemInt(((PyObject *)__pyx_v_split_right), __pyx_v_i, __pyx_t_2, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":492
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":491
  * 
  *         for i in range(3): split_right[i] = self.left_edge[i]
  *         split_right[direction] = sp[direction]             # <<<<<<<<<<<<<<
  *         right = ProtoPrism(split_right, self.RightEdge, self.subgrid_faces)
  * 
  */
-  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_sp[__pyx_v_direction])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_sp[__pyx_v_direction])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (__Pyx_SetItemInt(((PyObject *)__pyx_v_split_right), __pyx_v_direction, __pyx_t_2, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetItemInt(((PyObject *)__pyx_v_split_right), __pyx_v_direction, __pyx_t_2, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":493
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":492
  *         for i in range(3): split_right[i] = self.left_edge[i]
  *         split_right[direction] = sp[direction]
  *         right = ProtoPrism(split_right, self.RightEdge, self.subgrid_faces)             # <<<<<<<<<<<<<<
  * 
  *         return (left, right)
  */
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_split_right));
   PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_split_right));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_split_right));
@@ -14795,14 +15379,14 @@
   __Pyx_INCREF(__pyx_v_self->subgrid_faces);
   PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->subgrid_faces);
   __Pyx_GIVEREF(__pyx_v_self->subgrid_faces);
-  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_2yt_9amr_utils_ProtoPrism)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_2yt_9amr_utils_ProtoPrism)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_v_right);
   __pyx_v_right = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":495
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":494
  *         right = ProtoPrism(split_right, self.RightEdge, self.subgrid_faces)
  * 
  *         return (left, right)             # <<<<<<<<<<<<<<
@@ -14810,15 +15394,15 @@
  *     @cython.boundscheck(False)
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_left);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_left);
   __Pyx_GIVEREF(__pyx_v_left);
   __Pyx_INCREF(__pyx_v_right);
   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_right);
   __Pyx_GIVEREF(__pyx_v_right);
-  __pyx_r = ((PyObject *)__pyx_t_1);
+  __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
@@ -14834,12 +15418,13 @@
   __Pyx_XDECREF((PyObject *)__pyx_v_split_right);
   __Pyx_DECREF(__pyx_v_left);
   __Pyx_DECREF(__pyx_v_right);
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":499
+/* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":498
  *     @cython.boundscheck(False)
  *     @cython.wraparound(False)
  *     def get_brick(self, np.ndarray[np.float64_t, ndim=1] grid_left_edge,             # <<<<<<<<<<<<<<
@@ -14884,27 +15469,27 @@
   Py_ssize_t __pyx_bshape_1_data = 0;
   Py_ssize_t __pyx_bshape_2_data = 0;
   PyObject *__pyx_r = NULL;
-  PyObject *__pyx_1 = 0;
-  PyObject *__pyx_2 = 0;
-  PyObject *__pyx_3 = 0;
   int __pyx_t_1;
   int __pyx_t_2;
-  int __pyx_t_3;
+  __pyx_t_5numpy_float64_t __pyx_t_3;
   int __pyx_t_4;
-  int __pyx_t_5;
-  PyObject *__pyx_t_6 = NULL;
-  PyObject *__pyx_t_7 = NULL;
+  __pyx_t_5numpy_float64_t __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
   PyObject *__pyx_t_9 = NULL;
-  int __pyx_t_10;
-  PyArrayObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
   int __pyx_t_12;
   PyArrayObject *__pyx_t_13 = NULL;
-  PyObject *__pyx_t_14 = NULL;
+  int __pyx_t_14;
   PyObject *__pyx_t_15 = NULL;
-  PyObject *__pyx_t_16 = NULL;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_grid_left_edge,&__pyx_kp_grid_dds,&__pyx_kp_data,&__pyx_kp_child_mask,0};
-  __Pyx_SetupRefcountContext("get_brick");
+  PyArrayObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  PyObject *__pyx_t_19 = NULL;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__grid_left_edge,&__pyx_n_s__grid_dds,&__pyx_n_s__data,&__pyx_n_s__child_mask,0};
+  __Pyx_RefNannySetupContext("get_brick");
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
     PyObject* values[4] = {0,0,0,0};
@@ -14918,30 +15503,30 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_grid_left_edge);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grid_left_edge);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_grid_dds);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grid_dds);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("get_brick", 1, 4, 4, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("get_brick", 1, 4, 4, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_data);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__data);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("get_brick", 1, 4, 4, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("get_brick", 1, 4, 4, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_child_mask);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__child_mask);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("get_brick", 1, 4, 4, 3); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("get_brick", 1, 4, 4, 3); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "get_brick") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "get_brick") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_grid_left_edge = ((PyArrayObject *)values[0]);
     __pyx_v_grid_dds = ((PyArrayObject *)values[1]);
@@ -14957,11 +15542,16 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("get_brick", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("get_brick", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.ProtoPrism.get_brick");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_INCREF((PyObject *)__pyx_v_grid_left_edge);
+  __Pyx_INCREF((PyObject *)__pyx_v_grid_dds);
+  __Pyx_INCREF((PyObject *)__pyx_v_data);
+  __Pyx_INCREF(__pyx_v_child_mask);
   __pyx_v_PG = ((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_new_data = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_bstruct_dims.buf = NULL;
@@ -14969,29 +15559,29 @@
   __pyx_bstruct_grid_left_edge.buf = NULL;
   __pyx_bstruct_grid_dds.buf = NULL;
   __pyx_bstruct_data.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_left_edge), __pyx_ptype_5numpy_ndarray, 1, "grid_left_edge", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_dds), __pyx_ptype_5numpy_ndarray, 1, "grid_dds", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_left_edge), __pyx_ptype_5numpy_ndarray, 1, "grid_left_edge", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grid_dds), __pyx_ptype_5numpy_ndarray, 1, "grid_dds", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_left_edge, (PyObject*)__pyx_v_grid_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_left_edge, (PyObject*)__pyx_v_grid_left_edge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_grid_left_edge = __pyx_bstruct_grid_left_edge.strides[0];
   __pyx_bshape_0_grid_left_edge = __pyx_bstruct_grid_left_edge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_dds, (PyObject*)__pyx_v_grid_dds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_grid_dds, (PyObject*)__pyx_v_grid_dds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_grid_dds = __pyx_bstruct_grid_dds.strides[0];
   __pyx_bshape_0_grid_dds = __pyx_bstruct_grid_dds.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_data, (PyObject*)__pyx_v_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_data = __pyx_bstruct_data.strides[0]; __pyx_bstride_1_data = __pyx_bstruct_data.strides[1]; __pyx_bstride_2_data = __pyx_bstruct_data.strides[2];
   __pyx_bshape_0_data = __pyx_bstruct_data.shape[0]; __pyx_bshape_1_data = __pyx_bstruct_data.shape[1]; __pyx_bshape_2_data = __pyx_bstruct_data.shape[2];
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":507
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":506
  *         cdef PartitionedGrid PG
  *         cdef int li[3], ri[3], idims[3], i
  *         for i in range(3):             # <<<<<<<<<<<<<<
@@ -15001,7 +15591,7 @@
   for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) {
     __pyx_v_i = __pyx_t_1;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":508
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":507
  *         cdef int li[3], ri[3], idims[3], i
  *         for i in range(3):
  *             li[i] = lrint((self.left_edge[i] - grid_left_edge[i])/grid_dds[i])             # <<<<<<<<<<<<<<
@@ -15009,21 +15599,33 @@
  *             idims[i] = ri[i] - li[i]
  */
     __pyx_t_2 = __pyx_v_i;
-    __pyx_t_3 = __pyx_v_i;
-    (__pyx_v_li[__pyx_v_i]) = lrint((((((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->left_edge[__pyx_v_i]) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_left_edge.buf, __pyx_t_2, __pyx_bstride_0_grid_left_edge))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dds.buf, __pyx_t_3, __pyx_bstride_0_grid_dds))));
+    __pyx_t_3 = ((((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->left_edge[__pyx_v_i]) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_left_edge.buf, __pyx_t_2, __pyx_bstride_0_grid_left_edge)));
+    __pyx_t_4 = __pyx_v_i;
+    __pyx_t_5 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dds.buf, __pyx_t_4, __pyx_bstride_0_grid_dds));
+    if (unlikely(__pyx_t_5 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    (__pyx_v_li[__pyx_v_i]) = lrint((__pyx_t_3 / __pyx_t_5));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":509
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":508
  *         for i in range(3):
  *             li[i] = lrint((self.left_edge[i] - grid_left_edge[i])/grid_dds[i])
  *             ri[i] = lrint((self.right_edge[i] - grid_left_edge[i])/grid_dds[i])             # <<<<<<<<<<<<<<
  *             idims[i] = ri[i] - li[i]
  *         if child_mask[li[0], li[1], li[2]] == 0: return []
  */
-    __pyx_t_4 = __pyx_v_i;
-    __pyx_t_5 = __pyx_v_i;
-    (__pyx_v_ri[__pyx_v_i]) = lrint((((((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->right_edge[__pyx_v_i]) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_left_edge.buf, __pyx_t_4, __pyx_bstride_0_grid_left_edge))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dds.buf, __pyx_t_5, __pyx_bstride_0_grid_dds))));
+    __pyx_t_6 = __pyx_v_i;
+    __pyx_t_5 = ((((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->right_edge[__pyx_v_i]) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_left_edge.buf, __pyx_t_6, __pyx_bstride_0_grid_left_edge)));
+    __pyx_t_7 = __pyx_v_i;
+    __pyx_t_3 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_grid_dds.buf, __pyx_t_7, __pyx_bstride_0_grid_dds));
+    if (unlikely(__pyx_t_3 == 0)) {
+      PyErr_Format(PyExc_ZeroDivisionError, "float division");
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    (__pyx_v_ri[__pyx_v_i]) = lrint((__pyx_t_5 / __pyx_t_3));
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":510
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":509
  *             li[i] = lrint((self.left_edge[i] - grid_left_edge[i])/grid_dds[i])
  *             ri[i] = lrint((self.right_edge[i] - grid_left_edge[i])/grid_dds[i])
  *             idims[i] = ri[i] - li[i]             # <<<<<<<<<<<<<<
@@ -15033,90 +15635,90 @@
     (__pyx_v_idims[__pyx_v_i]) = ((__pyx_v_ri[__pyx_v_i]) - (__pyx_v_li[__pyx_v_i]));
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":511
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":510
  *             ri[i] = lrint((self.right_edge[i] - grid_left_edge[i])/grid_dds[i])
  *             idims[i] = ri[i] - li[i]
  *         if child_mask[li[0], li[1], li[2]] == 0: return []             # <<<<<<<<<<<<<<
  *         cdef np.ndarray[np.int64_t, ndim=1] dims = np.empty(3, dtype='int64')
  *         for i in range(3):
  */
-  __pyx_t_6 = PyInt_FromLong((__pyx_v_li[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = PyInt_FromLong((__pyx_v_li[1])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = PyInt_FromLong((__pyx_v_li[2])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyInt_FromLong((__pyx_v_li[0])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
-  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6);
-  __Pyx_GIVEREF(__pyx_t_6);
-  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_7);
-  __Pyx_GIVEREF(__pyx_t_7);
-  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8);
+  __pyx_t_9 = PyInt_FromLong((__pyx_v_li[1])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_10 = PyInt_FromLong((__pyx_v_li[2])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_10);
+  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_11);
+  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
   __Pyx_GIVEREF(__pyx_t_8);
-  __pyx_t_6 = 0;
-  __pyx_t_7 = 0;
+  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_9);
+  __Pyx_GIVEREF(__pyx_t_9);
+  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_10);
+  __Pyx_GIVEREF(__pyx_t_10);
   __pyx_t_8 = 0;
-  __pyx_1 = PyObject_GetItem(__pyx_v_child_mask, ((PyObject *)__pyx_t_9)); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
-  __pyx_t_9 = PyObject_RichCompare(__pyx_1, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_9);
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  if (__pyx_t_10) {
+  __pyx_t_9 = 0;
+  __pyx_t_10 = 0;
+  __pyx_t_10 = PyObject_GetItem(__pyx_v_child_mask, __pyx_t_11); if (!__pyx_t_10) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_10);
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  __pyx_t_11 = PyObject_RichCompare(__pyx_t_10, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_11);
+  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  if (__pyx_t_12) {
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(((PyObject *)__pyx_t_9));
-    __pyx_r = ((PyObject *)__pyx_t_9);
-    __pyx_t_9 = 0;
+    __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_11));
+    __pyx_r = ((PyObject *)__pyx_t_11);
+    __pyx_t_11 = 0;
     goto __pyx_L0;
     goto __pyx_L8;
   }
   __pyx_L8:;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":512
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":511
  *             idims[i] = ri[i] - li[i]
  *         if child_mask[li[0], li[1], li[2]] == 0: return []
  *         cdef np.ndarray[np.int64_t, ndim=1] dims = np.empty(3, dtype='int64')             # <<<<<<<<<<<<<<
  *         for i in range(3):
  *             dims[i] = idims[i]
  */
-  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_np); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __pyx_t_9 = PyObject_GetAttr(__pyx_1, __pyx_kp_empty); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_9);
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
+  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_11);
+  __pyx_t_10 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_10);
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_11);
   __Pyx_INCREF(__pyx_int_3);
-  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_int_3);
+  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_int_3);
   __Pyx_GIVEREF(__pyx_int_3);
-  __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_1));
-  if (PyDict_SetItem(__pyx_1, __pyx_kp_dtype, __pyx_kp_37) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = PyEval_CallObjectWithKeywords(__pyx_t_9, ((PyObject *)__pyx_t_8), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
-  __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
+  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
+  if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__int64)) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyEval_CallObjectWithKeywords(__pyx_t_10, __pyx_t_11, ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
+  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dims, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_dims, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
       __pyx_v_dims = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_dims.buf = NULL;
-      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     } else {__pyx_bstride_0_dims = __pyx_bstruct_dims.strides[0];
       __pyx_bshape_0_dims = __pyx_bstruct_dims.shape[0];
     }
   }
-  __pyx_t_11 = 0;
-  __pyx_v_dims = ((PyArrayObject *)__pyx_t_7);
-  __pyx_t_7 = 0;
+  __pyx_t_13 = 0;
+  __pyx_v_dims = ((PyArrayObject *)__pyx_t_8);
+  __pyx_t_8 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":513
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":512
  *         if child_mask[li[0], li[1], li[2]] == 0: return []
  *         cdef np.ndarray[np.int64_t, ndim=1] dims = np.empty(3, dtype='int64')
  *         for i in range(3):             # <<<<<<<<<<<<<<
@@ -15126,145 +15728,142 @@
   for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) {
     __pyx_v_i = __pyx_t_1;
 
-    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":514
+    /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":513
  *         cdef np.ndarray[np.int64_t, ndim=1] dims = np.empty(3, dtype='int64')
  *         for i in range(3):
  *             dims[i] = idims[i]             # <<<<<<<<<<<<<<
  *         cdef np.ndarray[np.float64_t, ndim=3] new_data
  *         new_data = data[li[0]:ri[0]+1,li[1]:ri[1]+1,li[2]:ri[2]+1].copy()
  */
-    __pyx_t_12 = __pyx_v_i;
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_dims.buf, __pyx_t_12, __pyx_bstride_0_dims) = (__pyx_v_idims[__pyx_v_i]);
+    __pyx_t_14 = __pyx_v_i;
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_dims.buf, __pyx_t_14, __pyx_bstride_0_dims) = (__pyx_v_idims[__pyx_v_i]);
   }
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":516
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":515
  *             dims[i] = idims[i]
  *         cdef np.ndarray[np.float64_t, ndim=3] new_data
  *         new_data = data[li[0]:ri[0]+1,li[1]:ri[1]+1,li[2]:ri[2]+1].copy()             # <<<<<<<<<<<<<<
  *         PG = PartitionedGrid(new_data, self.LeftEdge, self.RightEdge, dims)
  *         return [PG]
  */
-  __pyx_t_7 = PyInt_FromLong((__pyx_v_li[0])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = PyInt_FromLong(((__pyx_v_ri[0]) + 1)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyInt_FromLong((__pyx_v_li[0])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_1 = PySlice_New(__pyx_t_7, __pyx_t_8, Py_None); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  __pyx_t_8 = PyInt_FromLong((__pyx_v_li[1])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_7 = PyInt_FromLong(((__pyx_v_ri[1]) + 1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_2 = PySlice_New(__pyx_t_8, __pyx_t_7, Py_None); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_2);
+  __pyx_t_9 = PyInt_FromLong(((__pyx_v_ri[0]) + 1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_11 = PySlice_New(__pyx_t_8, __pyx_t_9, Py_None); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_11);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = PyInt_FromLong((__pyx_v_li[2])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = PyInt_FromLong(((__pyx_v_ri[2]) + 1)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong((__pyx_v_li[1])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_8 = PyInt_FromLong(((__pyx_v_ri[1]) + 1)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_3 = PySlice_New(__pyx_t_7, __pyx_t_8, Py_None); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_3);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_10 = PySlice_New(__pyx_t_9, __pyx_t_8, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_10);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
-  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_1);
-  __Pyx_GIVEREF(__pyx_1);
-  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_2);
-  __Pyx_GIVEREF(__pyx_2);
-  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_3);
-  __Pyx_GIVEREF(__pyx_3);
-  __pyx_1 = 0;
-  __pyx_2 = 0;
-  __pyx_3 = 0;
-  __pyx_1 = PyObject_GetItem(((PyObject *)__pyx_v_data), ((PyObject *)__pyx_t_8)); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
-  __pyx_t_8 = PyObject_GetAttr(__pyx_1, __pyx_kp_copy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyInt_FromLong((__pyx_v_li[2])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
-  __pyx_t_7 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_9 = PyInt_FromLong(((__pyx_v_ri[2]) + 1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_15 = PySlice_New(__pyx_t_8, __pyx_t_9, Py_None); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_15);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_13 = ((PyArrayObject *)__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_11);
+  __Pyx_GIVEREF(__pyx_t_11);
+  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_10);
+  __Pyx_GIVEREF(__pyx_t_10);
+  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_15);
+  __Pyx_GIVEREF(__pyx_t_15);
+  __pyx_t_11 = 0;
+  __pyx_t_10 = 0;
+  __pyx_t_15 = 0;
+  __pyx_t_15 = PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_t_9); if (!__pyx_t_15) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_15);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyObject_GetAttr(__pyx_t_15, __pyx_n_s__copy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+  __pyx_t_15 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_15);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  if (!(likely(((__pyx_t_15) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_15, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_16 = ((PyArrayObject *)__pyx_t_15);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new_data);
-    __pyx_t_1 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_new_data, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack);
+    __pyx_t_1 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_new_data, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack);
     if (unlikely(__pyx_t_1 < 0)) {
-      PyErr_Fetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
+      PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
       if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new_data, (PyObject*)__pyx_v_new_data, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_14); Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16);
+        Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
         __Pyx_RaiseBufferFallbackError();
       } else {
-        PyErr_Restore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
+        PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
       }
     }
     __pyx_bstride_0_new_data = __pyx_bstruct_new_data.strides[0]; __pyx_bstride_1_new_data = __pyx_bstruct_new_data.strides[1]; __pyx_bstride_2_new_data = __pyx_bstruct_new_data.strides[2];
     __pyx_bshape_0_new_data = __pyx_bstruct_new_data.shape[0]; __pyx_bshape_1_new_data = __pyx_bstruct_new_data.shape[1]; __pyx_bshape_2_new_data = __pyx_bstruct_new_data.shape[2];
-    if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_13 = 0;
+  __pyx_t_16 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_new_data));
-  __pyx_v_new_data = ((PyArrayObject *)__pyx_t_7);
-  __pyx_t_7 = 0;
+  __pyx_v_new_data = ((PyArrayObject *)__pyx_t_15);
+  __pyx_t_15 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":517
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":516
  *         cdef np.ndarray[np.float64_t, ndim=3] new_data
  *         new_data = data[li[0]:ri[0]+1,li[1]:ri[1]+1,li[2]:ri[2]+1].copy()
  *         PG = PartitionedGrid(new_data, self.LeftEdge, self.RightEdge, dims)             # <<<<<<<<<<<<<<
  *         return [PG]
  */
-  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
+  __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_15);
   __Pyx_INCREF(((PyObject *)__pyx_v_new_data));
-  PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_new_data));
+  PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_new_data));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_new_data));
   __Pyx_INCREF(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->LeftEdge);
-  PyTuple_SET_ITEM(__pyx_t_7, 1, ((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->LeftEdge);
+  PyTuple_SET_ITEM(__pyx_t_15, 1, ((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->LeftEdge);
   __Pyx_GIVEREF(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->LeftEdge);
   __Pyx_INCREF(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->RightEdge);
-  PyTuple_SET_ITEM(__pyx_t_7, 2, ((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->RightEdge);
+  PyTuple_SET_ITEM(__pyx_t_15, 2, ((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->RightEdge);
   __Pyx_GIVEREF(((struct __pyx_obj_2yt_9amr_utils_ProtoPrism *)__pyx_v_self)->RightEdge);
   __Pyx_INCREF(((PyObject *)__pyx_v_dims));
-  PyTuple_SET_ITEM(__pyx_t_7, 3, ((PyObject *)__pyx_v_dims));
+  PyTuple_SET_ITEM(__pyx_t_15, 3, ((PyObject *)__pyx_v_dims));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_dims));
-  __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_2yt_9amr_utils_PartitionedGrid)), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
-  if (!(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_2yt_9amr_utils_PartitionedGrid))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_2yt_9amr_utils_PartitionedGrid)), __pyx_t_15, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_PG));
-  __pyx_v_PG = ((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_t_8);
-  __pyx_t_8 = 0;
+  __pyx_v_PG = ((struct __pyx_obj_2yt_9amr_utils_PartitionedGrid *)__pyx_t_9);
+  __pyx_t_9 = 0;
 
-  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":518
+  /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":517
  *         new_data = data[li[0]:ri[0]+1,li[1]:ri[1]+1,li[2]:ri[2]+1].copy()
  *         PG = PartitionedGrid(new_data, self.LeftEdge, self.RightEdge, dims)
  *         return [PG]             # <<<<<<<<<<<<<<
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
+  __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
   __Pyx_INCREF(((PyObject *)__pyx_v_PG));
-  PyList_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_v_PG));
+  PyList_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_v_PG));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_PG));
-  __pyx_r = ((PyObject *)__pyx_t_8);
-  __pyx_t_8 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_9);
+  __pyx_t_9 = 0;
   goto __pyx_L0;
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
-  __Pyx_XDECREF(__pyx_2);
-  __Pyx_XDECREF(__pyx_3);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
   __Pyx_XDECREF(__pyx_t_8);
   __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_15);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new_data);
@@ -15286,8 +15885,13 @@
   __Pyx_DECREF((PyObject *)__pyx_v_PG);
   __Pyx_XDECREF((PyObject *)__pyx_v_dims);
   __Pyx_DECREF((PyObject *)__pyx_v_new_data);
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_DECREF((PyObject *)__pyx_v_grid_left_edge);
+  __Pyx_DECREF((PyObject *)__pyx_v_grid_dds);
+  __Pyx_DECREF((PyObject *)__pyx_v_data);
+  __Pyx_DECREF(__pyx_v_child_mask);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -15362,44 +15966,45 @@
   long __pyx_t_4;
   long __pyx_t_5;
   long __pyx_t_6;
-  int __pyx_t_7;
+  __pyx_t_5numpy_int64_t __pyx_t_7;
   int __pyx_t_8;
   int __pyx_t_9;
   int __pyx_t_10;
   int __pyx_t_11;
-  long __pyx_t_12;
+  int __pyx_t_12;
   long __pyx_t_13;
   long __pyx_t_14;
-  int __pyx_t_15;
+  long __pyx_t_15;
   int __pyx_t_16;
-  long __pyx_t_17;
+  int __pyx_t_17;
   long __pyx_t_18;
-  int __pyx_t_19;
-  long __pyx_t_20;
-  int __pyx_t_21;
-  long __pyx_t_22;
-  int __pyx_t_23;
+  long __pyx_t_19;
+  int __pyx_t_20;
+  long __pyx_t_21;
+  int __pyx_t_22;
+  long __pyx_t_23;
   int __pyx_t_24;
   int __pyx_t_25;
-  long __pyx_t_26;
-  int __pyx_t_27;
-  long __pyx_t_28;
+  int __pyx_t_26;
+  long __pyx_t_27;
+  int __pyx_t_28;
   long __pyx_t_29;
-  int __pyx_t_30;
+  long __pyx_t_30;
   int __pyx_t_31;
   int __pyx_t_32;
-  long __pyx_t_33;
-  int __pyx_t_34;
+  int __pyx_t_33;
+  long __pyx_t_34;
   int __pyx_t_35;
-  long __pyx_t_36;
-  int __pyx_t_37;
+  int __pyx_t_36;
+  long __pyx_t_37;
   int __pyx_t_38;
   int __pyx_t_39;
   int __pyx_t_40;
   int __pyx_t_41;
   int __pyx_t_42;
-  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_posx,&__pyx_kp_posy,&__pyx_kp_posz,&__pyx_kp_mass,&__pyx_kp_npositions,&__pyx_kp_field,&__pyx_kp_leftEdge,&__pyx_kp_gridDimension,&__pyx_kp_cellSize,0};
-  __Pyx_SetupRefcountContext("CICDeposit_3");
+  int __pyx_t_43;
+  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__posx,&__pyx_n_s__posy,&__pyx_n_s__posz,&__pyx_n_s__mass,&__pyx_n_s__npositions,&__pyx_n_s__field,&__pyx_n_s__leftEdge,&__pyx_n_s__gridDimension,&__pyx_n_s__cellSize,0};
+  __Pyx_RefNannySetupContext("CICDeposit_3");
   __pyx_self = __pyx_self;
   if (unlikely(__pyx_kwds)) {
     Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
@@ -15419,70 +16024,70 @@
     }
     switch (PyTuple_GET_SIZE(__pyx_args)) {
       case  0:
-      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_posx);
+      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__posx);
       if (likely(values[0])) kw_args--;
       else goto __pyx_L5_argtuple_error;
       case  1:
-      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_posy);
+      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__posy);
       if (likely(values[1])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 1); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  2:
-      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_posz);
+      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__posz);
       if (likely(values[2])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 2); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  3:
-      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_mass);
+      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mass);
       if (likely(values[3])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 3); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 3); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  4:
-      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_npositions);
+      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__npositions);
       if (likely(values[4])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 4); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 4); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  5:
-      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_field);
+      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__field);
       if (likely(values[5])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 5); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 5); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  6:
-      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_kp_leftEdge);
+      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__leftEdge);
       if (likely(values[6])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 6); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 6); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  7:
-      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_kp_gridDimension);
+      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__gridDimension);
       if (likely(values[7])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 7); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 7); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
       case  8:
-      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_kp_cellSize);
+      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__cellSize);
       if (likely(values[8])) kw_args--;
       else {
-        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 8); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, 8); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "CICDeposit_3") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "CICDeposit_3") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_posx = ((PyArrayObject *)values[0]);
     __pyx_v_posy = ((PyArrayObject *)values[1]);
     __pyx_v_posz = ((PyArrayObject *)values[2]);
     __pyx_v_mass = ((PyArrayObject *)values[3]);
-    __pyx_v_npositions = __Pyx_PyInt_from_py_npy_int64(values[4]); if (unlikely((__pyx_v_npositions == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_npositions = __Pyx_PyInt_from_py_npy_int64(values[4]); if (unlikely((__pyx_v_npositions == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_field = ((PyArrayObject *)values[5]);
     __pyx_v_leftEdge = ((PyArrayObject *)values[6]);
     __pyx_v_gridDimension = ((PyArrayObject *)values[7]);
-    __pyx_v_cellSize = __pyx_PyFloat_AsDouble(values[8]); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_cellSize = __pyx_PyFloat_AsDouble(values[8]); if (unlikely((__pyx_v_cellSize == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
     goto __pyx_L5_argtuple_error;
   } else {
@@ -15490,19 +16095,26 @@
     __pyx_v_posy = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 1));
     __pyx_v_posz = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 2));
     __pyx_v_mass = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 3));
-    __pyx_v_npositions = __Pyx_PyInt_from_py_npy_int64(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_npositions == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_npositions = __Pyx_PyInt_from_py_npy_int64(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_npositions == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_field = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 5));
     __pyx_v_leftEdge = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 6));
     __pyx_v_gridDimension = ((PyArrayObject *)PyTuple_GET_ITEM(__pyx_args, 7));
-    __pyx_v_cellSize = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 8)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_cellSize = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 8)); if (unlikely((__pyx_v_cellSize == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("CICDeposit_3", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("yt.amr_utils.CICDeposit_3");
   return NULL;
   __pyx_L4_argument_unpacking_done:;
+  __Pyx_INCREF((PyObject *)__pyx_v_posx);
+  __Pyx_INCREF((PyObject *)__pyx_v_posy);
+  __Pyx_INCREF((PyObject *)__pyx_v_posz);
+  __Pyx_INCREF((PyObject *)__pyx_v_mass);
+  __Pyx_INCREF((PyObject *)__pyx_v_field);
+  __Pyx_INCREF((PyObject *)__pyx_v_leftEdge);
+  __Pyx_INCREF((PyObject *)__pyx_v_gridDimension);
   __pyx_bstruct_posx.buf = NULL;
   __pyx_bstruct_posy.buf = NULL;
   __pyx_bstruct_posz.buf = NULL;
@@ -15510,52 +16122,52 @@
   __pyx_bstruct_field.buf = NULL;
   __pyx_bstruct_leftEdge.buf = NULL;
   __pyx_bstruct_gridDimension.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_posx), __pyx_ptype_5numpy_ndarray, 1, "posx", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_posy), __pyx_ptype_5numpy_ndarray, 1, "posy", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_posz), __pyx_ptype_5numpy_ndarray, 1, "posz", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mass), __pyx_ptype_5numpy_ndarray, 1, "mass", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_field), __pyx_ptype_5numpy_ndarray, 1, "field", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_leftEdge), __pyx_ptype_5numpy_ndarray, 1, "leftEdge", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_gridDimension), __pyx_ptype_5numpy_ndarray, 1, "gridDimension", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_posx), __pyx_ptype_5numpy_ndarray, 1, "posx", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_posy), __pyx_ptype_5numpy_ndarray, 1, "posy", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_posz), __pyx_ptype_5numpy_ndarray, 1, "posz", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mass), __pyx_ptype_5numpy_ndarray, 1, "mass", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_field), __pyx_ptype_5numpy_ndarray, 1, "field", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_leftEdge), __pyx_ptype_5numpy_ndarray, 1, "leftEdge", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_gridDimension), __pyx_ptype_5numpy_ndarray, 1, "gridDimension", 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_posx, (PyObject*)__pyx_v_posx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_posx, (PyObject*)__pyx_v_posx, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_posx = __pyx_bstruct_posx.strides[0];
   __pyx_bshape_0_posx = __pyx_bstruct_posx.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_posy, (PyObject*)__pyx_v_posy, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_posy, (PyObject*)__pyx_v_posy, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_posy = __pyx_bstruct_posy.strides[0];
   __pyx_bshape_0_posy = __pyx_bstruct_posy.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_posz, (PyObject*)__pyx_v_posz, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_posz, (PyObject*)__pyx_v_posz, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_posz = __pyx_bstruct_posz.strides[0];
   __pyx_bshape_0_posz = __pyx_bstruct_posz.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mass, (PyObject*)__pyx_v_mass, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mass, (PyObject*)__pyx_v_mass, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_mass = __pyx_bstruct_mass.strides[0];
   __pyx_bshape_0_mass = __pyx_bstruct_mass.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_field, (PyObject*)__pyx_v_field, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_field, (PyObject*)__pyx_v_field, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_field = __pyx_bstruct_field.strides[0]; __pyx_bstride_1_field = __pyx_bstruct_field.strides[1]; __pyx_bstride_2_field = __pyx_bstruct_field.strides[2];
   __pyx_bshape_0_field = __pyx_bstruct_field.shape[0]; __pyx_bshape_1_field = __pyx_bstruct_field.shape[1]; __pyx_bshape_2_field = __pyx_bstruct_field.shape[2];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_leftEdge, (PyObject*)__pyx_v_leftEdge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_leftEdge, (PyObject*)__pyx_v_leftEdge, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_leftEdge = __pyx_bstruct_leftEdge.strides[0];
   __pyx_bshape_0_leftEdge = __pyx_bstruct_leftEdge.shape[0];
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_gridDimension, (PyObject*)__pyx_v_gridDimension, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_gridDimension, (PyObject*)__pyx_v_gridDimension, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_gridDimension = __pyx_bstruct_gridDimension.strides[0];
   __pyx_bshape_0_gridDimension = __pyx_bstruct_gridDimension.shape[0];
@@ -15597,6 +16209,10 @@
  * 
  *     le0 = leftEdge[0]
  */
+  if (unlikely(__pyx_v_cellSize == 0)) {
+    PyErr_Format(PyExc_ZeroDivisionError, "float division");
+    {__pyx_filename = __pyx_f[5]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
   __pyx_v_fact = (1.0 / __pyx_v_cellSize);
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":49
@@ -15636,8 +16252,9 @@
  * 
  *         # Compute the position of the central cell
  */
-  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_v_npositions; __pyx_t_7+=1) {
-    __pyx_v_n = __pyx_t_7;
+  __pyx_t_7 = __pyx_v_npositions;
+  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+    __pyx_v_n = __pyx_t_8;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":56
  * 
@@ -15646,8 +16263,8 @@
  *         ypos = fmin(fmax((posy[n] - le1)*fact, 0.5001), edge1)
  *         zpos = fmin(fmax((posz[n] - le2)*fact, 0.5001), edge2)
  */
-    __pyx_t_8 = __pyx_v_n;
-    __pyx_v_xpos = __pyx_f_2yt_9amr_utils_fmin(__pyx_f_2yt_9amr_utils_fmax((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_posx.buf, __pyx_t_8, __pyx_bstride_0_posx)) - __pyx_v_le0) * __pyx_v_fact), 0.50009999999999999), __pyx_v_edge0);
+    __pyx_t_9 = __pyx_v_n;
+    __pyx_v_xpos = __pyx_f_2yt_9amr_utils_fmin(__pyx_f_2yt_9amr_utils_fmax((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_posx.buf, __pyx_t_9, __pyx_bstride_0_posx)) - __pyx_v_le0) * __pyx_v_fact), 0.50009999999999999), __pyx_v_edge0);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":57
  *         # Compute the position of the central cell
@@ -15656,8 +16273,8 @@
  *         zpos = fmin(fmax((posz[n] - le2)*fact, 0.5001), edge2)
  * 
  */
-    __pyx_t_9 = __pyx_v_n;
-    __pyx_v_ypos = __pyx_f_2yt_9amr_utils_fmin(__pyx_f_2yt_9amr_utils_fmax((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_posy.buf, __pyx_t_9, __pyx_bstride_0_posy)) - __pyx_v_le1) * __pyx_v_fact), 0.50009999999999999), __pyx_v_edge1);
+    __pyx_t_10 = __pyx_v_n;
+    __pyx_v_ypos = __pyx_f_2yt_9amr_utils_fmin(__pyx_f_2yt_9amr_utils_fmax((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_posy.buf, __pyx_t_10, __pyx_bstride_0_posy)) - __pyx_v_le1) * __pyx_v_fact), 0.50009999999999999), __pyx_v_edge1);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":58
  *         xpos = fmin(fmax((posx[n] - le0)*fact, 0.5001), edge0)
@@ -15666,8 +16283,8 @@
  * 
  *         i1  = <int> (xpos + 0.5)
  */
-    __pyx_t_10 = __pyx_v_n;
-    __pyx_v_zpos = __pyx_f_2yt_9amr_utils_fmin(__pyx_f_2yt_9amr_utils_fmax((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_posz.buf, __pyx_t_10, __pyx_bstride_0_posz)) - __pyx_v_le2) * __pyx_v_fact), 0.50009999999999999), __pyx_v_edge2);
+    __pyx_t_11 = __pyx_v_n;
+    __pyx_v_zpos = __pyx_f_2yt_9amr_utils_fmin(__pyx_f_2yt_9amr_utils_fmax((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_posz.buf, __pyx_t_11, __pyx_bstride_0_posz)) - __pyx_v_le2) * __pyx_v_fact), 0.50009999999999999), __pyx_v_edge2);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":60
  *         zpos = fmin(fmax((posz[n] - le2)*fact, 0.5001), edge2)
@@ -15757,11 +16374,11 @@
  *         field[i1  ,j1-1,k1-1] += mass[n] * dx2 * dy  * dz
  *         field[i1-1,j1  ,k1-1] += mass[n] * dx  * dy2 * dz
  */
-    __pyx_t_11 = __pyx_v_n;
-    __pyx_t_12 = (__pyx_v_i1 - 1);
-    __pyx_t_13 = (__pyx_v_j1 - 1);
-    __pyx_t_14 = (__pyx_v_k1 - 1);
-    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_12, __pyx_bstride_0_field, __pyx_t_13, __pyx_bstride_1_field, __pyx_t_14, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_11, __pyx_bstride_0_mass)) * __pyx_v_dx) * __pyx_v_dy) * __pyx_v_dz);
+    __pyx_t_12 = __pyx_v_n;
+    __pyx_t_13 = (__pyx_v_i1 - 1);
+    __pyx_t_14 = (__pyx_v_j1 - 1);
+    __pyx_t_15 = (__pyx_v_k1 - 1);
+    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_13, __pyx_bstride_0_field, __pyx_t_14, __pyx_bstride_1_field, __pyx_t_15, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_12, __pyx_bstride_0_mass)) * __pyx_v_dx) * __pyx_v_dy) * __pyx_v_dz);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":74
  *         # Interpolate from field into sumfield
@@ -15770,11 +16387,11 @@
  *         field[i1-1,j1  ,k1-1] += mass[n] * dx  * dy2 * dz
  *         field[i1  ,j1  ,k1-1] += mass[n] * dx2 * dy2 * dz
  */
-    __pyx_t_15 = __pyx_v_n;
-    __pyx_t_16 = __pyx_v_i1;
-    __pyx_t_17 = (__pyx_v_j1 - 1);
-    __pyx_t_18 = (__pyx_v_k1 - 1);
-    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_16, __pyx_bstride_0_field, __pyx_t_17, __pyx_bstride_1_field, __pyx_t_18, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_15, __pyx_bstride_0_mass)) * __pyx_v_dx2) * __pyx_v_dy) * __pyx_v_dz);
+    __pyx_t_16 = __pyx_v_n;
+    __pyx_t_17 = __pyx_v_i1;
+    __pyx_t_18 = (__pyx_v_j1 - 1);
+    __pyx_t_19 = (__pyx_v_k1 - 1);
+    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_17, __pyx_bstride_0_field, __pyx_t_18, __pyx_bstride_1_field, __pyx_t_19, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_16, __pyx_bstride_0_mass)) * __pyx_v_dx2) * __pyx_v_dy) * __pyx_v_dz);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":75
  *         field[i1-1,j1-1,k1-1] += mass[n] * dx  * dy  * dz
@@ -15783,11 +16400,11 @@
  *         field[i1  ,j1  ,k1-1] += mass[n] * dx2 * dy2 * dz
  *         field[i1-1,j1-1,k1  ] += mass[n] * dx  * dy  * dz2
  */
-    __pyx_t_19 = __pyx_v_n;
-    __pyx_t_20 = (__pyx_v_i1 - 1);
-    __pyx_t_21 = __pyx_v_j1;
-    __pyx_t_22 = (__pyx_v_k1 - 1);
-    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_20, __pyx_bstride_0_field, __pyx_t_21, __pyx_bstride_1_field, __pyx_t_22, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_19, __pyx_bstride_0_mass)) * __pyx_v_dx) * __pyx_v_dy2) * __pyx_v_dz);
+    __pyx_t_20 = __pyx_v_n;
+    __pyx_t_21 = (__pyx_v_i1 - 1);
+    __pyx_t_22 = __pyx_v_j1;
+    __pyx_t_23 = (__pyx_v_k1 - 1);
+    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_21, __pyx_bstride_0_field, __pyx_t_22, __pyx_bstride_1_field, __pyx_t_23, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_20, __pyx_bstride_0_mass)) * __pyx_v_dx) * __pyx_v_dy2) * __pyx_v_dz);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":76
  *         field[i1  ,j1-1,k1-1] += mass[n] * dx2 * dy  * dz
@@ -15796,11 +16413,11 @@
  *         field[i1-1,j1-1,k1  ] += mass[n] * dx  * dy  * dz2
  *         field[i1  ,j1-1,k1  ] += mass[n] * dx2 * dy  * dz2
  */
-    __pyx_t_23 = __pyx_v_n;
-    __pyx_t_24 = __pyx_v_i1;
-    __pyx_t_25 = __pyx_v_j1;
-    __pyx_t_26 = (__pyx_v_k1 - 1);
-    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_24, __pyx_bstride_0_field, __pyx_t_25, __pyx_bstride_1_field, __pyx_t_26, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_23, __pyx_bstride_0_mass)) * __pyx_v_dx2) * __pyx_v_dy2) * __pyx_v_dz);
+    __pyx_t_24 = __pyx_v_n;
+    __pyx_t_25 = __pyx_v_i1;
+    __pyx_t_26 = __pyx_v_j1;
+    __pyx_t_27 = (__pyx_v_k1 - 1);
+    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_25, __pyx_bstride_0_field, __pyx_t_26, __pyx_bstride_1_field, __pyx_t_27, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_24, __pyx_bstride_0_mass)) * __pyx_v_dx2) * __pyx_v_dy2) * __pyx_v_dz);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":77
  *         field[i1-1,j1  ,k1-1] += mass[n] * dx  * dy2 * dz
@@ -15809,11 +16426,11 @@
  *         field[i1  ,j1-1,k1  ] += mass[n] * dx2 * dy  * dz2
  *         field[i1-1,j1  ,k1  ] += mass[n] * dx  * dy2 * dz2
  */
-    __pyx_t_27 = __pyx_v_n;
-    __pyx_t_28 = (__pyx_v_i1 - 1);
-    __pyx_t_29 = (__pyx_v_j1 - 1);
-    __pyx_t_30 = __pyx_v_k1;
-    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_28, __pyx_bstride_0_field, __pyx_t_29, __pyx_bstride_1_field, __pyx_t_30, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_27, __pyx_bstride_0_mass)) * __pyx_v_dx) * __pyx_v_dy) * __pyx_v_dz2);
+    __pyx_t_28 = __pyx_v_n;
+    __pyx_t_29 = (__pyx_v_i1 - 1);
+    __pyx_t_30 = (__pyx_v_j1 - 1);
+    __pyx_t_31 = __pyx_v_k1;
+    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_29, __pyx_bstride_0_field, __pyx_t_30, __pyx_bstride_1_field, __pyx_t_31, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_28, __pyx_bstride_0_mass)) * __pyx_v_dx) * __pyx_v_dy) * __pyx_v_dz2);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":78
  *         field[i1  ,j1  ,k1-1] += mass[n] * dx2 * dy2 * dz
@@ -15822,11 +16439,11 @@
  *         field[i1-1,j1  ,k1  ] += mass[n] * dx  * dy2 * dz2
  *         field[i1  ,j1  ,k1  ] += mass[n] * dx2 * dy2 * dz2
  */
-    __pyx_t_31 = __pyx_v_n;
-    __pyx_t_32 = __pyx_v_i1;
-    __pyx_t_33 = (__pyx_v_j1 - 1);
-    __pyx_t_34 = __pyx_v_k1;
-    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_32, __pyx_bstride_0_field, __pyx_t_33, __pyx_bstride_1_field, __pyx_t_34, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_31, __pyx_bstride_0_mass)) * __pyx_v_dx2) * __pyx_v_dy) * __pyx_v_dz2);
+    __pyx_t_32 = __pyx_v_n;
+    __pyx_t_33 = __pyx_v_i1;
+    __pyx_t_34 = (__pyx_v_j1 - 1);
+    __pyx_t_35 = __pyx_v_k1;
+    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_33, __pyx_bstride_0_field, __pyx_t_34, __pyx_bstride_1_field, __pyx_t_35, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_32, __pyx_bstride_0_mass)) * __pyx_v_dx2) * __pyx_v_dy) * __pyx_v_dz2);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":79
  *         field[i1-1,j1-1,k1  ] += mass[n] * dx  * dy  * dz2
@@ -15834,22 +16451,22 @@
  *         field[i1-1,j1  ,k1  ] += mass[n] * dx  * dy2 * dz2             # <<<<<<<<<<<<<<
  *         field[i1  ,j1  ,k1  ] += mass[n] * dx2 * dy2 * dz2
  */
-    __pyx_t_35 = __pyx_v_n;
-    __pyx_t_36 = (__pyx_v_i1 - 1);
-    __pyx_t_37 = __pyx_v_j1;
-    __pyx_t_38 = __pyx_v_k1;
-    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_36, __pyx_bstride_0_field, __pyx_t_37, __pyx_bstride_1_field, __pyx_t_38, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_35, __pyx_bstride_0_mass)) * __pyx_v_dx) * __pyx_v_dy2) * __pyx_v_dz2);
+    __pyx_t_36 = __pyx_v_n;
+    __pyx_t_37 = (__pyx_v_i1 - 1);
+    __pyx_t_38 = __pyx_v_j1;
+    __pyx_t_39 = __pyx_v_k1;
+    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_37, __pyx_bstride_0_field, __pyx_t_38, __pyx_bstride_1_field, __pyx_t_39, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_36, __pyx_bstride_0_mass)) * __pyx_v_dx) * __pyx_v_dy2) * __pyx_v_dz2);
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/CICDeposit.pyx":80
  *         field[i1  ,j1-1,k1  ] += mass[n] * dx2 * dy  * dz2
  *         field[i1-1,j1  ,k1  ] += mass[n] * dx  * dy2 * dz2
  *         field[i1  ,j1  ,k1  ] += mass[n] * dx2 * dy2 * dz2             # <<<<<<<<<<<<<<
  */
-    __pyx_t_39 = __pyx_v_n;
-    __pyx_t_40 = __pyx_v_i1;
-    __pyx_t_41 = __pyx_v_j1;
-    __pyx_t_42 = __pyx_v_k1;
-    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_40, __pyx_bstride_0_field, __pyx_t_41, __pyx_bstride_1_field, __pyx_t_42, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_39, __pyx_bstride_0_mass)) * __pyx_v_dx2) * __pyx_v_dy2) * __pyx_v_dz2);
+    __pyx_t_40 = __pyx_v_n;
+    __pyx_t_41 = __pyx_v_i1;
+    __pyx_t_42 = __pyx_v_j1;
+    __pyx_t_43 = __pyx_v_k1;
+    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_field.buf, __pyx_t_41, __pyx_bstride_0_field, __pyx_t_42, __pyx_bstride_1_field, __pyx_t_43, __pyx_bstride_2_field) += ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_bstruct_mass.buf, __pyx_t_40, __pyx_bstride_0_mass)) * __pyx_v_dx2) * __pyx_v_dy2) * __pyx_v_dz2);
   }
 
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -15877,8 +16494,15 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_gridDimension);
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mass);
   __pyx_L2:;
+  __Pyx_DECREF((PyObject *)__pyx_v_posx);
+  __Pyx_DECREF((PyObject *)__pyx_v_posy);
+  __Pyx_DECREF((PyObject *)__pyx_v_posz);
+  __Pyx_DECREF((PyObject *)__pyx_v_mass);
+  __Pyx_DECREF((PyObject *)__pyx_v_field);
+  __Pyx_DECREF((PyObject *)__pyx_v_leftEdge);
+  __Pyx_DECREF((PyObject *)__pyx_v_gridDimension);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -15890,10 +16514,10 @@
  *     return i1
  */
 
-static INLINE __pyx_t_5numpy_int64_t __pyx_f_2yt_9amr_utils_i64max(__pyx_t_5numpy_int64_t __pyx_v_i0, __pyx_t_5numpy_int64_t __pyx_v_i1) {
+static CYTHON_INLINE __pyx_t_5numpy_int64_t __pyx_f_2yt_9amr_utils_i64max(__pyx_t_5numpy_int64_t __pyx_v_i0, __pyx_t_5numpy_int64_t __pyx_v_i1) {
   __pyx_t_5numpy_int64_t __pyx_r;
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("i64max");
+  __Pyx_RefNannySetupContext("i64max");
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":31
  * 
@@ -15922,7 +16546,7 @@
 
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -15934,10 +16558,10 @@
  *     return i1
  */
 
-static INLINE __pyx_t_5numpy_int64_t __pyx_f_2yt_9amr_utils_i64min(__pyx_t_5numpy_int64_t __pyx_v_i0, __pyx_t_5numpy_int64_t __pyx_v_i1) {
+static CYTHON_INLINE __pyx_t_5numpy_int64_t __pyx_f_2yt_9amr_utils_i64min(__pyx_t_5numpy_int64_t __pyx_v_i0, __pyx_t_5numpy_int64_t __pyx_v_i1) {
   __pyx_t_5numpy_int64_t __pyx_r;
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("i64min");
+  __Pyx_RefNannySetupContext("i64min");
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":35
  * 
@@ -15966,7 +16590,7 @@
 
   __pyx_r = 0;
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -16006,52 +16630,57 @@
   int __pyx_t_4;
   int __pyx_t_5;
   int __pyx_t_6;
-  long __pyx_t_7;
+  int __pyx_t_7;
   int __pyx_t_8;
   int __pyx_t_9;
-  long __pyx_t_10;
-  int __pyx_t_11;
+  int __pyx_t_10;
+  long __pyx_t_11;
   int __pyx_t_12;
-  PyObject *__pyx_t_13 = NULL;
-  PyObject *__pyx_t_14 = NULL;
-  long __pyx_t_15;
+  int __pyx_t_13;
+  long __pyx_t_14;
+  int __pyx_t_15;
   int __pyx_t_16;
-  int __pyx_t_17;
-  long __pyx_t_18;
-  int __pyx_t_19;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  long __pyx_t_19;
   int __pyx_t_20;
   int __pyx_t_21;
   long __pyx_t_22;
   int __pyx_t_23;
   int __pyx_t_24;
-  long __pyx_t_25;
-  int __pyx_t_26;
+  int __pyx_t_25;
+  long __pyx_t_26;
   int __pyx_t_27;
-  long __pyx_t_28;
-  int __pyx_t_29;
+  int __pyx_t_28;
+  long __pyx_t_29;
   int __pyx_t_30;
-  long __pyx_t_31;
-  int __pyx_t_32;
+  int __pyx_t_31;
+  long __pyx_t_32;
   int __pyx_t_33;
   int __pyx_t_34;
   long __pyx_t_35;
   int __pyx_t_36;
   int __pyx_t_37;
-  long __pyx_t_38;
-  int __pyx_t_39;
+  int __pyx_t_38;
+  long __pyx_t_39;
   int __pyx_t_40;
-  long __pyx_t_41;
-  int __pyx_t_42;
+  int __pyx_t_41;
+  long __pyx_t_42;
   int __pyx_t_43;
-  long __pyx_t_44;
-  __Pyx_SetupRefcountContext("construct_boundary_relationships");
+  int __pyx_t_44;
+  long __pyx_t_45;
+  int __pyx_t_46;
+  int __pyx_t_47;
+  long __pyx_t_48;
+  __Pyx_RefNannySetupContext("construct_boundary_relationships");
   __pyx_self = __pyx_self;
+  __Pyx_INCREF((PyObject *)__pyx_v_contour_ids);
   __pyx_v_tree = Py_None; __Pyx_INCREF(Py_None);
   __pyx_bstruct_contour_ids.buf = NULL;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_contour_ids), __pyx_ptype_5numpy_ndarray, 1, "contour_ids", 0))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_contour_ids), __pyx_ptype_5numpy_ndarray, 1, "contour_ids", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_contour_ids, (PyObject*)__pyx_v_contour_ids, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_contour_ids, (PyObject*)__pyx_v_contour_ids, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_bstride_0_contour_ids = __pyx_bstruct_contour_ids.strides[0]; __pyx_bstride_1_contour_ids = __pyx_bstruct_contour_ids.strides[1]; __pyx_bstride_2_contour_ids = __pyx_bstruct_contour_ids.strides[2];
   __pyx_bshape_0_contour_ids = __pyx_bstruct_contour_ids.shape[0]; __pyx_bshape_1_contour_ids = __pyx_bstruct_contour_ids.shape[1]; __pyx_bshape_2_contour_ids = __pyx_bstruct_contour_ids.shape[2];
@@ -16063,7 +16692,7 @@
  *     nx = contour_ids.shape[0]
  *     ny = contour_ids.shape[1]
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __Pyx_DECREF(__pyx_v_tree);
   __pyx_v_tree = ((PyObject *)__pyx_t_1);
@@ -16103,8 +16732,9 @@
  *         for j in range(nz):
  *             for offset_i in range(3):
  */
-  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_v_ny; __pyx_t_2+=1) {
-    __pyx_v_i = __pyx_t_2;
+  __pyx_t_2 = __pyx_v_ny;
+  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
+    __pyx_v_i = __pyx_t_3;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":50
  *     # First x-pass
@@ -16113,8 +16743,9 @@
  *             for offset_i in range(3):
  *                 oi = offset_i - 1
  */
-    for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_v_nz; __pyx_t_3+=1) {
-      __pyx_v_j = __pyx_t_3;
+    __pyx_t_4 = __pyx_v_nz;
+    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
+      __pyx_v_j = __pyx_t_5;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":51
  *     for i in range(ny):
@@ -16123,8 +16754,8 @@
  *                 oi = offset_i - 1
  *                 if i == 0 and oi == -1: continue
  */
-      for (__pyx_t_4 = 0; __pyx_t_4 < 3; __pyx_t_4+=1) {
-        __pyx_v_offset_i = __pyx_t_4;
+      for (__pyx_t_6 = 0; __pyx_t_6 < 3; __pyx_t_6+=1) {
+        __pyx_v_offset_i = __pyx_t_6;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":52
  *         for j in range(nz):
@@ -16142,12 +16773,14 @@
  *                 if i == ny - 1 and oj == 1: continue
  *                 for offset_j in range(3):
  */
-        if ((__pyx_v_i == 0)) {
-          __pyx_t_5 = (__pyx_v_oi == -1);
+        __pyx_t_7 = (__pyx_v_i == 0);
+        if (__pyx_t_7) {
+          __pyx_t_8 = (__pyx_v_oi == -1);
+          __pyx_t_9 = __pyx_t_8;
         } else {
-          __pyx_t_5 = (__pyx_v_i == 0);
+          __pyx_t_9 = __pyx_t_7;
         }
-        if (__pyx_t_5) {
+        if (__pyx_t_9) {
           goto __pyx_L9_continue;
           goto __pyx_L11;
         }
@@ -16160,12 +16793,14 @@
  *                 for offset_j in range(3):
  *                     oj = offset_j - 1
  */
-        if ((__pyx_v_i == (__pyx_v_ny - 1))) {
-          __pyx_t_5 = (__pyx_v_oj == 1);
+        __pyx_t_9 = (__pyx_v_i == (__pyx_v_ny - 1));
+        if (__pyx_t_9) {
+          __pyx_t_7 = (__pyx_v_oj == 1);
+          __pyx_t_8 = __pyx_t_7;
         } else {
-          __pyx_t_5 = (__pyx_v_i == (__pyx_v_ny - 1));
+          __pyx_t_8 = __pyx_t_9;
         }
-        if (__pyx_t_5) {
+        if (__pyx_t_8) {
           goto __pyx_L9_continue;
           goto __pyx_L12;
         }
@@ -16178,8 +16813,8 @@
  *                     oj = offset_j - 1
  *                     if j == 0 and oj == -1: continue
  */
-        for (__pyx_t_6 = 0; __pyx_t_6 < 3; __pyx_t_6+=1) {
-          __pyx_v_offset_j = __pyx_t_6;
+        for (__pyx_t_10 = 0; __pyx_t_10 < 3; __pyx_t_10+=1) {
+          __pyx_v_offset_j = __pyx_t_10;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":56
  *                 if i == ny - 1 and oj == 1: continue
@@ -16197,12 +16832,14 @@
  *                     if j == nz - 1 and oj == 1: continue
  *                     c1 = contour_ids[0, i, j]
  */
-          if ((__pyx_v_j == 0)) {
-            __pyx_t_5 = (__pyx_v_oj == -1);
+          __pyx_t_8 = (__pyx_v_j == 0);
+          if (__pyx_t_8) {
+            __pyx_t_9 = (__pyx_v_oj == -1);
+            __pyx_t_7 = __pyx_t_9;
           } else {
-            __pyx_t_5 = (__pyx_v_j == 0);
+            __pyx_t_7 = __pyx_t_8;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_7) {
             goto __pyx_L13_continue;
             goto __pyx_L15;
           }
@@ -16215,12 +16852,14 @@
  *                     c1 = contour_ids[0, i, j]
  *                     c2 = contour_ids[1, i + oi, j + oj]
  */
-          if ((__pyx_v_j == (__pyx_v_nz - 1))) {
-            __pyx_t_5 = (__pyx_v_oj == 1);
+          __pyx_t_7 = (__pyx_v_j == (__pyx_v_nz - 1));
+          if (__pyx_t_7) {
+            __pyx_t_8 = (__pyx_v_oj == 1);
+            __pyx_t_9 = __pyx_t_8;
           } else {
-            __pyx_t_5 = (__pyx_v_j == (__pyx_v_nz - 1));
+            __pyx_t_9 = __pyx_t_7;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_9) {
             goto __pyx_L13_continue;
             goto __pyx_L16;
           }
@@ -16233,13 +16872,13 @@
  *                     c2 = contour_ids[1, i + oi, j + oj]
  *                     if c1 > -1 and c2 > -1:
  */
-          __pyx_t_7 = 0;
-          __pyx_t_8 = __pyx_v_i;
-          __pyx_t_9 = __pyx_v_j;
-          if (__pyx_t_7 < 0) __pyx_t_7 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_7, __pyx_bstride_0_contour_ids, __pyx_t_8, __pyx_bstride_1_contour_ids, __pyx_t_9, __pyx_bstride_2_contour_ids));
+          __pyx_t_11 = 0;
+          __pyx_t_12 = __pyx_v_i;
+          __pyx_t_13 = __pyx_v_j;
+          if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_13 < 0) __pyx_t_13 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_11, __pyx_bstride_0_contour_ids, __pyx_t_12, __pyx_bstride_1_contour_ids, __pyx_t_13, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":60
  *                     if j == nz - 1 and oj == 1: continue
@@ -16248,13 +16887,13 @@
  *                     if c1 > -1 and c2 > -1:
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  */
-          __pyx_t_10 = 1;
-          __pyx_t_11 = (__pyx_v_i + __pyx_v_oi);
-          __pyx_t_12 = (__pyx_v_j + __pyx_v_oj);
-          if (__pyx_t_10 < 0) __pyx_t_10 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_11 < 0) __pyx_t_11 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_12 < 0) __pyx_t_12 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_10, __pyx_bstride_0_contour_ids, __pyx_t_11, __pyx_bstride_1_contour_ids, __pyx_t_12, __pyx_bstride_2_contour_ids));
+          __pyx_t_14 = 1;
+          __pyx_t_15 = (__pyx_v_i + __pyx_v_oi);
+          __pyx_t_16 = (__pyx_v_j + __pyx_v_oj);
+          if (__pyx_t_14 < 0) __pyx_t_14 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_14, __pyx_bstride_0_contour_ids, __pyx_t_15, __pyx_bstride_1_contour_ids, __pyx_t_16, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":61
  *                     c1 = contour_ids[0, i, j]
@@ -16263,12 +16902,14 @@
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  *                     c1 = contour_ids[nx-1, i, j]
  */
-          if ((__pyx_v_c1 > -1)) {
-            __pyx_t_5 = (__pyx_v_c2 > -1);
+          __pyx_t_9 = (__pyx_v_c1 > -1);
+          if (__pyx_t_9) {
+            __pyx_t_7 = (__pyx_v_c2 > -1);
+            __pyx_t_8 = __pyx_t_7;
           } else {
-            __pyx_t_5 = (__pyx_v_c1 > -1);
+            __pyx_t_8 = __pyx_t_9;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_8) {
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":62
  *                     c2 = contour_ids[1, i + oi, j + oj]
@@ -16277,22 +16918,22 @@
  *                     c1 = contour_ids[nx-1, i, j]
  *                     c2 = contour_ids[nx-2, i + oi, j + oj]
  */
-            __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
-            __pyx_t_13 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_13);
-            __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(((PyObject *)__pyx_t_14));
-            PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1);
+            __pyx_t_17 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_17);
+            __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_18);
+            PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_1);
             __Pyx_GIVEREF(__pyx_t_1);
-            PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_13);
-            __Pyx_GIVEREF(__pyx_t_13);
+            PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_t_17);
+            __Pyx_GIVEREF(__pyx_t_17);
             __pyx_t_1 = 0;
-            __pyx_t_13 = 0;
-            __pyx_t_13 = __Pyx_PyObject_Append(__pyx_v_tree, ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_13);
-            __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
-            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_17 = 0;
+            __pyx_t_17 = __Pyx_PyObject_Append(__pyx_v_tree, __pyx_t_18); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_17);
+            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
             goto __pyx_L17;
           }
           __pyx_L17:;
@@ -16304,13 +16945,13 @@
  *                     c2 = contour_ids[nx-2, i + oi, j + oj]
  *                     if c1 > -1 and c2 > -1:
  */
-          __pyx_t_15 = (__pyx_v_nx - 1);
-          __pyx_t_16 = __pyx_v_i;
-          __pyx_t_17 = __pyx_v_j;
-          if (__pyx_t_15 < 0) __pyx_t_15 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_16 < 0) __pyx_t_16 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_17 < 0) __pyx_t_17 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_15, __pyx_bstride_0_contour_ids, __pyx_t_16, __pyx_bstride_1_contour_ids, __pyx_t_17, __pyx_bstride_2_contour_ids));
+          __pyx_t_19 = (__pyx_v_nx - 1);
+          __pyx_t_20 = __pyx_v_i;
+          __pyx_t_21 = __pyx_v_j;
+          if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_19, __pyx_bstride_0_contour_ids, __pyx_t_20, __pyx_bstride_1_contour_ids, __pyx_t_21, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":64
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
@@ -16319,13 +16960,13 @@
  *                     if c1 > -1 and c2 > -1:
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  */
-          __pyx_t_18 = (__pyx_v_nx - 2);
-          __pyx_t_19 = (__pyx_v_i + __pyx_v_oi);
-          __pyx_t_20 = (__pyx_v_j + __pyx_v_oj);
-          if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_18, __pyx_bstride_0_contour_ids, __pyx_t_19, __pyx_bstride_1_contour_ids, __pyx_t_20, __pyx_bstride_2_contour_ids));
+          __pyx_t_22 = (__pyx_v_nx - 2);
+          __pyx_t_23 = (__pyx_v_i + __pyx_v_oi);
+          __pyx_t_24 = (__pyx_v_j + __pyx_v_oj);
+          if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_22, __pyx_bstride_0_contour_ids, __pyx_t_23, __pyx_bstride_1_contour_ids, __pyx_t_24, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":65
  *                     c1 = contour_ids[nx-1, i, j]
@@ -16334,12 +16975,14 @@
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  *     # Now y-pass
  */
-          if ((__pyx_v_c1 > -1)) {
-            __pyx_t_5 = (__pyx_v_c2 > -1);
+          __pyx_t_8 = (__pyx_v_c1 > -1);
+          if (__pyx_t_8) {
+            __pyx_t_9 = (__pyx_v_c2 > -1);
+            __pyx_t_7 = __pyx_t_9;
           } else {
-            __pyx_t_5 = (__pyx_v_c1 > -1);
+            __pyx_t_7 = __pyx_t_8;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_7) {
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":66
  *                     c2 = contour_ids[nx-2, i + oi, j + oj]
@@ -16348,22 +16991,22 @@
  *     # Now y-pass
  *     for i in range(nx):
  */
-            __pyx_t_13 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_13);
-            __pyx_t_14 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_14);
-            __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(((PyObject *)__pyx_t_1));
-            PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_13);
-            __Pyx_GIVEREF(__pyx_t_13);
-            PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_14);
-            __Pyx_GIVEREF(__pyx_t_14);
-            __pyx_t_13 = 0;
-            __pyx_t_14 = 0;
-            __pyx_t_14 = __Pyx_PyObject_Append(__pyx_v_tree, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_14);
-            __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
-            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+            __pyx_t_17 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_17);
+            __pyx_t_18 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_18);
+            __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_1);
+            PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_17);
+            __Pyx_GIVEREF(__pyx_t_17);
+            PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_18);
+            __Pyx_GIVEREF(__pyx_t_18);
+            __pyx_t_17 = 0;
+            __pyx_t_18 = 0;
+            __pyx_t_18 = __Pyx_PyObject_Append(__pyx_v_tree, __pyx_t_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_18);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
             goto __pyx_L18;
           }
           __pyx_L18:;
@@ -16381,8 +17024,9 @@
  *         for j in range(nz):
  *             for offset_i in range(3):
  */
-  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_v_nx; __pyx_t_2+=1) {
-    __pyx_v_i = __pyx_t_2;
+  __pyx_t_2 = __pyx_v_nx;
+  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
+    __pyx_v_i = __pyx_t_3;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":69
  *     # Now y-pass
@@ -16391,8 +17035,9 @@
  *             for offset_i in range(3):
  *                 oi = offset_i - 1
  */
-    for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_v_nz; __pyx_t_3+=1) {
-      __pyx_v_j = __pyx_t_3;
+    __pyx_t_4 = __pyx_v_nz;
+    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
+      __pyx_v_j = __pyx_t_5;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":70
  *     for i in range(nx):
@@ -16401,8 +17046,8 @@
  *                 oi = offset_i - 1
  *                 if i == 0 and oi == -1: continue
  */
-      for (__pyx_t_4 = 0; __pyx_t_4 < 3; __pyx_t_4+=1) {
-        __pyx_v_offset_i = __pyx_t_4;
+      for (__pyx_t_6 = 0; __pyx_t_6 < 3; __pyx_t_6+=1) {
+        __pyx_v_offset_i = __pyx_t_6;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":71
  *         for j in range(nz):
@@ -16420,12 +17065,14 @@
  *                 if i == nx - 1 and oj == 1: continue
  *                 for offset_j in range(3):
  */
-        if ((__pyx_v_i == 0)) {
-          __pyx_t_5 = (__pyx_v_oi == -1);
+        __pyx_t_7 = (__pyx_v_i == 0);
+        if (__pyx_t_7) {
+          __pyx_t_8 = (__pyx_v_oi == -1);
+          __pyx_t_9 = __pyx_t_8;
         } else {
-          __pyx_t_5 = (__pyx_v_i == 0);
+          __pyx_t_9 = __pyx_t_7;
         }
-        if (__pyx_t_5) {
+        if (__pyx_t_9) {
           goto __pyx_L23_continue;
           goto __pyx_L25;
         }
@@ -16438,12 +17085,14 @@
  *                 for offset_j in range(3):
  *                     oj = offset_j - 1
  */
-        if ((__pyx_v_i == (__pyx_v_nx - 1))) {
-          __pyx_t_5 = (__pyx_v_oj == 1);
+        __pyx_t_9 = (__pyx_v_i == (__pyx_v_nx - 1));
+        if (__pyx_t_9) {
+          __pyx_t_7 = (__pyx_v_oj == 1);
+          __pyx_t_8 = __pyx_t_7;
         } else {
-          __pyx_t_5 = (__pyx_v_i == (__pyx_v_nx - 1));
+          __pyx_t_8 = __pyx_t_9;
         }
-        if (__pyx_t_5) {
+        if (__pyx_t_8) {
           goto __pyx_L23_continue;
           goto __pyx_L26;
         }
@@ -16456,8 +17105,8 @@
  *                     oj = offset_j - 1
  *                     if j == 0 and oj == -1: continue
  */
-        for (__pyx_t_6 = 0; __pyx_t_6 < 3; __pyx_t_6+=1) {
-          __pyx_v_offset_j = __pyx_t_6;
+        for (__pyx_t_10 = 0; __pyx_t_10 < 3; __pyx_t_10+=1) {
+          __pyx_v_offset_j = __pyx_t_10;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":75
  *                 if i == nx - 1 and oj == 1: continue
@@ -16475,12 +17124,14 @@
  *                     if j == nz - 1 and oj == 1: continue
  *                     c1 = contour_ids[i, 0, j]
  */
-          if ((__pyx_v_j == 0)) {
-            __pyx_t_5 = (__pyx_v_oj == -1);
+          __pyx_t_8 = (__pyx_v_j == 0);
+          if (__pyx_t_8) {
+            __pyx_t_9 = (__pyx_v_oj == -1);
+            __pyx_t_7 = __pyx_t_9;
           } else {
-            __pyx_t_5 = (__pyx_v_j == 0);
+            __pyx_t_7 = __pyx_t_8;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_7) {
             goto __pyx_L27_continue;
             goto __pyx_L29;
           }
@@ -16493,12 +17144,14 @@
  *                     c1 = contour_ids[i, 0, j]
  *                     c2 = contour_ids[i + oi, 1, j + oj]
  */
-          if ((__pyx_v_j == (__pyx_v_nz - 1))) {
-            __pyx_t_5 = (__pyx_v_oj == 1);
+          __pyx_t_7 = (__pyx_v_j == (__pyx_v_nz - 1));
+          if (__pyx_t_7) {
+            __pyx_t_8 = (__pyx_v_oj == 1);
+            __pyx_t_9 = __pyx_t_8;
           } else {
-            __pyx_t_5 = (__pyx_v_j == (__pyx_v_nz - 1));
+            __pyx_t_9 = __pyx_t_7;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_9) {
             goto __pyx_L27_continue;
             goto __pyx_L30;
           }
@@ -16511,13 +17164,13 @@
  *                     c2 = contour_ids[i + oi, 1, j + oj]
  *                     if c1 > -1 and c2 > -1:
  */
-          __pyx_t_21 = __pyx_v_i;
-          __pyx_t_22 = 0;
-          __pyx_t_23 = __pyx_v_j;
-          if (__pyx_t_21 < 0) __pyx_t_21 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_22 < 0) __pyx_t_22 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_23 < 0) __pyx_t_23 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_21, __pyx_bstride_0_contour_ids, __pyx_t_22, __pyx_bstride_1_contour_ids, __pyx_t_23, __pyx_bstride_2_contour_ids));
+          __pyx_t_25 = __pyx_v_i;
+          __pyx_t_26 = 0;
+          __pyx_t_27 = __pyx_v_j;
+          if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_25, __pyx_bstride_0_contour_ids, __pyx_t_26, __pyx_bstride_1_contour_ids, __pyx_t_27, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":79
  *                     if j == nz - 1 and oj == 1: continue
@@ -16526,13 +17179,13 @@
  *                     if c1 > -1 and c2 > -1:
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  */
-          __pyx_t_24 = (__pyx_v_i + __pyx_v_oi);
-          __pyx_t_25 = 1;
-          __pyx_t_26 = (__pyx_v_j + __pyx_v_oj);
-          if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_25 < 0) __pyx_t_25 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_26 < 0) __pyx_t_26 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_24, __pyx_bstride_0_contour_ids, __pyx_t_25, __pyx_bstride_1_contour_ids, __pyx_t_26, __pyx_bstride_2_contour_ids));
+          __pyx_t_28 = (__pyx_v_i + __pyx_v_oi);
+          __pyx_t_29 = 1;
+          __pyx_t_30 = (__pyx_v_j + __pyx_v_oj);
+          if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_29 < 0) __pyx_t_29 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_30 < 0) __pyx_t_30 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_28, __pyx_bstride_0_contour_ids, __pyx_t_29, __pyx_bstride_1_contour_ids, __pyx_t_30, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":80
  *                     c1 = contour_ids[i, 0, j]
@@ -16541,12 +17194,14 @@
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  *                     c1 = contour_ids[i, ny-1, j]
  */
-          if ((__pyx_v_c1 > -1)) {
-            __pyx_t_5 = (__pyx_v_c2 > -1);
+          __pyx_t_9 = (__pyx_v_c1 > -1);
+          if (__pyx_t_9) {
+            __pyx_t_7 = (__pyx_v_c2 > -1);
+            __pyx_t_8 = __pyx_t_7;
           } else {
-            __pyx_t_5 = (__pyx_v_c1 > -1);
+            __pyx_t_8 = __pyx_t_9;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_8) {
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":81
  *                     c2 = contour_ids[i + oi, 1, j + oj]
@@ -16555,21 +17210,21 @@
  *                     c1 = contour_ids[i, ny-1, j]
  *                     c2 = contour_ids[i + oi, ny-2, j + oj]
  */
-            __pyx_t_14 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_14);
-            __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_18 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_18);
+            __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
-            __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(((PyObject *)__pyx_t_13));
-            PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_14);
-            __Pyx_GIVEREF(__pyx_t_14);
-            PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_1);
+            __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_17);
+            PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_18);
+            __Pyx_GIVEREF(__pyx_t_18);
+            PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_t_1);
             __Pyx_GIVEREF(__pyx_t_1);
-            __pyx_t_14 = 0;
+            __pyx_t_18 = 0;
             __pyx_t_1 = 0;
-            __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_tree, ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_tree, __pyx_t_17); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
+            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
             __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
             goto __pyx_L31;
           }
@@ -16582,13 +17237,13 @@
  *                     c2 = contour_ids[i + oi, ny-2, j + oj]
  *                     if c1 > -1 and c2 > -1:
  */
-          __pyx_t_27 = __pyx_v_i;
-          __pyx_t_28 = (__pyx_v_ny - 1);
-          __pyx_t_29 = __pyx_v_j;
-          if (__pyx_t_27 < 0) __pyx_t_27 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_29 < 0) __pyx_t_29 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_27, __pyx_bstride_0_contour_ids, __pyx_t_28, __pyx_bstride_1_contour_ids, __pyx_t_29, __pyx_bstride_2_contour_ids));
+          __pyx_t_31 = __pyx_v_i;
+          __pyx_t_32 = (__pyx_v_ny - 1);
+          __pyx_t_33 = __pyx_v_j;
+          if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_33 < 0) __pyx_t_33 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_31, __pyx_bstride_0_contour_ids, __pyx_t_32, __pyx_bstride_1_contour_ids, __pyx_t_33, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":83
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
@@ -16597,13 +17252,13 @@
  *                     if c1 > -1 and c2 > -1:
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  */
-          __pyx_t_30 = (__pyx_v_i + __pyx_v_oi);
-          __pyx_t_31 = (__pyx_v_ny - 2);
-          __pyx_t_32 = (__pyx_v_j + __pyx_v_oj);
-          if (__pyx_t_30 < 0) __pyx_t_30 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_31 < 0) __pyx_t_31 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_30, __pyx_bstride_0_contour_ids, __pyx_t_31, __pyx_bstride_1_contour_ids, __pyx_t_32, __pyx_bstride_2_contour_ids));
+          __pyx_t_34 = (__pyx_v_i + __pyx_v_oi);
+          __pyx_t_35 = (__pyx_v_ny - 2);
+          __pyx_t_36 = (__pyx_v_j + __pyx_v_oj);
+          if (__pyx_t_34 < 0) __pyx_t_34 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_34, __pyx_bstride_0_contour_ids, __pyx_t_35, __pyx_bstride_1_contour_ids, __pyx_t_36, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":84
  *                     c1 = contour_ids[i, ny-1, j]
@@ -16612,12 +17267,14 @@
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  *     for i in range(nx):
  */
-          if ((__pyx_v_c1 > -1)) {
-            __pyx_t_5 = (__pyx_v_c2 > -1);
+          __pyx_t_8 = (__pyx_v_c1 > -1);
+          if (__pyx_t_8) {
+            __pyx_t_9 = (__pyx_v_c2 > -1);
+            __pyx_t_7 = __pyx_t_9;
           } else {
-            __pyx_t_5 = (__pyx_v_c1 > -1);
+            __pyx_t_7 = __pyx_t_8;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_7) {
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":85
  *                     c2 = contour_ids[i + oi, ny-2, j + oj]
@@ -16626,22 +17283,22 @@
  *     for i in range(nx):
  *         for j in range(ny):
  */
-            __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
-            __pyx_t_13 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_13);
-            __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(((PyObject *)__pyx_t_14));
-            PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1);
+            __pyx_t_17 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_17);
+            __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_18);
+            PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_1);
             __Pyx_GIVEREF(__pyx_t_1);
-            PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_13);
-            __Pyx_GIVEREF(__pyx_t_13);
+            PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_t_17);
+            __Pyx_GIVEREF(__pyx_t_17);
             __pyx_t_1 = 0;
-            __pyx_t_13 = 0;
-            __pyx_t_13 = __Pyx_PyObject_Append(__pyx_v_tree, ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_13);
-            __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
-            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_17 = 0;
+            __pyx_t_17 = __Pyx_PyObject_Append(__pyx_v_tree, __pyx_t_18); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_17);
+            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
             goto __pyx_L32;
           }
           __pyx_L32:;
@@ -16659,8 +17316,9 @@
  *         for j in range(ny):
  *             for offset_i in range(3):
  */
-  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_v_nx; __pyx_t_2+=1) {
-    __pyx_v_i = __pyx_t_2;
+  __pyx_t_2 = __pyx_v_nx;
+  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
+    __pyx_v_i = __pyx_t_3;
 
     /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":87
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
@@ -16669,8 +17327,9 @@
  *             for offset_i in range(3):
  *                 oi = offset_i - 1
  */
-    for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_v_ny; __pyx_t_3+=1) {
-      __pyx_v_j = __pyx_t_3;
+    __pyx_t_4 = __pyx_v_ny;
+    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
+      __pyx_v_j = __pyx_t_5;
 
       /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":88
  *     for i in range(nx):
@@ -16679,8 +17338,8 @@
  *                 oi = offset_i - 1
  *                 if i == 0 and oi == -1: continue
  */
-      for (__pyx_t_4 = 0; __pyx_t_4 < 3; __pyx_t_4+=1) {
-        __pyx_v_offset_i = __pyx_t_4;
+      for (__pyx_t_6 = 0; __pyx_t_6 < 3; __pyx_t_6+=1) {
+        __pyx_v_offset_i = __pyx_t_6;
 
         /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":89
  *         for j in range(ny):
@@ -16698,12 +17357,14 @@
  *                 if i == nx - 1 and oj == 1: continue
  *                 for offset_j in range(3):
  */
-        if ((__pyx_v_i == 0)) {
-          __pyx_t_5 = (__pyx_v_oi == -1);
+        __pyx_t_7 = (__pyx_v_i == 0);
+        if (__pyx_t_7) {
+          __pyx_t_8 = (__pyx_v_oi == -1);
+          __pyx_t_9 = __pyx_t_8;
         } else {
-          __pyx_t_5 = (__pyx_v_i == 0);
+          __pyx_t_9 = __pyx_t_7;
         }
-        if (__pyx_t_5) {
+        if (__pyx_t_9) {
           goto __pyx_L37_continue;
           goto __pyx_L39;
         }
@@ -16716,12 +17377,14 @@
  *                 for offset_j in range(3):
  *                     oj = offset_j - 1
  */
-        if ((__pyx_v_i == (__pyx_v_nx - 1))) {
-          __pyx_t_5 = (__pyx_v_oj == 1);
+        __pyx_t_9 = (__pyx_v_i == (__pyx_v_nx - 1));
+        if (__pyx_t_9) {
+          __pyx_t_7 = (__pyx_v_oj == 1);
+          __pyx_t_8 = __pyx_t_7;
         } else {
-          __pyx_t_5 = (__pyx_v_i == (__pyx_v_nx - 1));
+          __pyx_t_8 = __pyx_t_9;
         }
-        if (__pyx_t_5) {
+        if (__pyx_t_8) {
           goto __pyx_L37_continue;
           goto __pyx_L40;
         }
@@ -16734,8 +17397,8 @@
  *                     oj = offset_j - 1
  *                     if j == 0 and oj == -1: continue
  */
-        for (__pyx_t_6 = 0; __pyx_t_6 < 3; __pyx_t_6+=1) {
-          __pyx_v_offset_j = __pyx_t_6;
+        for (__pyx_t_10 = 0; __pyx_t_10 < 3; __pyx_t_10+=1) {
+          __pyx_v_offset_j = __pyx_t_10;
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":93
  *                 if i == nx - 1 and oj == 1: continue
@@ -16753,12 +17416,14 @@
  *                     if j == ny - 1 and oj == 1: continue
  *                     c1 = contour_ids[i, j, 0]
  */
-          if ((__pyx_v_j == 0)) {
-            __pyx_t_5 = (__pyx_v_oj == -1);
+          __pyx_t_8 = (__pyx_v_j == 0);
+          if (__pyx_t_8) {
+            __pyx_t_9 = (__pyx_v_oj == -1);
+            __pyx_t_7 = __pyx_t_9;
           } else {
-            __pyx_t_5 = (__pyx_v_j == 0);
+            __pyx_t_7 = __pyx_t_8;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_7) {
             goto __pyx_L41_continue;
             goto __pyx_L43;
           }
@@ -16771,12 +17436,14 @@
  *                     c1 = contour_ids[i, j, 0]
  *                     c2 = contour_ids[i + oi, j + oj, 1]
  */
-          if ((__pyx_v_j == (__pyx_v_ny - 1))) {
-            __pyx_t_5 = (__pyx_v_oj == 1);
+          __pyx_t_7 = (__pyx_v_j == (__pyx_v_ny - 1));
+          if (__pyx_t_7) {
+            __pyx_t_8 = (__pyx_v_oj == 1);
+            __pyx_t_9 = __pyx_t_8;
           } else {
-            __pyx_t_5 = (__pyx_v_j == (__pyx_v_ny - 1));
+            __pyx_t_9 = __pyx_t_7;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_9) {
             goto __pyx_L41_continue;
             goto __pyx_L44;
           }
@@ -16789,13 +17456,13 @@
  *                     c2 = contour_ids[i + oi, j + oj, 1]
  *                     if c1 > -1 and c2 > -1:
  */
-          __pyx_t_33 = __pyx_v_i;
-          __pyx_t_34 = __pyx_v_j;
-          __pyx_t_35 = 0;
-          if (__pyx_t_33 < 0) __pyx_t_33 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_34 < 0) __pyx_t_34 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_35 < 0) __pyx_t_35 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_33, __pyx_bstride_0_contour_ids, __pyx_t_34, __pyx_bstride_1_contour_ids, __pyx_t_35, __pyx_bstride_2_contour_ids));
+          __pyx_t_37 = __pyx_v_i;
+          __pyx_t_38 = __pyx_v_j;
+          __pyx_t_39 = 0;
+          if (__pyx_t_37 < 0) __pyx_t_37 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_38 < 0) __pyx_t_38 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_39 < 0) __pyx_t_39 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_37, __pyx_bstride_0_contour_ids, __pyx_t_38, __pyx_bstride_1_contour_ids, __pyx_t_39, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":97
  *                     if j == ny - 1 and oj == 1: continue
@@ -16804,13 +17471,13 @@
  *                     if c1 > -1 and c2 > -1:
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  */
-          __pyx_t_36 = (__pyx_v_i + __pyx_v_oi);
-          __pyx_t_37 = (__pyx_v_j + __pyx_v_oj);
-          __pyx_t_38 = 1;
-          if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_37 < 0) __pyx_t_37 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_38 < 0) __pyx_t_38 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_36, __pyx_bstride_0_contour_ids, __pyx_t_37, __pyx_bstride_1_contour_ids, __pyx_t_38, __pyx_bstride_2_contour_ids));
+          __pyx_t_40 = (__pyx_v_i + __pyx_v_oi);
+          __pyx_t_41 = (__pyx_v_j + __pyx_v_oj);
+          __pyx_t_42 = 1;
+          if (__pyx_t_40 < 0) __pyx_t_40 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_41 < 0) __pyx_t_41 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_42 < 0) __pyx_t_42 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_40, __pyx_bstride_0_contour_ids, __pyx_t_41, __pyx_bstride_1_contour_ids, __pyx_t_42, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":98
  *                     c1 = contour_ids[i, j, 0]
@@ -16819,12 +17486,14 @@
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  *                     c1 = contour_ids[i, j, nz-1]
  */
-          if ((__pyx_v_c1 > -1)) {
-            __pyx_t_5 = (__pyx_v_c2 > -1);
+          __pyx_t_9 = (__pyx_v_c1 > -1);
+          if (__pyx_t_9) {
+            __pyx_t_7 = (__pyx_v_c2 > -1);
+            __pyx_t_8 = __pyx_t_7;
           } else {
-            __pyx_t_5 = (__pyx_v_c1 > -1);
+            __pyx_t_8 = __pyx_t_9;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_8) {
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":99
  *                     c2 = contour_ids[i + oi, j + oj, 1]
@@ -16833,22 +17502,22 @@
  *                     c1 = contour_ids[i, j, nz-1]
  *                     c2 = contour_ids[i + oi, j + oj, nz-2]
  */
-            __pyx_t_13 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_13);
-            __pyx_t_14 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_14);
-            __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(((PyObject *)__pyx_t_1));
-            PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_13);
-            __Pyx_GIVEREF(__pyx_t_13);
-            PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_14);
-            __Pyx_GIVEREF(__pyx_t_14);
-            __pyx_t_13 = 0;
-            __pyx_t_14 = 0;
-            __pyx_t_14 = __Pyx_PyObject_Append(__pyx_v_tree, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_14);
-            __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
-            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+            __pyx_t_17 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_17);
+            __pyx_t_18 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_18);
+            __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_1);
+            PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_17);
+            __Pyx_GIVEREF(__pyx_t_17);
+            PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_18);
+            __Pyx_GIVEREF(__pyx_t_18);
+            __pyx_t_17 = 0;
+            __pyx_t_18 = 0;
+            __pyx_t_18 = __Pyx_PyObject_Append(__pyx_v_tree, __pyx_t_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_18);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
             goto __pyx_L45;
           }
           __pyx_L45:;
@@ -16860,13 +17529,13 @@
  *                     c2 = contour_ids[i + oi, j + oj, nz-2]
  *                     if c1 > -1 and c2 > -1:
  */
-          __pyx_t_39 = __pyx_v_i;
-          __pyx_t_40 = __pyx_v_j;
-          __pyx_t_41 = (__pyx_v_nz - 1);
-          if (__pyx_t_39 < 0) __pyx_t_39 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_40 < 0) __pyx_t_40 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_41 < 0) __pyx_t_41 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_39, __pyx_bstride_0_contour_ids, __pyx_t_40, __pyx_bstride_1_contour_ids, __pyx_t_41, __pyx_bstride_2_contour_ids));
+          __pyx_t_43 = __pyx_v_i;
+          __pyx_t_44 = __pyx_v_j;
+          __pyx_t_45 = (__pyx_v_nz - 1);
+          if (__pyx_t_43 < 0) __pyx_t_43 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_44 < 0) __pyx_t_44 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_45 < 0) __pyx_t_45 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c1 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_43, __pyx_bstride_0_contour_ids, __pyx_t_44, __pyx_bstride_1_contour_ids, __pyx_t_45, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":101
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
@@ -16875,13 +17544,13 @@
  *                     if c1 > -1 and c2 > -1:
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  */
-          __pyx_t_42 = (__pyx_v_i + __pyx_v_oi);
-          __pyx_t_43 = (__pyx_v_j + __pyx_v_oj);
-          __pyx_t_44 = (__pyx_v_nz - 2);
-          if (__pyx_t_42 < 0) __pyx_t_42 += __pyx_bshape_0_contour_ids;
-          if (__pyx_t_43 < 0) __pyx_t_43 += __pyx_bshape_1_contour_ids;
-          if (__pyx_t_44 < 0) __pyx_t_44 += __pyx_bshape_2_contour_ids;
-          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_42, __pyx_bstride_0_contour_ids, __pyx_t_43, __pyx_bstride_1_contour_ids, __pyx_t_44, __pyx_bstride_2_contour_ids));
+          __pyx_t_46 = (__pyx_v_i + __pyx_v_oi);
+          __pyx_t_47 = (__pyx_v_j + __pyx_v_oj);
+          __pyx_t_48 = (__pyx_v_nz - 2);
+          if (__pyx_t_46 < 0) __pyx_t_46 += __pyx_bshape_0_contour_ids;
+          if (__pyx_t_47 < 0) __pyx_t_47 += __pyx_bshape_1_contour_ids;
+          if (__pyx_t_48 < 0) __pyx_t_48 += __pyx_bshape_2_contour_ids;
+          __pyx_v_c2 = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_contour_ids.buf, __pyx_t_46, __pyx_bstride_0_contour_ids, __pyx_t_47, __pyx_bstride_1_contour_ids, __pyx_t_48, __pyx_bstride_2_contour_ids));
 
           /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":102
  *                     c1 = contour_ids[i, j, nz-1]
@@ -16890,12 +17559,14 @@
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))
  *     return tree
  */
-          if ((__pyx_v_c1 > -1)) {
-            __pyx_t_5 = (__pyx_v_c2 > -1);
+          __pyx_t_8 = (__pyx_v_c1 > -1);
+          if (__pyx_t_8) {
+            __pyx_t_9 = (__pyx_v_c2 > -1);
+            __pyx_t_7 = __pyx_t_9;
           } else {
-            __pyx_t_5 = (__pyx_v_c1 > -1);
+            __pyx_t_7 = __pyx_t_8;
           }
-          if (__pyx_t_5) {
+          if (__pyx_t_7) {
 
             /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":103
  *                     c2 = contour_ids[i + oi, j + oj, nz-2]
@@ -16903,21 +17574,21 @@
  *                         tree.append((i64max(c1,c2), i64min(c1,c2)))             # <<<<<<<<<<<<<<
  *     return tree
  */
-            __pyx_t_14 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_14);
-            __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_18 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64max(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_18);
+            __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_2yt_9amr_utils_i64min(__pyx_v_c1, __pyx_v_c2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
-            __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(((PyObject *)__pyx_t_13));
-            PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_14);
-            __Pyx_GIVEREF(__pyx_t_14);
-            PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_1);
+            __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_17);
+            PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_18);
+            __Pyx_GIVEREF(__pyx_t_18);
+            PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_t_1);
             __Pyx_GIVEREF(__pyx_t_1);
-            __pyx_t_14 = 0;
+            __pyx_t_18 = 0;
             __pyx_t_1 = 0;
-            __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_tree, ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_tree, __pyx_t_17); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
+            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
             __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
             goto __pyx_L46;
           }
@@ -16943,8 +17614,8 @@
   goto __pyx_L0;
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_13);
-  __Pyx_XDECREF(__pyx_t_14);
+  __Pyx_XDECREF(__pyx_t_17);
+  __Pyx_XDECREF(__pyx_t_18);
   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
     __Pyx_SafeReleaseBuffer(&__pyx_bstruct_contour_ids);
@@ -16956,12 +17627,13 @@
   __Pyx_SafeReleaseBuffer(&__pyx_bstruct_contour_ids);
   __pyx_L2:;
   __Pyx_DECREF(__pyx_v_tree);
+  __Pyx_DECREF((PyObject *)__pyx_v_contour_ids);
   __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":152
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":187
  *         # experimental exception made for __getbuffer__ and __releasebuffer__
  *         # -- the details of this may change.
  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
@@ -16983,18 +17655,21 @@
   int __pyx_v_hasfields;
   int __pyx_r;
   int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_t_4;
-  int __pyx_t_5;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
   int __pyx_t_6;
-  char *__pyx_t_7;
-  __Pyx_SetupRefcountContext("__getbuffer__");
+  int __pyx_t_7;
+  int __pyx_t_8;
+  char *__pyx_t_9;
+  __Pyx_RefNannySetupContext("__getbuffer__");
   if (__pyx_v_info == NULL) return 0;
   __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(__pyx_v_info->obj);
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":158
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":193
  *             # of flags
  *             cdef int copy_shape, i, ndim
  *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
@@ -17003,7 +17678,7 @@
  */
   __pyx_v_endian_detector = 1;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":159
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":194
  *             cdef int copy_shape, i, ndim
  *             cdef int endian_detector = 1
  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
@@ -17012,7 +17687,7 @@
  */
   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":161
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":196
  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
  * 
  *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
@@ -17021,7 +17696,7 @@
  */
   __pyx_v_ndim = PyArray_NDIM(((PyArrayObject *)__pyx_v_self));
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":163
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":198
  *             ndim = PyArray_NDIM(self)
  * 
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
@@ -17031,7 +17706,7 @@
   __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
   if (__pyx_t_1) {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":164
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":199
  * 
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
  *                 copy_shape = 1             # <<<<<<<<<<<<<<
@@ -17043,7 +17718,7 @@
   }
   /*else*/ {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":166
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":201
  *                 copy_shape = 1
  *             else:
  *                 copy_shape = 0             # <<<<<<<<<<<<<<
@@ -17054,96 +17729,100 @@
   }
   __pyx_L5:;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":168
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":203
  *                 copy_shape = 0
  * 
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
- *                 raise ValueError("ndarray is not C contiguous")
+ *                 raise ValueError(u"ndarray is not C contiguous")
  */
-  if (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS)) {
+  __pyx_t_1 = ((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS);
+  if (__pyx_t_1) {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":169
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":204
  * 
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
- *                 raise ValueError("ndarray is not C contiguous")
+ *                 raise ValueError(u"ndarray is not C contiguous")
  * 
  */
-    __pyx_t_1 = (!PyArray_CHKFLAGS(((PyArrayObject *)__pyx_v_self), NPY_C_CONTIGUOUS));
+    __pyx_t_2 = (!PyArray_CHKFLAGS(((PyArrayObject *)__pyx_v_self), NPY_C_CONTIGUOUS));
+    __pyx_t_3 = __pyx_t_2;
   } else {
-    __pyx_t_1 = ((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS);
+    __pyx_t_3 = __pyx_t_1;
   }
-  if (__pyx_t_1) {
+  if (__pyx_t_3) {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":170
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":205
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
- *                 raise ValueError("ndarray is not C contiguous")             # <<<<<<<<<<<<<<
+ *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  */
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-    __Pyx_INCREF(__pyx_kp_1);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_1);
-    __Pyx_GIVEREF(__pyx_kp_1);
-    __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-    __Pyx_Raise(__pyx_t_3, 0, 0);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_INCREF(((PyObject *)__pyx_kp_u_3));
+    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_3));
+    __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_Raise(__pyx_t_5, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L6;
   }
   __pyx_L6:;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":172
- *                 raise ValueError("ndarray is not C contiguous")
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":207
+ *                 raise ValueError(u"ndarray is not C contiguous")
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
- *                 raise ValueError("ndarray is not Fortran contiguous")
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
  */
-  if (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS)) {
+  __pyx_t_3 = ((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS);
+  if (__pyx_t_3) {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":173
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":208
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
- *                 raise ValueError("ndarray is not Fortran contiguous")
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
  * 
  */
     __pyx_t_1 = (!PyArray_CHKFLAGS(((PyArrayObject *)__pyx_v_self), NPY_F_CONTIGUOUS));
+    __pyx_t_2 = __pyx_t_1;
   } else {
-    __pyx_t_1 = ((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS);
+    __pyx_t_2 = __pyx_t_3;
   }
-  if (__pyx_t_1) {
+  if (__pyx_t_2) {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":174
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":209
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
- *                 raise ValueError("ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
  * 
  *             info.buf = PyArray_DATA(self)
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
-    __Pyx_INCREF(__pyx_kp_2);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_2);
-    __Pyx_GIVEREF(__pyx_kp_2);
-    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-    __Pyx_Raise(__pyx_t_2, 0, 0);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_INCREF(((PyObject *)__pyx_kp_u_4));
+    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_4));
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_Raise(__pyx_t_4, 0, 0);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L7;
   }
   __pyx_L7:;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":176
- *                 raise ValueError("ndarray is not Fortran contiguous")
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":211
+ *                 raise ValueError(u"ndarray is not Fortran contiguous")
  * 
  *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
  *             info.ndim = ndim
@@ -17151,7 +17830,7 @@
  */
   __pyx_v_info->buf = PyArray_DATA(((PyArrayObject *)__pyx_v_self));
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":177
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":212
  * 
  *             info.buf = PyArray_DATA(self)
  *             info.ndim = ndim             # <<<<<<<<<<<<<<
@@ -17160,17 +17839,17 @@
  */
   __pyx_v_info->ndim = __pyx_v_ndim;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":178
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":213
  *             info.buf = PyArray_DATA(self)
  *             info.ndim = ndim
  *             if copy_shape:             # <<<<<<<<<<<<<<
  *                 # Allocate new buffer for strides and shape info. This is allocated
  *                 # as one block, strides first.
  */
-  __pyx_t_4 = __pyx_v_copy_shape;
-  if (__pyx_t_4) {
+  __pyx_t_6 = __pyx_v_copy_shape;
+  if (__pyx_t_6) {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":181
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":216
  *                 # Allocate new buffer for strides and shape info. This is allocated
  *                 # as one block, strides first.
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)             # <<<<<<<<<<<<<<
@@ -17179,7 +17858,7 @@
  */
     __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * __pyx_v_ndim) * 2)));
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":182
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":217
  *                 # as one block, strides first.
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
  *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
@@ -17188,17 +17867,18 @@
  */
     __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":183
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":218
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
  *                 info.shape = info.strides + ndim
  *                 for i in range(ndim):             # <<<<<<<<<<<<<<
  *                     info.strides[i] = PyArray_STRIDES(self)[i]
  *                     info.shape[i] = PyArray_DIMS(self)[i]
  */
-    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_v_ndim; __pyx_t_4+=1) {
-      __pyx_v_i = __pyx_t_4;
+    __pyx_t_6 = __pyx_v_ndim;
+    for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
+      __pyx_v_i = __pyx_t_7;
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":184
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":219
  *                 info.shape = info.strides + ndim
  *                 for i in range(ndim):
  *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
@@ -17207,7 +17887,7 @@
  */
       (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(((PyArrayObject *)__pyx_v_self))[__pyx_v_i]);
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":185
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":220
  *                 for i in range(ndim):
  *                     info.strides[i] = PyArray_STRIDES(self)[i]
  *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
@@ -17220,7 +17900,7 @@
   }
   /*else*/ {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":187
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":222
  *                     info.shape[i] = PyArray_DIMS(self)[i]
  *             else:
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
@@ -17229,7 +17909,7 @@
  */
     __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(((PyArrayObject *)__pyx_v_self)));
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":188
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":223
  *             else:
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
@@ -17240,7 +17920,7 @@
   }
   __pyx_L8:;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":189
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":224
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
@@ -17249,7 +17929,7 @@
  */
   __pyx_v_info->suboffsets = NULL;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":190
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":225
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
@@ -17258,7 +17938,7 @@
  */
   __pyx_v_info->itemsize = PyArray_ITEMSIZE(((PyArrayObject *)__pyx_v_self));
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":191
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":226
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)
  *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
@@ -17267,7 +17947,7 @@
  */
   __pyx_v_info->readonly = (!PyArray_ISWRITEABLE(((PyArrayObject *)__pyx_v_self)));
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":194
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":229
  * 
  *             cdef int t
  *             cdef char* f = NULL             # <<<<<<<<<<<<<<
@@ -17276,7 +17956,7 @@
  */
   __pyx_v_f = NULL;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":195
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":230
  *             cdef int t
  *             cdef char* f = NULL
  *             cdef dtype descr = self.descr             # <<<<<<<<<<<<<<
@@ -17286,7 +17966,7 @@
   __Pyx_INCREF(((PyObject *)((PyArrayObject *)__pyx_v_self)->descr));
   __pyx_v_descr = ((PyArrayObject *)__pyx_v_self)->descr;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":199
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":234
  *             cdef int offset
  * 
  *             cdef bint hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
@@ -17295,21 +17975,23 @@
  */
   __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":201
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":236
  *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
  * 
  *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
  *                 # do not call releasebuffer
  *                 info.obj = None
  */
-  if ((!__pyx_v_hasfields)) {
-    __pyx_t_1 = (!__pyx_v_copy_shape);
+  __pyx_t_2 = (!__pyx_v_hasfields);
+  if (__pyx_t_2) {
+    __pyx_t_3 = (!__pyx_v_copy_shape);
+    __pyx_t_1 = __pyx_t_3;
   } else {
-    __pyx_t_1 = (!__pyx_v_hasfields);
+    __pyx_t_1 = __pyx_t_2;
   }
   if (__pyx_t_1) {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":203
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":238
  *             if not hasfields and not copy_shape:
  *                 # do not call releasebuffer
  *                 info.obj = None             # <<<<<<<<<<<<<<
@@ -17325,7 +18007,7 @@
   }
   /*else*/ {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":206
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":241
  *             else:
  *                 # need to call releasebuffer
  *                 info.obj = self             # <<<<<<<<<<<<<<
@@ -17340,7 +18022,7 @@
   }
   __pyx_L11:;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":208
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":243
  *                 info.obj = self
  * 
  *             if not hasfields:             # <<<<<<<<<<<<<<
@@ -17350,7 +18032,7 @@
   __pyx_t_1 = (!__pyx_v_hasfields);
   if (__pyx_t_1) {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":209
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":244
  * 
  *             if not hasfields:
  *                 t = descr.type_num             # <<<<<<<<<<<<<<
@@ -17359,319 +18041,322 @@
  */
     __pyx_v_t = __pyx_v_descr->type_num;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":210
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":245
  *             if not hasfields:
  *                 t = descr.type_num
  *                 if ((descr.byteorder == '>' and little_endian) or             # <<<<<<<<<<<<<<
  *                     (descr.byteorder == '<' and not little_endian)):
- *                     raise ValueError("Non-native byte order not supported")
+ *                     raise ValueError(u"Non-native byte order not supported")
  */
-    if ((__pyx_v_descr->byteorder == '>')) {
-      __pyx_t_1 = __pyx_v_little_endian;
+    __pyx_t_1 = (__pyx_v_descr->byteorder == '>');
+    if (__pyx_t_1) {
+      __pyx_t_2 = __pyx_v_little_endian;
     } else {
-      __pyx_t_1 = (__pyx_v_descr->byteorder == '>');
+      __pyx_t_2 = __pyx_t_1;
     }
-    if (!__pyx_t_1) {
+    if (!__pyx_t_2) {
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":211
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":246
  *                 t = descr.type_num
  *                 if ((descr.byteorder == '>' and little_endian) or
  *                     (descr.byteorder == '<' and not little_endian)):             # <<<<<<<<<<<<<<
- *                     raise ValueError("Non-native byte order not supported")
+ *                     raise ValueError(u"Non-native byte order not supported")
  *                 if   t == NPY_BYTE:        f = "b"
  */
-      if ((__pyx_v_descr->byteorder == '<')) {
-        __pyx_t_5 = (!__pyx_v_little_endian);
+      __pyx_t_1 = (__pyx_v_descr->byteorder == '<');
+      if (__pyx_t_1) {
+        __pyx_t_3 = (!__pyx_v_little_endian);
+        __pyx_t_8 = __pyx_t_3;
       } else {
-        __pyx_t_5 = (__pyx_v_descr->byteorder == '<');
+        __pyx_t_8 = __pyx_t_1;
       }
-      __pyx_t_6 = __pyx_t_5;
+      __pyx_t_1 = __pyx_t_8;
     } else {
-      __pyx_t_6 = __pyx_t_1;
+      __pyx_t_1 = __pyx_t_2;
     }
-    if (__pyx_t_6) {
+    if (__pyx_t_1) {
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":212
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":247
  *                 if ((descr.byteorder == '>' and little_endian) or
  *                     (descr.byteorder == '<' and not little_endian)):
- *                     raise ValueError("Non-native byte order not supported")             # <<<<<<<<<<<<<<
+ *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"
  */
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-      __Pyx_INCREF(__pyx_kp_5);
-      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_5);
-      __Pyx_GIVEREF(__pyx_kp_5);
-      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-      __Pyx_Raise(__pyx_t_3, 0, 0);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_INCREF(((PyObject *)__pyx_kp_u_5));
+      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_5));
+      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_5));
+      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_Raise(__pyx_t_5, 0, 0);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      {__pyx_filename = __pyx_f[7]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L13;
     }
     __pyx_L13:;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":213
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":248
  *                     (descr.byteorder == '<' and not little_endian)):
- *                     raise ValueError("Non-native byte order not supported")
+ *                     raise ValueError(u"Non-native byte order not supported")
  *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_BYTE);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_6;
+    __pyx_t_1 = (__pyx_v_t == NPY_BYTE);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__b;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":214
- *                     raise ValueError("Non-native byte order not supported")
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":249
+ *                     raise ValueError(u"Non-native byte order not supported")
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_SHORT:       f = "h"
  *                 elif t == NPY_USHORT:      f = "H"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_UBYTE);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_7;
+    __pyx_t_1 = (__pyx_v_t == NPY_UBYTE);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__B;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":215
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":250
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_USHORT:      f = "H"
  *                 elif t == NPY_INT:         f = "i"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_SHORT);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_8;
+    __pyx_t_1 = (__pyx_v_t == NPY_SHORT);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__h;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":216
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":251
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"
  *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_INT:         f = "i"
  *                 elif t == NPY_UINT:        f = "I"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_USHORT);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_9;
+    __pyx_t_1 = (__pyx_v_t == NPY_USHORT);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__H;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":217
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":252
  *                 elif t == NPY_SHORT:       f = "h"
  *                 elif t == NPY_USHORT:      f = "H"
  *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_UINT:        f = "I"
  *                 elif t == NPY_LONG:        f = "l"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_INT);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_10;
+    __pyx_t_1 = (__pyx_v_t == NPY_INT);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__i;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":218
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":253
  *                 elif t == NPY_USHORT:      f = "H"
  *                 elif t == NPY_INT:         f = "i"
  *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_LONG:        f = "l"
  *                 elif t == NPY_ULONG:       f = "L"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_UINT);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_11;
+    __pyx_t_1 = (__pyx_v_t == NPY_UINT);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__I;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":219
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":254
  *                 elif t == NPY_INT:         f = "i"
  *                 elif t == NPY_UINT:        f = "I"
  *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_ULONG:       f = "L"
  *                 elif t == NPY_LONGLONG:    f = "q"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_LONG);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_12;
+    __pyx_t_1 = (__pyx_v_t == NPY_LONG);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__l;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":220
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":255
  *                 elif t == NPY_UINT:        f = "I"
  *                 elif t == NPY_LONG:        f = "l"
  *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_LONGLONG:    f = "q"
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_ULONG);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_13;
+    __pyx_t_1 = (__pyx_v_t == NPY_ULONG);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__L;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":221
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":256
  *                 elif t == NPY_LONG:        f = "l"
  *                 elif t == NPY_ULONG:       f = "L"
  *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  *                 elif t == NPY_FLOAT:       f = "f"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_LONGLONG);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_14;
+    __pyx_t_1 = (__pyx_v_t == NPY_LONGLONG);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__q;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":222
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":257
  *                 elif t == NPY_ULONG:       f = "L"
  *                 elif t == NPY_LONGLONG:    f = "q"
  *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_FLOAT:       f = "f"
  *                 elif t == NPY_DOUBLE:      f = "d"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_ULONGLONG);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_15;
+    __pyx_t_1 = (__pyx_v_t == NPY_ULONGLONG);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__Q;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":223
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":258
  *                 elif t == NPY_LONGLONG:    f = "q"
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_DOUBLE:      f = "d"
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_FLOAT);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_16;
+    __pyx_t_1 = (__pyx_v_t == NPY_FLOAT);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__f;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":224
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":259
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  *                 elif t == NPY_FLOAT:       f = "f"
  *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_DOUBLE);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_17;
+    __pyx_t_1 = (__pyx_v_t == NPY_DOUBLE);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__d;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":225
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":260
  *                 elif t == NPY_FLOAT:       f = "f"
  *                 elif t == NPY_DOUBLE:      f = "d"
  *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_LONGDOUBLE);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_18;
+    __pyx_t_1 = (__pyx_v_t == NPY_LONGDOUBLE);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__g;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":226
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":261
  *                 elif t == NPY_DOUBLE:      f = "d"
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_CFLOAT);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_19;
+    __pyx_t_1 = (__pyx_v_t == NPY_CFLOAT);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__Zf;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":227
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":262
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
  *                 elif t == NPY_OBJECT:      f = "O"
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_CDOUBLE);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_20;
+    __pyx_t_1 = (__pyx_v_t == NPY_CDOUBLE);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__Zd;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":228
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":263
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
  *                 elif t == NPY_OBJECT:      f = "O"
  *                 else:
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_CLONGDOUBLE);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_21;
+    __pyx_t_1 = (__pyx_v_t == NPY_CLONGDOUBLE);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__Zg;
       goto __pyx_L14;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":229
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":264
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
  *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
  *                 else:
- *                     raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
+ *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  */
-    __pyx_t_6 = (__pyx_v_t == NPY_OBJECT);
-    if (__pyx_t_6) {
-      __pyx_v_f = __pyx_k_22;
+    __pyx_t_1 = (__pyx_v_t == NPY_OBJECT);
+    if (__pyx_t_1) {
+      __pyx_v_f = __pyx_k__O;
       goto __pyx_L14;
     }
     /*else*/ {
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":231
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":266
  *                 elif t == NPY_OBJECT:      f = "O"
  *                 else:
- *                     raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
+ *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
  *                 info.format = f
  *                 return
  */
-      __pyx_t_3 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_2 = PyNumber_Remainder(__pyx_kp_23, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
-      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
-      __Pyx_GIVEREF(__pyx_t_2);
-      __pyx_t_2 = 0;
-      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-      __Pyx_Raise(__pyx_t_2, 0, 0);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_6), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_4);
+      __pyx_t_4 = 0;
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_Raise(__pyx_t_4, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      {__pyx_filename = __pyx_f[7]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L14:;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":232
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":267
  *                 else:
- *                     raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
+ *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *                 info.format = f             # <<<<<<<<<<<<<<
  *                 return
  *             else:
  */
     __pyx_v_info->format = __pyx_v_f;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":233
- *                     raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":268
+ *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *                 info.format = f
  *                 return             # <<<<<<<<<<<<<<
  *             else:
@@ -17683,7 +18368,7 @@
   }
   /*else*/ {
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":235
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":270
  *                 return
  *             else:
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
@@ -17692,7 +18377,7 @@
  */
     __pyx_v_info->format = ((char *)malloc(255));
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":236
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":271
  *             else:
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
  *                 info.format[0] = '^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
@@ -17701,7 +18386,7 @@
  */
     (__pyx_v_info->format[0]) = '^';
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":237
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":272
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
  *                 info.format[0] = '^' # Native data types, manual alignment
  *                 offset = 0             # <<<<<<<<<<<<<<
@@ -17710,17 +18395,17 @@
  */
     __pyx_v_offset = 0;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":240
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":275
  *                 f = _util_dtypestring(descr, info.format + 1,
  *                                       info.format + _buffer_format_string_len,
  *                                       &offset)             # <<<<<<<<<<<<<<
  *                 f[0] = 0 # Terminate format string
  * 
  */
-    __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_v_f = __pyx_t_7;
+    __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_f = __pyx_t_9;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":241
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":276
  *                                       info.format + _buffer_format_string_len,
  *                                       &offset)
  *                 f[0] = 0 # Terminate format string             # <<<<<<<<<<<<<<
@@ -17734,8 +18419,8 @@
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
   __Pyx_AddTraceback("numpy.ndarray.__getbuffer__");
   __pyx_r = -1;
   __Pyx_GOTREF(__pyx_v_info->obj);
@@ -17748,11 +18433,12 @@
   }
   __pyx_L2:;
   __Pyx_XDECREF((PyObject *)__pyx_v_descr);
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":243
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":278
  *                 f[0] = 0 # Terminate format string
  * 
  *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
@@ -17763,64 +18449,261 @@
 static void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
 static void __pyx_pf_5numpy_7ndarray___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
   int __pyx_t_1;
-  __Pyx_SetupRefcountContext("__releasebuffer__");
+  __Pyx_RefNannySetupContext("__releasebuffer__");
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":279
+ * 
+ *         def __releasebuffer__(ndarray self, Py_buffer* info):
+ *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ */
+  __pyx_t_1 = PyArray_HASFIELDS(((PyArrayObject *)__pyx_v_self));
+  if (__pyx_t_1) {
+
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":280
+ *         def __releasebuffer__(ndarray self, Py_buffer* info):
+ *             if PyArray_HASFIELDS(self):
+ *                 stdlib.free(info.format)             # <<<<<<<<<<<<<<
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ *                 stdlib.free(info.strides)
+ */
+    free(__pyx_v_info->format);
+    goto __pyx_L5;
+  }
+  __pyx_L5:;
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":281
+ *             if PyArray_HASFIELDS(self):
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
+ *                 stdlib.free(info.strides)
+ *                 # info.shape was stored after info.strides in the same block
+ */
+  __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
+  if (__pyx_t_1) {
+
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":282
+ *                 stdlib.free(info.format)
+ *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
+ *                 stdlib.free(info.strides)             # <<<<<<<<<<<<<<
+ *                 # info.shape was stored after info.strides in the same block
+ * 
+ */
+    free(__pyx_v_info->strides);
+    goto __pyx_L6;
+  }
+  __pyx_L6:;
+
+  __Pyx_DECREF((PyObject *)__pyx_v_self);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":755
+ * ctypedef npy_cdouble     complex_t
+ * 
+ * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(1, <void*>a)
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1");
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":756
+ * 
+ * cdef inline object PyArray_MultiIterNew1(a):
+ *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object PyArray_MultiIterNew2(a, b):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1");
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":758
+ *     return PyArray_MultiIterNew(1, <void*>a)
+ * 
+ * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2");
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":759
+ * 
+ * cdef inline object PyArray_MultiIterNew2(a, b):
+ *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object PyArray_MultiIterNew3(a, b, c):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2");
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":761
+ *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
+ * 
+ * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3");
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":762
+ * 
+ * cdef inline object PyArray_MultiIterNew3(a, b, c):
+ *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3");
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":764
+ *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
+ * 
+ * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
+ * 
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4");
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":765
+ * 
+ * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
+ *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4");
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":244
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":767
+ *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
+ * 
+ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
+ *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
  * 
- *         def __releasebuffer__(ndarray self, Py_buffer* info):
- *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
- *                 stdlib.free(info.format)
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- */
-  __pyx_t_1 = PyArray_HASFIELDS(((PyArrayObject *)__pyx_v_self));
-  if (__pyx_t_1) {
-
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":245
- *         def __releasebuffer__(ndarray self, Py_buffer* info):
- *             if PyArray_HASFIELDS(self):
- *                 stdlib.free(info.format)             # <<<<<<<<<<<<<<
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- *                 stdlib.free(info.strides)
  */
-    free(__pyx_v_info->format);
-    goto __pyx_L5;
-  }
-  __pyx_L5:;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":246
- *             if PyArray_HASFIELDS(self):
- *                 stdlib.free(info.format)
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
- *                 stdlib.free(info.strides)
- *                 # info.shape was stored after info.strides in the same block
- */
-  __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
-  if (__pyx_t_1) {
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) {
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5");
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":247
- *                 stdlib.free(info.format)
- *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
- *                 stdlib.free(info.strides)             # <<<<<<<<<<<<<<
- *                 # info.shape was stored after info.strides in the same block
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":768
+ * 
+ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
+ *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
  * 
+ * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:
  */
-    free(__pyx_v_info->strides);
-    goto __pyx_L6;
-  }
-  __pyx_L6:;
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  __Pyx_FinishRefcountContext();
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5");
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
 }
 
-/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":690
- * ctypedef npy_cdouble     complex_t
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":770
+ *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
  * 
  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
  *     # Recursive utility function used in __getbuffer__ to get format
  *     # string. The new location in the format string is returned.
  */
 
-static INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) {
+static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) {
   PyArray_Descr *__pyx_v_child;
   int __pyx_v_endian_detector;
   int __pyx_v_little_endian;
@@ -17829,9 +18712,6 @@
   PyObject *__pyx_v_new_offset;
   PyObject *__pyx_v_t;
   char *__pyx_r;
-  PyObject *__pyx_1 = 0;
-  PyObject *__pyx_2 = 0;
-  PyObject *__pyx_3 = 0;
   Py_ssize_t __pyx_t_1;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
@@ -17840,15 +18720,17 @@
   int __pyx_t_6;
   int __pyx_t_7;
   int __pyx_t_8;
-  char *__pyx_t_9;
-  __Pyx_SetupRefcountContext("_util_dtypestring");
+  int __pyx_t_9;
+  char *__pyx_t_10;
+  __Pyx_RefNannySetupContext("_util_dtypestring");
+  __Pyx_INCREF((PyObject *)__pyx_v_descr);
   __pyx_v_child = ((PyArray_Descr *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_fields = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_childname = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_new_offset = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_t = Py_None; __Pyx_INCREF(Py_None);
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":697
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":777
  *     cdef int delta_offset
  *     cdef tuple i
  *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
@@ -17857,7 +18739,7 @@
  */
   __pyx_v_endian_detector = 1;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":698
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":778
  *     cdef tuple i
  *     cdef int endian_detector = 1
  *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
@@ -17866,7 +18748,7 @@
  */
   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":701
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":781
  *     cdef tuple fields
  * 
  *     for childname in descr.names:             # <<<<<<<<<<<<<<
@@ -17876,7 +18758,7 @@
   if (likely(((PyObject *)__pyx_v_descr->names) != Py_None)) {
     __pyx_t_1 = 0; __pyx_t_2 = ((PyObject *)__pyx_v_descr->names); __Pyx_INCREF(__pyx_t_2);
   } else {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   for (;;) {
     if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
@@ -17885,21 +18767,21 @@
     __pyx_v_childname = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":702
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":782
  * 
  *     for childname in descr.names:
  *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
  *         child, new_offset = fields
  * 
  */
-    __pyx_1 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_1);
-    if (!(likely(PyTuple_CheckExact(__pyx_1)) || (__pyx_1) == Py_None || (PyErr_Format(PyExc_TypeError, "Expected tuple, got %s", Py_TYPE(__pyx_1)->tp_name), 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (!__pyx_t_3) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(((PyObject *)__pyx_v_fields));
-    __pyx_v_fields = ((PyObject *)__pyx_1);
-    __pyx_1 = 0;
+    __pyx_v_fields = ((PyObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":703
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":783
  *     for childname in descr.names:
  *         fields = descr.fields[childname]
  *         child, new_offset = fields             # <<<<<<<<<<<<<<
@@ -17908,122 +18790,125 @@
  */
     if (likely(((PyObject *)__pyx_v_fields) != Py_None) && likely(PyTuple_GET_SIZE(((PyObject *)__pyx_v_fields)) == 2)) {
       PyObject* tuple = ((PyObject *)__pyx_v_fields);
-      __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
-      if (!(__Pyx_TypeTest(__pyx_2, __pyx_ptype_5numpy_dtype))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
+      __pyx_t_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_3);
+      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_4);
       __Pyx_DECREF(((PyObject *)__pyx_v_child));
-      __pyx_v_child = ((PyArray_Descr *)__pyx_2);
-      __pyx_2 = 0;
+      __pyx_v_child = ((PyArray_Descr *)__pyx_t_3);
+      __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_v_new_offset);
-      __pyx_v_new_offset = __pyx_3;
-      __pyx_3 = 0;
+      __pyx_v_new_offset = __pyx_t_4;
+      __pyx_t_4 = 0;
     } else {
       __Pyx_UnpackTupleError(((PyObject *)__pyx_v_fields), 2);
-      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[7]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":705
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":785
  *         child, new_offset = fields
  * 
  *         if (end - f) - (new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
- *             raise RuntimeError("Format string allocated too short, see comment in numpy.pxd")
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
  * 
  */
-    __pyx_t_3 = PyInt_FromLong((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyInt_FromLong((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_int_15, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_15, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_6) {
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":706
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":786
  * 
  *         if (end - f) - (new_offset - offset[0]) < 15:
- *             raise RuntimeError("Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
  * 
  *         if ((child.byteorder == '>' and little_endian) or
  */
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
-      __Pyx_INCREF(__pyx_kp_25);
-      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_25);
-      __Pyx_GIVEREF(__pyx_kp_25);
-      __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
-      __Pyx_Raise(__pyx_t_4, 0, 0);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_INCREF(((PyObject *)__pyx_kp_u_7));
+      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_7));
+      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_7));
+      __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_Raise(__pyx_t_3, 0, 0);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      {__pyx_filename = __pyx_f[7]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L5;
     }
     __pyx_L5:;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":708
- *             raise RuntimeError("Format string allocated too short, see comment in numpy.pxd")
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":788
+ *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
  * 
  *         if ((child.byteorder == '>' and little_endian) or             # <<<<<<<<<<<<<<
  *             (child.byteorder == '<' and not little_endian)):
- *             raise ValueError("Non-native byte order not supported")
+ *             raise ValueError(u"Non-native byte order not supported")
  */
-    if ((__pyx_v_child->byteorder == '>')) {
-      __pyx_t_6 = __pyx_v_little_endian;
+    __pyx_t_6 = (__pyx_v_child->byteorder == '>');
+    if (__pyx_t_6) {
+      __pyx_t_7 = __pyx_v_little_endian;
     } else {
-      __pyx_t_6 = (__pyx_v_child->byteorder == '>');
+      __pyx_t_7 = __pyx_t_6;
     }
-    if (!__pyx_t_6) {
+    if (!__pyx_t_7) {
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":709
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":789
  * 
  *         if ((child.byteorder == '>' and little_endian) or
  *             (child.byteorder == '<' and not little_endian)):             # <<<<<<<<<<<<<<
- *             raise ValueError("Non-native byte order not supported")
+ *             raise ValueError(u"Non-native byte order not supported")
  *             # One could encode it in the format string and have Cython
  */
-      if ((__pyx_v_child->byteorder == '<')) {
-        __pyx_t_7 = (!__pyx_v_little_endian);
+      __pyx_t_6 = (__pyx_v_child->byteorder == '<');
+      if (__pyx_t_6) {
+        __pyx_t_8 = (!__pyx_v_little_endian);
+        __pyx_t_9 = __pyx_t_8;
       } else {
-        __pyx_t_7 = (__pyx_v_child->byteorder == '<');
+        __pyx_t_9 = __pyx_t_6;
       }
-      __pyx_t_8 = __pyx_t_7;
+      __pyx_t_6 = __pyx_t_9;
     } else {
-      __pyx_t_8 = __pyx_t_6;
+      __pyx_t_6 = __pyx_t_7;
     }
-    if (__pyx_t_8) {
+    if (__pyx_t_6) {
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":710
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":790
  *         if ((child.byteorder == '>' and little_endian) or
  *             (child.byteorder == '<' and not little_endian)):
- *             raise ValueError("Non-native byte order not supported")             # <<<<<<<<<<<<<<
+ *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
  *             # One could encode it in the format string and have Cython
  *             # complain instead, BUT: < and > in format strings also imply
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
-      __Pyx_INCREF(__pyx_kp_28);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_28);
-      __Pyx_GIVEREF(__pyx_kp_28);
-      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_INCREF(((PyObject *)__pyx_kp_u_5));
+      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_5));
+      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_5));
+      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_Raise(__pyx_t_5, 0, 0);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[7]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L6;
     }
     __pyx_L6:;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":720
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":800
  * 
  *         # Output padding bytes
  *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
@@ -18031,16 +18916,16 @@
  *             f += 1
  */
     while (1) {
-      __pyx_t_5 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (!__pyx_t_8) break;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (!__pyx_t_6) break;
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":721
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":801
  *         # Output padding bytes
  *         while offset[0] < new_offset:
  *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
@@ -18049,7 +18934,7 @@
  */
       (__pyx_v_f[0]) = 120;
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":722
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":802
  *         while offset[0] < new_offset:
  *             f[0] = 120 # "x"; pad byte
  *             f += 1             # <<<<<<<<<<<<<<
@@ -18058,7 +18943,7 @@
  */
       __pyx_v_f += 1;
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":723
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":803
  *             f[0] = 120 # "x"; pad byte
  *             f += 1
  *             offset[0] += 1             # <<<<<<<<<<<<<<
@@ -18068,7 +18953,7 @@
       (__pyx_v_offset[0]) += 1;
     }
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":725
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":805
  *             offset[0] += 1
  * 
  *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
@@ -18077,417 +18962,417 @@
  */
     (__pyx_v_offset[0]) += __pyx_v_child->elsize;
 
-    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":727
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":807
  *         offset[0] += child.itemsize
  * 
  *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
  *             t = child.type_num
  *             if end - f < 5:
  */
-    __pyx_t_8 = (!PyDataType_HASFIELDS(__pyx_v_child));
-    if (__pyx_t_8) {
+    __pyx_t_6 = (!PyDataType_HASFIELDS(__pyx_v_child));
+    if (__pyx_t_6) {
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":728
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":808
  * 
  *         if not PyDataType_HASFIELDS(child):
  *             t = child.type_num             # <<<<<<<<<<<<<<
  *             if end - f < 5:
- *                 raise RuntimeError("Format string allocated too short.")
+ *                 raise RuntimeError(u"Format string allocated too short.")
  */
-      __pyx_t_4 = PyInt_FromLong(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyInt_FromLong(__pyx_v_child->type_num); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_v_t);
-      __pyx_v_t = __pyx_t_4;
-      __pyx_t_4 = 0;
+      __pyx_v_t = __pyx_t_3;
+      __pyx_t_3 = 0;
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":729
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":809
  *         if not PyDataType_HASFIELDS(child):
  *             t = child.type_num
  *             if end - f < 5:             # <<<<<<<<<<<<<<
- *                 raise RuntimeError("Format string allocated too short.")
+ *                 raise RuntimeError(u"Format string allocated too short.")
  * 
  */
-      __pyx_t_8 = ((__pyx_v_end - __pyx_v_f) < 5);
-      if (__pyx_t_8) {
+      __pyx_t_6 = ((__pyx_v_end - __pyx_v_f) < 5);
+      if (__pyx_t_6) {
 
-        /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":730
+        /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":810
  *             t = child.type_num
  *             if end - f < 5:
- *                 raise RuntimeError("Format string allocated too short.")             # <<<<<<<<<<<<<<
+ *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
  * 
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  */
-        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(((PyObject *)__pyx_t_4));
-        __Pyx_INCREF(__pyx_kp_29);
-        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_29);
-        __Pyx_GIVEREF(__pyx_kp_29);
-        __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(((PyObject *)__pyx_kp_u_8));
+        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_8));
+        __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_8));
+        __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_Raise(__pyx_t_5, 0, 0);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[7]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         goto __pyx_L10;
       }
       __pyx_L10:;
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":733
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":813
  * 
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_8) {
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 98;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":734
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":814
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (__pyx_t_8) {
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 66;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":735
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":815
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_8) {
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 104;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":736
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":816
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (__pyx_t_8) {
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 72;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":737
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":817
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_8) {
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 105;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":738
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":818
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (__pyx_t_8) {
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 73;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":739
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":819
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_8) {
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 108;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":740
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":820
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (__pyx_t_8) {
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 76;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":741
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":821
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_8) {
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 113;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":742
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":822
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (__pyx_t_8) {
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 81;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":743
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":823
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_8) {
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 102;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":744
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":824
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (__pyx_t_8) {
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 100;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":745
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":825
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_8) {
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 103;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":746
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":826
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (__pyx_t_8) {
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 90;
         (__pyx_v_f[1]) = 102;
         __pyx_v_f += 1;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":747
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":827
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_8) {
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 90;
         (__pyx_v_f[1]) = 100;
         __pyx_v_f += 1;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":748
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":828
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  *             else:
  */
-      __pyx_t_4 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (__pyx_t_8) {
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 90;
         (__pyx_v_f[1]) = 103;
         __pyx_v_f += 1;
         goto __pyx_L11;
       }
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":749
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":829
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
  *             else:
- *                 raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
+ *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  */
-      __pyx_t_5 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (__pyx_t_8) {
+      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (__pyx_t_6) {
         (__pyx_v_f[0]) = 79;
         goto __pyx_L11;
       }
       /*else*/ {
 
-        /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":751
+        /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":831
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  *             else:
- *                 raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
+ *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
  *             f += 1
  *         else:
  */
-        __pyx_t_4 = PyNumber_Remainder(__pyx_kp_30, __pyx_v_t); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(((PyObject *)__pyx_t_5));
-        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
-        __Pyx_GIVEREF(__pyx_t_4);
-        __pyx_t_4 = 0;
-        __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
-        __Pyx_Raise(__pyx_t_4, 0, 0);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_6), __pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_5);
+        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
+        __Pyx_GIVEREF(__pyx_t_3);
+        __pyx_t_3 = 0;
+        __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_Raise(__pyx_t_3, 0, 0);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        {__pyx_filename = __pyx_f[7]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L11:;
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":752
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":832
  *             else:
- *                 raise ValueError("unknown dtype code in numpy.pxd (%d)" % t)
+ *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *             f += 1             # <<<<<<<<<<<<<<
  *         else:
  *             # Cython ignores struct boundary information ("T{...}"),
@@ -18497,25 +19382,26 @@
     }
     /*else*/ {
 
-      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":756
+      /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":836
  *             # Cython ignores struct boundary information ("T{...}"),
  *             # so don't output it
  *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
  *     return f
  * 
  */
-      __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_v_f = __pyx_t_9;
+      __pyx_t_10 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_v_f = __pyx_t_10;
     }
     __pyx_L9:;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":757
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":837
  *             # so don't output it
  *             f = _util_dtypestring(child, f, end, offset)
  *     return f             # <<<<<<<<<<<<<<
  * 
+ * 
  */
   __pyx_r = __pyx_v_f;
   goto __pyx_L0;
@@ -18523,9 +19409,6 @@
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
-  __Pyx_XDECREF(__pyx_2);
-  __Pyx_XDECREF(__pyx_3);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
@@ -18538,7 +19421,147 @@
   __Pyx_DECREF(__pyx_v_childname);
   __Pyx_DECREF(__pyx_v_new_offset);
   __Pyx_DECREF(__pyx_v_t);
-  __Pyx_FinishRefcountContext();
+  __Pyx_DECREF((PyObject *)__pyx_v_descr);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":952
+ * 
+ * 
+ * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
+ *      cdef PyObject* baseptr
+ *      if base is None:
+ */
+
+static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
+  PyObject *__pyx_v_baseptr;
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("set_array_base");
+  __Pyx_INCREF((PyObject *)__pyx_v_arr);
+  __Pyx_INCREF(__pyx_v_base);
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":954
+ * cdef inline void set_array_base(ndarray arr, object base):
+ *      cdef PyObject* baseptr
+ *      if base is None:             # <<<<<<<<<<<<<<
+ *          baseptr = NULL
+ *      else:
+ */
+  __pyx_t_1 = (__pyx_v_base == Py_None);
+  if (__pyx_t_1) {
+
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":955
+ *      cdef PyObject* baseptr
+ *      if base is None:
+ *          baseptr = NULL             # <<<<<<<<<<<<<<
+ *      else:
+ *          Py_INCREF(base) # important to do this before decref below!
+ */
+    __pyx_v_baseptr = NULL;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":957
+ *          baseptr = NULL
+ *      else:
+ *          Py_INCREF(base) # important to do this before decref below!             # <<<<<<<<<<<<<<
+ *          baseptr = <PyObject*>base
+ *      Py_XDECREF(arr.base)
+ */
+    Py_INCREF(__pyx_v_base);
+
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":958
+ *      else:
+ *          Py_INCREF(base) # important to do this before decref below!
+ *          baseptr = <PyObject*>base             # <<<<<<<<<<<<<<
+ *      Py_XDECREF(arr.base)
+ *      arr.base = baseptr
+ */
+    __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
+  }
+  __pyx_L3:;
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":959
+ *          Py_INCREF(base) # important to do this before decref below!
+ *          baseptr = <PyObject*>base
+ *      Py_XDECREF(arr.base)             # <<<<<<<<<<<<<<
+ *      arr.base = baseptr
+ * 
+ */
+  Py_XDECREF(__pyx_v_arr->base);
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":960
+ *          baseptr = <PyObject*>base
+ *      Py_XDECREF(arr.base)
+ *      arr.base = baseptr             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline object get_array_base(ndarray arr):
+ */
+  __pyx_v_arr->base = __pyx_v_baseptr;
+
+  __Pyx_DECREF((PyObject *)__pyx_v_arr);
+  __Pyx_DECREF(__pyx_v_base);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":962
+ *      arr.base = baseptr
+ * 
+ * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
+ *     if arr.base is NULL:
+ *         return None
+ */
+
+static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
+  PyObject *__pyx_r = NULL;
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("get_array_base");
+  __Pyx_INCREF((PyObject *)__pyx_v_arr);
+
+  /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":963
+ * 
+ * cdef inline object get_array_base(ndarray arr):
+ *     if arr.base is NULL:             # <<<<<<<<<<<<<<
+ *         return None
+ *     else:
+ */
+  __pyx_t_1 = (__pyx_v_arr->base == NULL);
+  if (__pyx_t_1) {
+
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":964
+ * cdef inline object get_array_base(ndarray arr):
+ *     if arr.base is NULL:
+ *         return None             # <<<<<<<<<<<<<<
+ *     else:
+ *         return <object>arr.base
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":966
+ *         return None
+ *     else:
+ *         return <object>arr.base             # <<<<<<<<<<<<<<
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
+    __pyx_r = ((PyObject *)__pyx_v_arr->base);
+    goto __pyx_L0;
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_DECREF((PyObject *)__pyx_v_arr);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
@@ -18709,6 +19732,10 @@
   0, /*tp_cache*/
   0, /*tp_subclasses*/
   0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
 };
 
 static PyObject *__pyx_tp_new_2yt_9amr_utils_OctreeGrid(PyTypeObject *t, PyObject *a, PyObject *k) {
@@ -18937,6 +19964,10 @@
   0, /*tp_cache*/
   0, /*tp_subclasses*/
   0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
 };
 
 static PyObject *__pyx_tp_new_2yt_9amr_utils_OctreeGridList(PyTypeObject *t, PyObject *a, PyObject *k) {
@@ -19136,6 +20167,10 @@
   0, /*tp_cache*/
   0, /*tp_subclasses*/
   0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
 };
 static struct __pyx_vtabstruct_2yt_9amr_utils_VectorPlane __pyx_vtable_2yt_9amr_utils_VectorPlane;
 
@@ -19374,6 +20409,10 @@
   0, /*tp_cache*/
   0, /*tp_subclasses*/
   0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
 };
 static struct __pyx_vtabstruct_2yt_9amr_utils_TransferFunctionProxy __pyx_vtable_2yt_9amr_utils_TransferFunctionProxy;
 
@@ -19419,6 +20458,7 @@
 };
 
 static struct PyMemberDef __pyx_members_2yt_9amr_utils_TransferFunctionProxy[] = {
+  {(char *)"ns", T_INT, offsetof(struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy, ns), 0, 0},
   {(char *)"tf_obj", T_OBJECT, offsetof(struct __pyx_obj_2yt_9amr_utils_TransferFunctionProxy, tf_obj), 0, 0},
   {0, 0, 0, 0, 0}
 };
@@ -19567,6 +20607,10 @@
   0, /*tp_cache*/
   0, /*tp_subclasses*/
   0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
 };
 static struct __pyx_vtabstruct_2yt_9amr_utils_PartitionedGrid __pyx_vtable_2yt_9amr_utils_PartitionedGrid;
 
@@ -19780,6 +20824,10 @@
   0, /*tp_cache*/
   0, /*tp_subclasses*/
   0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
 };
 static struct __pyx_vtabstruct_2yt_9amr_utils_GridFace __pyx_vtable_2yt_9amr_utils_GridFace;
 
@@ -19949,6 +20997,10 @@
   0, /*tp_cache*/
   0, /*tp_subclasses*/
   0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
 };
 static struct __pyx_vtabstruct_2yt_9amr_utils_ProtoPrism __pyx_vtable_2yt_9amr_utils_ProtoPrism;
 
@@ -20162,6 +21214,10 @@
   0, /*tp_cache*/
   0, /*tp_subclasses*/
   0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
 };
 
 static struct PyMethodDef __pyx_methods[] = {
@@ -20188,7 +21244,7 @@
 static struct PyModuleDef __pyx_moduledef = {
     PyModuleDef_HEAD_INIT,
     __Pyx_NAMESTR("amr_utils"),
-    __Pyx_DOCSTR(__pyx_mdoc), /* m_doc */
+    __Pyx_DOCSTR(__pyx_k_9), /* m_doc */
     -1, /* m_size */
     __pyx_methods /* m_methods */,
     NULL, /* m_reload */
@@ -20199,163 +21255,195 @@
 #endif
 
 static __Pyx_StringTabEntry __pyx_string_tab[] = {
-  {&__pyx_kp___main__, __pyx_k___main__, sizeof(__pyx_k___main__), 1, 1, 1},
-  {&__pyx_kp___cinit__, __pyx_k___cinit__, sizeof(__pyx_k___cinit__), 1, 1, 1},
-  {&__pyx_kp___getitem__, __pyx_k___getitem__, sizeof(__pyx_k___getitem__), 1, 1, 1},
-  {&__pyx_kp_cast_plane, __pyx_k_cast_plane, sizeof(__pyx_k_cast_plane), 1, 1, 1},
-  {&__pyx_kp___init__, __pyx_k___init__, sizeof(__pyx_k___init__), 1, 1, 1},
-  {&__pyx_kp_sweep, __pyx_k_sweep, sizeof(__pyx_k_sweep), 1, 1, 1},
-  {&__pyx_kp_get_brick, __pyx_k_get_brick, sizeof(__pyx_k_get_brick), 1, 1, 1},
-  {&__pyx_kp_child_indices, __pyx_k_child_indices, sizeof(__pyx_k_child_indices), 1, 1, 1},
-  {&__pyx_kp_fields, __pyx_k_fields, sizeof(__pyx_k_fields), 1, 1, 1},
-  {&__pyx_kp_left_edges, __pyx_k_left_edges, sizeof(__pyx_k_left_edges), 1, 1, 1},
-  {&__pyx_kp_dimensions, __pyx_k_dimensions, sizeof(__pyx_k_dimensions), 1, 1, 1},
-  {&__pyx_kp_dx, __pyx_k_dx, sizeof(__pyx_k_dx), 1, 1, 1},
-  {&__pyx_kp_level, __pyx_k_level, sizeof(__pyx_k_level), 1, 1, 1},
-  {&__pyx_kp_grids, __pyx_k_grids, sizeof(__pyx_k_grids), 1, 1, 1},
-  {&__pyx_kp_item, __pyx_k_item, sizeof(__pyx_k_item), 1, 1, 1},
-  {&__pyx_kp_i_i, __pyx_k_i_i, sizeof(__pyx_k_i_i), 1, 1, 1},
-  {&__pyx_kp_j_i, __pyx_k_j_i, sizeof(__pyx_k_j_i), 1, 1, 1},
-  {&__pyx_kp_k_i, __pyx_k_k_i, sizeof(__pyx_k_k_i), 1, 1, 1},
-  {&__pyx_kp_i_f, __pyx_k_i_f, sizeof(__pyx_k_i_f), 1, 1, 1},
-  {&__pyx_kp_j_f, __pyx_k_j_f, sizeof(__pyx_k_j_f), 1, 1, 1},
-  {&__pyx_kp_k_f, __pyx_k_k_f, sizeof(__pyx_k_k_f), 1, 1, 1},
-  {&__pyx_kp_curpos, __pyx_k_curpos, sizeof(__pyx_k_curpos), 1, 1, 1},
-  {&__pyx_kp_gi, __pyx_k_gi, sizeof(__pyx_k_gi), 1, 1, 1},
-  {&__pyx_kp_output, __pyx_k_output, sizeof(__pyx_k_output), 1, 1, 1},
-  {&__pyx_kp_refined, __pyx_k_refined, sizeof(__pyx_k_refined), 1, 1, 1},
-  {&__pyx_kp_genealogy, __pyx_k_genealogy, sizeof(__pyx_k_genealogy), 1, 1, 1},
-  {&__pyx_kp_corners, __pyx_k_corners, sizeof(__pyx_k_corners), 1, 1, 1},
-  {&__pyx_kp_table, __pyx_k_table, sizeof(__pyx_k_table), 1, 1, 1},
-  {&__pyx_kp_x_vals, __pyx_k_x_vals, sizeof(__pyx_k_x_vals), 1, 1, 1},
-  {&__pyx_kp_x_bins, __pyx_k_x_bins, sizeof(__pyx_k_x_bins), 1, 1, 1},
-  {&__pyx_kp_x_is, __pyx_k_x_is, sizeof(__pyx_k_x_is), 1, 1, 1},
-  {&__pyx_kp_y_vals, __pyx_k_y_vals, sizeof(__pyx_k_y_vals), 1, 1, 1},
-  {&__pyx_kp_y_bins, __pyx_k_y_bins, sizeof(__pyx_k_y_bins), 1, 1, 1},
-  {&__pyx_kp_y_is, __pyx_k_y_is, sizeof(__pyx_k_y_is), 1, 1, 1},
-  {&__pyx_kp_z_vals, __pyx_k_z_vals, sizeof(__pyx_k_z_vals), 1, 1, 1},
-  {&__pyx_kp_z_bins, __pyx_k_z_bins, sizeof(__pyx_k_z_bins), 1, 1, 1},
-  {&__pyx_kp_z_is, __pyx_k_z_is, sizeof(__pyx_k_z_is), 1, 1, 1},
-  {&__pyx_kp_points, __pyx_k_points, sizeof(__pyx_k_points), 1, 1, 1},
-  {&__pyx_kp_pmask, __pyx_k_pmask, sizeof(__pyx_k_pmask), 1, 1, 1},
-  {&__pyx_kp_left_edge, __pyx_k_left_edge, sizeof(__pyx_k_left_edge), 1, 1, 1},
-  {&__pyx_kp_right_edge, __pyx_k_right_edge, sizeof(__pyx_k_right_edge), 1, 1, 1},
-  {&__pyx_kp_mask, __pyx_k_mask, sizeof(__pyx_k_mask), 1, 1, 1},
-  {&__pyx_kp_i_s, __pyx_k_i_s, sizeof(__pyx_k_i_s), 1, 1, 1},
-  {&__pyx_kp_o_s, __pyx_k_o_s, sizeof(__pyx_k_o_s), 1, 1, 1},
-  {&__pyx_kp_e, __pyx_k_e, sizeof(__pyx_k_e), 1, 1, 1},
-  {&__pyx_kp_a, __pyx_k_a, sizeof(__pyx_k_a), 1, 1, 1},
-  {&__pyx_kp_imin, __pyx_k_imin, sizeof(__pyx_k_imin), 1, 1, 1},
-  {&__pyx_kp_imax, __pyx_k_imax, sizeof(__pyx_k_imax), 1, 1, 1},
-  {&__pyx_kp_jmin, __pyx_k_jmin, sizeof(__pyx_k_jmin), 1, 1, 1},
-  {&__pyx_kp_jmax, __pyx_k_jmax, sizeof(__pyx_k_jmax), 1, 1, 1},
-  {&__pyx_kp_kmin, __pyx_k_kmin, sizeof(__pyx_k_kmin), 1, 1, 1},
-  {&__pyx_kp_kmax, __pyx_k_kmax, sizeof(__pyx_k_kmax), 1, 1, 1},
-  {&__pyx_kp_istride, __pyx_k_istride, sizeof(__pyx_k_istride), 1, 1, 1},
-  {&__pyx_kp_jstride, __pyx_k_jstride, sizeof(__pyx_k_jstride), 1, 1, 1},
-  {&__pyx_kp_data, __pyx_k_data, sizeof(__pyx_k_data), 1, 1, 1},
-  {&__pyx_kp_shells, __pyx_k_shells, sizeof(__pyx_k_shells), 1, 1, 1},
-  {&__pyx_kp_grid_mask, __pyx_k_grid_mask, sizeof(__pyx_k_grid_mask), 1, 1, 1},
-  {&__pyx_kp_grid_t, __pyx_k_grid_t, sizeof(__pyx_k_grid_t), 1, 1, 1},
-  {&__pyx_kp_grid_dt, __pyx_k_grid_dt, sizeof(__pyx_k_grid_dt), 1, 1, 1},
-  {&__pyx_kp_u, __pyx_k_u, sizeof(__pyx_k_u), 1, 1, 1},
-  {&__pyx_kp_v, __pyx_k_v, sizeof(__pyx_k_v), 1, 1, 1},
-  {&__pyx_kp_ug, __pyx_k_ug, sizeof(__pyx_k_ug), 1, 1, 1},
-  {&__pyx_kp_image, __pyx_k_image, sizeof(__pyx_k_image), 1, 1, 1},
-  {&__pyx_kp_nshells, __pyx_k_nshells, sizeof(__pyx_k_nshells), 1, 1, 1},
-  {&__pyx_kp_ind, __pyx_k_ind, sizeof(__pyx_k_ind), 1, 1, 1},
-  {&__pyx_kp_tf_obj, __pyx_k_tf_obj, sizeof(__pyx_k_tf_obj), 1, 1, 1},
-  {&__pyx_kp_vp_pos, __pyx_k_vp_pos, sizeof(__pyx_k_vp_pos), 1, 1, 1},
-  {&__pyx_kp_vp_dir, __pyx_k_vp_dir, sizeof(__pyx_k_vp_dir), 1, 1, 1},
-  {&__pyx_kp_center, __pyx_k_center, sizeof(__pyx_k_center), 1, 1, 1},
-  {&__pyx_kp_bounds, __pyx_k_bounds, sizeof(__pyx_k_bounds), 1, 1, 1},
-  {&__pyx_kp_x_vec, __pyx_k_x_vec, sizeof(__pyx_k_x_vec), 1, 1, 1},
-  {&__pyx_kp_y_vec, __pyx_k_y_vec, sizeof(__pyx_k_y_vec), 1, 1, 1},
-  {&__pyx_kp_dims, __pyx_k_dims, sizeof(__pyx_k_dims), 1, 1, 1},
-  {&__pyx_kp_tf, __pyx_k_tf, sizeof(__pyx_k_tf), 1, 1, 1},
-  {&__pyx_kp_vp, __pyx_k_vp, sizeof(__pyx_k_vp), 1, 1, 1},
-  {&__pyx_kp_grid, __pyx_k_grid, sizeof(__pyx_k_grid), 1, 1, 1},
-  {&__pyx_kp_direction, __pyx_k_direction, sizeof(__pyx_k_direction), 1, 1, 1},
-  {&__pyx_kp_left, __pyx_k_left, sizeof(__pyx_k_left), 1, 1, 1},
-  {&__pyx_kp_subgrid_faces, __pyx_k_subgrid_faces, sizeof(__pyx_k_subgrid_faces), 1, 1, 1},
-  {&__pyx_kp_stack, __pyx_k_stack, sizeof(__pyx_k_stack), 1, 1, 1},
-  {&__pyx_kp_grid_left_edge, __pyx_k_grid_left_edge, sizeof(__pyx_k_grid_left_edge), 1, 1, 1},
-  {&__pyx_kp_grid_dds, __pyx_k_grid_dds, sizeof(__pyx_k_grid_dds), 1, 1, 1},
-  {&__pyx_kp_child_mask, __pyx_k_child_mask, sizeof(__pyx_k_child_mask), 1, 1, 1},
-  {&__pyx_kp_posx, __pyx_k_posx, sizeof(__pyx_k_posx), 1, 1, 1},
-  {&__pyx_kp_posy, __pyx_k_posy, sizeof(__pyx_k_posy), 1, 1, 1},
-  {&__pyx_kp_posz, __pyx_k_posz, sizeof(__pyx_k_posz), 1, 1, 1},
-  {&__pyx_kp_mass, __pyx_k_mass, sizeof(__pyx_k_mass), 1, 1, 1},
-  {&__pyx_kp_npositions, __pyx_k_npositions, sizeof(__pyx_k_npositions), 1, 1, 1},
-  {&__pyx_kp_field, __pyx_k_field, sizeof(__pyx_k_field), 1, 1, 1},
-  {&__pyx_kp_leftEdge, __pyx_k_leftEdge, sizeof(__pyx_k_leftEdge), 1, 1, 1},
-  {&__pyx_kp_gridDimension, __pyx_k_gridDimension, sizeof(__pyx_k_gridDimension), 1, 1, 1},
-  {&__pyx_kp_cellSize, __pyx_k_cellSize, sizeof(__pyx_k_cellSize), 1, 1, 1},
-  {&__pyx_kp_contour_ids, __pyx_k_contour_ids, sizeof(__pyx_k_contour_ids), 1, 1, 1},
-  {&__pyx_kp_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 1, 1, 1},
-  {&__pyx_kp_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 1, 1},
-  {&__pyx_kp_range, __pyx_k_range, sizeof(__pyx_k_range), 1, 1, 1},
-  {&__pyx_kp_31, __pyx_k_31, sizeof(__pyx_k_31), 1, 1, 1},
-  {&__pyx_kp_32, __pyx_k_32, sizeof(__pyx_k_32), 1, 1, 1},
-  {&__pyx_kp_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 1, 1, 1},
-  {&__pyx_kp_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 1, 1, 1},
-  {&__pyx_kp_33, __pyx_k_33, sizeof(__pyx_k_33), 0, 1, 0},
-  {&__pyx_kp_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 1, 1, 1},
-  {&__pyx_kp_empty, __pyx_k_empty, sizeof(__pyx_k_empty), 1, 1, 1},
-  {&__pyx_kp_34, __pyx_k_34, sizeof(__pyx_k_34), 0, 1, 0},
-  {&__pyx_kp_35, __pyx_k_35, sizeof(__pyx_k_35), 1, 1, 1},
-  {&__pyx_kp_36, __pyx_k_36, sizeof(__pyx_k_36), 1, 1, 1},
-  {&__pyx_kp_floor, __pyx_k_floor, sizeof(__pyx_k_floor), 1, 1, 1},
-  {&__pyx_kp_integrate_ray, __pyx_k_integrate_ray, sizeof(__pyx_k_integrate_ray), 1, 1, 1},
-  {&__pyx_kp_red, __pyx_k_red, sizeof(__pyx_k_red), 1, 1, 1},
-  {&__pyx_kp_y, __pyx_k_y, sizeof(__pyx_k_y), 1, 1, 1},
-  {&__pyx_kp_green, __pyx_k_green, sizeof(__pyx_k_green), 1, 1, 1},
-  {&__pyx_kp_blue, __pyx_k_blue, sizeof(__pyx_k_blue), 1, 1, 1},
-  {&__pyx_kp_alpha, __pyx_k_alpha, sizeof(__pyx_k_alpha), 1, 1, 1},
-  {&__pyx_kp_x_bounds, __pyx_k_x_bounds, sizeof(__pyx_k_x_bounds), 1, 1, 1},
-  {&__pyx_kp_nbins, __pyx_k_nbins, sizeof(__pyx_k_nbins), 1, 1, 1},
-  {&__pyx_kp_light_color, __pyx_k_light_color, sizeof(__pyx_k_light_color), 1, 1, 1},
-  {&__pyx_kp_light_dir, __pyx_k_light_dir, sizeof(__pyx_k_light_dir), 1, 1, 1},
-  {&__pyx_kp_use_light, __pyx_k_use_light, sizeof(__pyx_k_use_light), 1, 1, 1},
-  {&__pyx_kp_LeftEdge, __pyx_k_LeftEdge, sizeof(__pyx_k_LeftEdge), 1, 1, 1},
-  {&__pyx_kp_RightEdge, __pyx_k_RightEdge, sizeof(__pyx_k_RightEdge), 1, 1, 1},
-  {&__pyx_kp_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 1, 1, 1},
-  {&__pyx_kp_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 1, 1, 1},
-  {&__pyx_kp_37, __pyx_k_37, sizeof(__pyx_k_37), 0, 1, 0},
-  {&__pyx_kp_append, __pyx_k_append, sizeof(__pyx_k_append), 1, 1, 1},
-  {&__pyx_kp___getbuffer__, __pyx_k___getbuffer__, sizeof(__pyx_k___getbuffer__), 1, 1, 1},
-  {&__pyx_kp___releasebuffer__, __pyx_k___releasebuffer__, sizeof(__pyx_k___releasebuffer__), 1, 1, 1},
-  {&__pyx_kp_info, __pyx_k_info, sizeof(__pyx_k_info), 1, 1, 1},
-  {&__pyx_kp_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 1, 1, 1},
-  {&__pyx_kp_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 1, 1, 1},
-  {&__pyx_kp_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 0},
-  {&__pyx_kp_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 0},
-  {&__pyx_kp_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 0},
-  {&__pyx_kp_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 0, 0},
-  {&__pyx_kp_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 0},
-  {&__pyx_kp_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 0, 0},
-  {&__pyx_kp_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 0, 0},
-  {&__pyx_kp_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 0, 0},
-  {0, 0, 0, 0, 0, 0}
+  {&__pyx_n_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 1},
+  {&__pyx_kp_u_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 1, 0, 0},
+  {&__pyx_kp_u_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 1, 0, 0},
+  {&__pyx_n_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 1},
+  {&__pyx_kp_u_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 1, 0, 0},
+  {&__pyx_kp_u_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 1, 0, 0},
+  {&__pyx_kp_u_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 1, 0, 0},
+  {&__pyx_kp_u_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 1, 0, 0},
+  {&__pyx_kp_u_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 1, 0, 0},
+  {&__pyx_kp_u_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 1, 0, 0},
+  {&__pyx_n_s__LeftEdge, __pyx_k__LeftEdge, sizeof(__pyx_k__LeftEdge), 0, 0, 1, 1},
+  {&__pyx_n_s__RightEdge, __pyx_k__RightEdge, sizeof(__pyx_k__RightEdge), 0, 0, 1, 1},
+  {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
+  {&__pyx_n_s__Transfer3D, __pyx_k__Transfer3D, sizeof(__pyx_k__Transfer3D), 0, 0, 1, 1},
+  {&__pyx_n_s__TransferShells, __pyx_k__TransferShells, sizeof(__pyx_k__TransferShells), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s__a, __pyx_k__a, sizeof(__pyx_k__a), 0, 0, 1, 1},
+  {&__pyx_n_s__acenter, __pyx_k__acenter, sizeof(__pyx_k__acenter), 0, 0, 1, 1},
+  {&__pyx_n_s__aimage, __pyx_k__aimage, sizeof(__pyx_k__aimage), 0, 0, 1, 1},
+  {&__pyx_n_s__alpha, __pyx_k__alpha, sizeof(__pyx_k__alpha), 0, 0, 1, 1},
+  {&__pyx_n_s__avp_dir, __pyx_k__avp_dir, sizeof(__pyx_k__avp_dir), 0, 0, 1, 1},
+  {&__pyx_n_s__avp_pos, __pyx_k__avp_pos, sizeof(__pyx_k__avp_pos), 0, 0, 1, 1},
+  {&__pyx_n_s__ax_vec, __pyx_k__ax_vec, sizeof(__pyx_k__ax_vec), 0, 0, 1, 1},
+  {&__pyx_n_s__ay_vec, __pyx_k__ay_vec, sizeof(__pyx_k__ay_vec), 0, 0, 1, 1},
+  {&__pyx_n_s__base, __pyx_k__base, sizeof(__pyx_k__base), 0, 0, 1, 1},
+  {&__pyx_n_s__blue, __pyx_k__blue, sizeof(__pyx_k__blue), 0, 0, 1, 1},
+  {&__pyx_n_s__bounds, __pyx_k__bounds, sizeof(__pyx_k__bounds), 0, 0, 1, 1},
+  {&__pyx_n_s__buf, __pyx_k__buf, sizeof(__pyx_k__buf), 0, 0, 1, 1},
+  {&__pyx_n_s__byteorder, __pyx_k__byteorder, sizeof(__pyx_k__byteorder), 0, 0, 1, 1},
+  {&__pyx_n_s__calculate_extent, __pyx_k__calculate_extent, sizeof(__pyx_k__calculate_extent), 0, 0, 1, 1},
+  {&__pyx_n_s__cellSize, __pyx_k__cellSize, sizeof(__pyx_k__cellSize), 0, 0, 1, 1},
+  {&__pyx_n_s__center, __pyx_k__center, sizeof(__pyx_k__center), 0, 0, 1, 1},
+  {&__pyx_n_s__child_indices, __pyx_k__child_indices, sizeof(__pyx_k__child_indices), 0, 0, 1, 1},
+  {&__pyx_n_s__child_mask, __pyx_k__child_mask, sizeof(__pyx_k__child_mask), 0, 0, 1, 1},
+  {&__pyx_n_s__coord, __pyx_k__coord, sizeof(__pyx_k__coord), 0, 0, 1, 1},
+  {&__pyx_n_s__copy, __pyx_k__copy, sizeof(__pyx_k__copy), 0, 0, 1, 1},
+  {&__pyx_n_s__copy_back, __pyx_k__copy_back, sizeof(__pyx_k__copy_back), 0, 0, 1, 1},
+  {&__pyx_n_s__copy_into, __pyx_k__copy_into, sizeof(__pyx_k__copy_into), 0, 0, 1, 1},
+  {&__pyx_n_s__corners, __pyx_k__corners, sizeof(__pyx_k__corners), 0, 0, 1, 1},
+  {&__pyx_n_s__curpos, __pyx_k__curpos, sizeof(__pyx_k__curpos), 0, 0, 1, 1},
+  {&__pyx_n_s__data, __pyx_k__data, sizeof(__pyx_k__data), 0, 0, 1, 1},
+  {&__pyx_n_s__dbin, __pyx_k__dbin, sizeof(__pyx_k__dbin), 0, 0, 1, 1},
+  {&__pyx_n_s__dds, __pyx_k__dds, sizeof(__pyx_k__dds), 0, 0, 1, 1},
+  {&__pyx_n_s__descr, __pyx_k__descr, sizeof(__pyx_k__descr), 0, 0, 1, 1},
+  {&__pyx_n_s__dimensions, __pyx_k__dimensions, sizeof(__pyx_k__dimensions), 0, 0, 1, 1},
+  {&__pyx_n_s__dims, __pyx_k__dims, sizeof(__pyx_k__dims), 0, 0, 1, 1},
+  {&__pyx_n_s__direction, __pyx_k__direction, sizeof(__pyx_k__direction), 0, 0, 1, 1},
+  {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1},
+  {&__pyx_n_s__dx, __pyx_k__dx, sizeof(__pyx_k__dx), 0, 0, 1, 1},
+  {&__pyx_n_s__e, __pyx_k__e, sizeof(__pyx_k__e), 0, 0, 1, 1},
+  {&__pyx_n_s__empty, __pyx_k__empty, sizeof(__pyx_k__empty), 0, 0, 1, 1},
+  {&__pyx_n_s__eval_transfer, __pyx_k__eval_transfer, sizeof(__pyx_k__eval_transfer), 0, 0, 1, 1},
+  {&__pyx_n_s__field, __pyx_k__field, sizeof(__pyx_k__field), 0, 0, 1, 1},
+  {&__pyx_n_s__fields, __pyx_k__fields, sizeof(__pyx_k__fields), 0, 0, 1, 1},
+  {&__pyx_n_s__float64, __pyx_k__float64, sizeof(__pyx_k__float64), 0, 0, 1, 1},
+  {&__pyx_n_s__floor, __pyx_k__floor, sizeof(__pyx_k__floor), 0, 0, 1, 1},
+  {&__pyx_n_s__format, __pyx_k__format, sizeof(__pyx_k__format), 0, 0, 1, 1},
+  {&__pyx_n_s__genealogy, __pyx_k__genealogy, sizeof(__pyx_k__genealogy), 0, 0, 1, 1},
+  {&__pyx_n_s__get_start_stop, __pyx_k__get_start_stop, sizeof(__pyx_k__get_start_stop), 0, 0, 1, 1},
+  {&__pyx_n_s__gi, __pyx_k__gi, sizeof(__pyx_k__gi), 0, 0, 1, 1},
+  {&__pyx_n_s__green, __pyx_k__green, sizeof(__pyx_k__green), 0, 0, 1, 1},
+  {&__pyx_n_s__grid, __pyx_k__grid, sizeof(__pyx_k__grid), 0, 0, 1, 1},
+  {&__pyx_n_s__gridDimension, __pyx_k__gridDimension, sizeof(__pyx_k__gridDimension), 0, 0, 1, 1},
+  {&__pyx_n_s__grid_dds, __pyx_k__grid_dds, sizeof(__pyx_k__grid_dds), 0, 0, 1, 1},
+  {&__pyx_n_s__grid_dt, __pyx_k__grid_dt, sizeof(__pyx_k__grid_dt), 0, 0, 1, 1},
+  {&__pyx_n_s__grid_left_edge, __pyx_k__grid_left_edge, sizeof(__pyx_k__grid_left_edge), 0, 0, 1, 1},
+  {&__pyx_n_s__grid_mask, __pyx_k__grid_mask, sizeof(__pyx_k__grid_mask), 0, 0, 1, 1},
+  {&__pyx_n_s__grid_t, __pyx_k__grid_t, sizeof(__pyx_k__grid_t), 0, 0, 1, 1},
+  {&__pyx_n_s__grids, __pyx_k__grids, sizeof(__pyx_k__grids), 0, 0, 1, 1},
+  {&__pyx_n_s__i_f, __pyx_k__i_f, sizeof(__pyx_k__i_f), 0, 0, 1, 1},
+  {&__pyx_n_s__i_i, __pyx_k__i_i, sizeof(__pyx_k__i_i), 0, 0, 1, 1},
+  {&__pyx_n_s__i_s, __pyx_k__i_s, sizeof(__pyx_k__i_s), 0, 0, 1, 1},
+  {&__pyx_n_s__image, __pyx_k__image, sizeof(__pyx_k__image), 0, 0, 1, 1},
+  {&__pyx_n_s__imax, __pyx_k__imax, sizeof(__pyx_k__imax), 0, 0, 1, 1},
+  {&__pyx_n_s__imin, __pyx_k__imin, sizeof(__pyx_k__imin), 0, 0, 1, 1},
+  {&__pyx_n_s__ind, __pyx_k__ind, sizeof(__pyx_k__ind), 0, 0, 1, 1},
+  {&__pyx_n_s__int32, __pyx_k__int32, sizeof(__pyx_k__int32), 0, 0, 1, 1},
+  {&__pyx_n_s__int64, __pyx_k__int64, sizeof(__pyx_k__int64), 0, 0, 1, 1},
+  {&__pyx_n_s__int8, __pyx_k__int8, sizeof(__pyx_k__int8), 0, 0, 1, 1},
+  {&__pyx_n_s__integrate_ray, __pyx_k__integrate_ray, sizeof(__pyx_k__integrate_ray), 0, 0, 1, 1},
+  {&__pyx_n_s__istride, __pyx_k__istride, sizeof(__pyx_k__istride), 0, 0, 1, 1},
+  {&__pyx_n_s__itemsize, __pyx_k__itemsize, sizeof(__pyx_k__itemsize), 0, 0, 1, 1},
+  {&__pyx_n_s__j_f, __pyx_k__j_f, sizeof(__pyx_k__j_f), 0, 0, 1, 1},
+  {&__pyx_n_s__j_i, __pyx_k__j_i, sizeof(__pyx_k__j_i), 0, 0, 1, 1},
+  {&__pyx_n_s__jmax, __pyx_k__jmax, sizeof(__pyx_k__jmax), 0, 0, 1, 1},
+  {&__pyx_n_s__jmin, __pyx_k__jmin, sizeof(__pyx_k__jmin), 0, 0, 1, 1},
+  {&__pyx_n_s__jstride, __pyx_k__jstride, sizeof(__pyx_k__jstride), 0, 0, 1, 1},
+  {&__pyx_n_s__k_f, __pyx_k__k_f, sizeof(__pyx_k__k_f), 0, 0, 1, 1},
+  {&__pyx_n_s__k_i, __pyx_k__k_i, sizeof(__pyx_k__k_i), 0, 0, 1, 1},
+  {&__pyx_n_s__kmax, __pyx_k__kmax, sizeof(__pyx_k__kmax), 0, 0, 1, 1},
+  {&__pyx_n_s__kmin, __pyx_k__kmin, sizeof(__pyx_k__kmin), 0, 0, 1, 1},
+  {&__pyx_n_s__left, __pyx_k__left, sizeof(__pyx_k__left), 0, 0, 1, 1},
+  {&__pyx_n_s__leftEdge, __pyx_k__leftEdge, sizeof(__pyx_k__leftEdge), 0, 0, 1, 1},
+  {&__pyx_n_s__left_edge, __pyx_k__left_edge, sizeof(__pyx_k__left_edge), 0, 0, 1, 1},
+  {&__pyx_n_s__left_edges, __pyx_k__left_edges, sizeof(__pyx_k__left_edges), 0, 0, 1, 1},
+  {&__pyx_n_s__level, __pyx_k__level, sizeof(__pyx_k__level), 0, 0, 1, 1},
+  {&__pyx_n_s__light_color, __pyx_k__light_color, sizeof(__pyx_k__light_color), 0, 0, 1, 1},
+  {&__pyx_n_s__light_dir, __pyx_k__light_dir, sizeof(__pyx_k__light_dir), 0, 0, 1, 1},
+  {&__pyx_n_s__mask, __pyx_k__mask, sizeof(__pyx_k__mask), 0, 0, 1, 1},
+  {&__pyx_n_s__mass, __pyx_k__mass, sizeof(__pyx_k__mass), 0, 0, 1, 1},
+  {&__pyx_n_s__my_data, __pyx_k__my_data, sizeof(__pyx_k__my_data), 0, 0, 1, 1},
+  {&__pyx_n_s__names, __pyx_k__names, sizeof(__pyx_k__names), 0, 0, 1, 1},
+  {&__pyx_n_s__nbins, __pyx_k__nbins, sizeof(__pyx_k__nbins), 0, 0, 1, 1},
+  {&__pyx_n_s__ndim, __pyx_k__ndim, sizeof(__pyx_k__ndim), 0, 0, 1, 1},
+  {&__pyx_n_s__np, __pyx_k__np, sizeof(__pyx_k__np), 0, 0, 1, 1},
+  {&__pyx_n_s__npositions, __pyx_k__npositions, sizeof(__pyx_k__npositions), 0, 0, 1, 1},
+  {&__pyx_n_s__ns, __pyx_k__ns, sizeof(__pyx_k__ns), 0, 0, 1, 1},
+  {&__pyx_n_s__nshells, __pyx_k__nshells, sizeof(__pyx_k__nshells), 0, 0, 1, 1},
+  {&__pyx_n_s__numpy, __pyx_k__numpy, sizeof(__pyx_k__numpy), 0, 0, 1, 1},
+  {&__pyx_n_s__nv, __pyx_k__nv, sizeof(__pyx_k__nv), 0, 0, 1, 1},
+  {&__pyx_n_s__o_s, __pyx_k__o_s, sizeof(__pyx_k__o_s), 0, 0, 1, 1},
+  {&__pyx_n_s__obj, __pyx_k__obj, sizeof(__pyx_k__obj), 0, 0, 1, 1},
+  {&__pyx_n_s__output, __pyx_k__output, sizeof(__pyx_k__output), 0, 0, 1, 1},
+  {&__pyx_n_s__output_pos, __pyx_k__output_pos, sizeof(__pyx_k__output_pos), 0, 0, 1, 1},
+  {&__pyx_n_s__pdx, __pyx_k__pdx, sizeof(__pyx_k__pdx), 0, 0, 1, 1},
+  {&__pyx_n_s__pdy, __pyx_k__pdy, sizeof(__pyx_k__pdy), 0, 0, 1, 1},
+  {&__pyx_n_s__pmask, __pyx_k__pmask, sizeof(__pyx_k__pmask), 0, 0, 1, 1},
+  {&__pyx_n_s__points, __pyx_k__points, sizeof(__pyx_k__points), 0, 0, 1, 1},
+  {&__pyx_n_s__posx, __pyx_k__posx, sizeof(__pyx_k__posx), 0, 0, 1, 1},
+  {&__pyx_n_s__posy, __pyx_k__posy, sizeof(__pyx_k__posy), 0, 0, 1, 1},
+  {&__pyx_n_s__posz, __pyx_k__posz, sizeof(__pyx_k__posz), 0, 0, 1, 1},
+  {&__pyx_n_s__proj_overlap, __pyx_k__proj_overlap, sizeof(__pyx_k__proj_overlap), 0, 0, 1, 1},
+  {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
+  {&__pyx_n_s__readonly, __pyx_k__readonly, sizeof(__pyx_k__readonly), 0, 0, 1, 1},
+  {&__pyx_n_s__red, __pyx_k__red, sizeof(__pyx_k__red), 0, 0, 1, 1},
+  {&__pyx_n_s__refined, __pyx_k__refined, sizeof(__pyx_k__refined), 0, 0, 1, 1},
+  {&__pyx_n_s__refined_pos, __pyx_k__refined_pos, sizeof(__pyx_k__refined_pos), 0, 0, 1, 1},
+  {&__pyx_n_s__right_edge, __pyx_k__right_edge, sizeof(__pyx_k__right_edge), 0, 0, 1, 1},
+  {&__pyx_n_s__sample_values, __pyx_k__sample_values, sizeof(__pyx_k__sample_values), 0, 0, 1, 1},
+  {&__pyx_n_s__shape, __pyx_k__shape, sizeof(__pyx_k__shape), 0, 0, 1, 1},
+  {&__pyx_n_s__shells, __pyx_k__shells, sizeof(__pyx_k__shells), 0, 0, 1, 1},
+  {&__pyx_n_s__split, __pyx_k__split, sizeof(__pyx_k__split), 0, 0, 1, 1},
+  {&__pyx_n_s__stack, __pyx_k__stack, sizeof(__pyx_k__stack), 0, 0, 1, 1},
+  {&__pyx_n_s__strides, __pyx_k__strides, sizeof(__pyx_k__strides), 0, 0, 1, 1},
+  {&__pyx_n_s__subgrid_faces, __pyx_k__subgrid_faces, sizeof(__pyx_k__subgrid_faces), 0, 0, 1, 1},
+  {&__pyx_n_s__suboffsets, __pyx_k__suboffsets, sizeof(__pyx_k__suboffsets), 0, 0, 1, 1},
+  {&__pyx_n_s__sweep, __pyx_k__sweep, sizeof(__pyx_k__sweep), 0, 0, 1, 1},
+  {&__pyx_n_s__table, __pyx_k__table, sizeof(__pyx_k__table), 0, 0, 1, 1},
+  {&__pyx_n_s__tf, __pyx_k__tf, sizeof(__pyx_k__tf), 0, 0, 1, 1},
+  {&__pyx_n_s__tf_obj, __pyx_k__tf_obj, sizeof(__pyx_k__tf_obj), 0, 0, 1, 1},
+  {&__pyx_n_s__type_num, __pyx_k__type_num, sizeof(__pyx_k__type_num), 0, 0, 1, 1},
+  {&__pyx_n_s__u, __pyx_k__u, sizeof(__pyx_k__u), 0, 0, 1, 1},
+  {&__pyx_n_s__ug, __pyx_k__ug, sizeof(__pyx_k__ug), 0, 0, 1, 1},
+  {&__pyx_n_s__use_light, __pyx_k__use_light, sizeof(__pyx_k__use_light), 0, 0, 1, 1},
+  {&__pyx_n_s__v, __pyx_k__v, sizeof(__pyx_k__v), 0, 0, 1, 1},
+  {&__pyx_n_s__vp, __pyx_k__vp, sizeof(__pyx_k__vp), 0, 0, 1, 1},
+  {&__pyx_n_s__vp_dir, __pyx_k__vp_dir, sizeof(__pyx_k__vp_dir), 0, 0, 1, 1},
+  {&__pyx_n_s__vp_pos, __pyx_k__vp_pos, sizeof(__pyx_k__vp_pos), 0, 0, 1, 1},
+  {&__pyx_n_s__vs, __pyx_k__vs, sizeof(__pyx_k__vs), 0, 0, 1, 1},
+  {&__pyx_n_s__x_bins, __pyx_k__x_bins, sizeof(__pyx_k__x_bins), 0, 0, 1, 1},
+  {&__pyx_n_s__x_bounds, __pyx_k__x_bounds, sizeof(__pyx_k__x_bounds), 0, 0, 1, 1},
+  {&__pyx_n_s__x_is, __pyx_k__x_is, sizeof(__pyx_k__x_is), 0, 0, 1, 1},
+  {&__pyx_n_s__x_vals, __pyx_k__x_vals, sizeof(__pyx_k__x_vals), 0, 0, 1, 1},
+  {&__pyx_n_s__x_vec, __pyx_k__x_vec, sizeof(__pyx_k__x_vec), 0, 0, 1, 1},
+  {&__pyx_n_s__xrange, __pyx_k__xrange, sizeof(__pyx_k__xrange), 0, 0, 1, 1},
+  {&__pyx_n_s__y, __pyx_k__y, sizeof(__pyx_k__y), 0, 0, 1, 1},
+  {&__pyx_n_s__y_bins, __pyx_k__y_bins, sizeof(__pyx_k__y_bins), 0, 0, 1, 1},
+  {&__pyx_n_s__y_is, __pyx_k__y_is, sizeof(__pyx_k__y_is), 0, 0, 1, 1},
+  {&__pyx_n_s__y_vals, __pyx_k__y_vals, sizeof(__pyx_k__y_vals), 0, 0, 1, 1},
+  {&__pyx_n_s__y_vec, __pyx_k__y_vec, sizeof(__pyx_k__y_vec), 0, 0, 1, 1},
+  {&__pyx_n_s__z_bins, __pyx_k__z_bins, sizeof(__pyx_k__z_bins), 0, 0, 1, 1},
+  {&__pyx_n_s__z_is, __pyx_k__z_is, sizeof(__pyx_k__z_is), 0, 0, 1, 1},
+  {&__pyx_n_s__z_vals, __pyx_k__z_vals, sizeof(__pyx_k__z_vals), 0, 0, 1, 1},
+  {&__pyx_n_s__zeros, __pyx_k__zeros, sizeof(__pyx_k__zeros), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
 };
 static int __Pyx_InitCachedBuiltins(void) {
-  __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_kp_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_kp_xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_kp_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_kp_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #else
+  __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   return 0;
   __pyx_L1_error:;
   return -1;
 }
 
 static int __Pyx_InitGlobals(void) {
-  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -20369,24 +21457,26 @@
 PyMODINIT_FUNC PyInit_amr_utils(void)
 #endif
 {
-  PyObject *__pyx_1 = 0;
-  __pyx_init_filenames();
-  #ifdef CYTHON_REFNANNY
-  void* __pyx_refchk = NULL;
-  __Pyx_Refnanny = __Pyx_ImportRefcountAPI("refnanny");
-  if (!__Pyx_Refnanny) {
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  #if CYTHON_REFNANNY
+  void* __pyx_refnanny = NULL;
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
       PyErr_Clear();
-      __Pyx_Refnanny = __Pyx_ImportRefcountAPI("Cython.Runtime.refnanny");
-      if (!__Pyx_Refnanny)
-          Py_FatalError("failed to import refnanny module");
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
   }
-  __pyx_refchk = __Pyx_Refnanny->NewContext("PyMODINIT_FUNC PyInit_amr_utils(void)", __LINE__, __FILE__);
+  __pyx_refnanny = __Pyx_RefNanny->SetupContext("PyMODINIT_FUNC PyInit_amr_utils(void)", __LINE__, __FILE__);
   #endif
-  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_init_filenames();
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   #if PY_MAJOR_VERSION < 3
-  __pyx_empty_bytes = PyString_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyString_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   #else
-  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   #endif
   /*--- Library function declarations ---*/
   /*--- Threads initialization code ---*/
@@ -20397,36 +21487,35 @@
   #endif
   /*--- Module creation code ---*/
   #if PY_MAJOR_VERSION < 3
-  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("amr_utils"), __pyx_methods, __pyx_mdoc, 0, PYTHON_API_VERSION);
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("amr_utils"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_9), 0, PYTHON_API_VERSION);
   #else
   __pyx_m = PyModule_Create(&__pyx_moduledef);
   #endif
-  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  if (!__pyx_m) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   #if PY_MAJOR_VERSION < 3
   Py_INCREF(__pyx_m);
   #endif
   __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME));
-  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  if (!__pyx_b) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_module_is_main_yt__amr_utils) {
-    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_kp___main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   }
-  /*--- Initialize various global constants etc. ---*/
-  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   /*--- Builtin init code ---*/
-  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_skip_dispatch = 0;
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   /*--- Global init code ---*/
   /*--- Function export code ---*/
   /*--- Type init code ---*/
-  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_position) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "position", (PyObject *)&__pyx_type_2yt_9amr_utils_position) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_position) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "position", (PyObject *)&__pyx_type_2yt_9amr_utils_position) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_2yt_9amr_utils_position = &__pyx_type_2yt_9amr_utils_position;
-  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_OctreeGrid) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "OctreeGrid", (PyObject *)&__pyx_type_2yt_9amr_utils_OctreeGrid) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_OctreeGrid) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "OctreeGrid", (PyObject *)&__pyx_type_2yt_9amr_utils_OctreeGrid) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_2yt_9amr_utils_OctreeGrid = &__pyx_type_2yt_9amr_utils_OctreeGrid;
-  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_OctreeGridList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "OctreeGridList", (PyObject *)&__pyx_type_2yt_9amr_utils_OctreeGridList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_OctreeGridList) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "OctreeGridList", (PyObject *)&__pyx_type_2yt_9amr_utils_OctreeGridList) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_2yt_9amr_utils_OctreeGridList = &__pyx_type_2yt_9amr_utils_OctreeGridList;
   __pyx_vtabptr_2yt_9amr_utils_VectorPlane = &__pyx_vtable_2yt_9amr_utils_VectorPlane;
   #if PY_MAJOR_VERSION >= 3
@@ -20438,9 +21527,9 @@
   *(void(**)(void))&__pyx_vtable_2yt_9amr_utils_VectorPlane.copy_into = (void(*)(void))__pyx_f_2yt_9amr_utils_11VectorPlane_copy_into;
   *(void(**)(void))&__pyx_vtable_2yt_9amr_utils_VectorPlane.copy_back = (void(*)(void))__pyx_f_2yt_9amr_utils_11VectorPlane_copy_back;
   #endif
-  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_VectorPlane) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_VectorPlane.tp_dict, __pyx_vtabptr_2yt_9amr_utils_VectorPlane) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "VectorPlane", (PyObject *)&__pyx_type_2yt_9amr_utils_VectorPlane) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_VectorPlane) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_VectorPlane.tp_dict, __pyx_vtabptr_2yt_9amr_utils_VectorPlane) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "VectorPlane", (PyObject *)&__pyx_type_2yt_9amr_utils_VectorPlane) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_2yt_9amr_utils_VectorPlane = &__pyx_type_2yt_9amr_utils_VectorPlane;
   __pyx_vtabptr_2yt_9amr_utils_TransferFunctionProxy = &__pyx_vtable_2yt_9amr_utils_TransferFunctionProxy;
   #if PY_MAJOR_VERSION >= 3
@@ -20448,9 +21537,9 @@
   #else
   *(void(**)(void))&__pyx_vtable_2yt_9amr_utils_TransferFunctionProxy.eval_transfer = (void(*)(void))__pyx_f_2yt_9amr_utils_21TransferFunctionProxy_eval_transfer;
   #endif
-  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_TransferFunctionProxy) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_TransferFunctionProxy.tp_dict, __pyx_vtabptr_2yt_9amr_utils_TransferFunctionProxy) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "TransferFunctionProxy", (PyObject *)&__pyx_type_2yt_9amr_utils_TransferFunctionProxy) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_TransferFunctionProxy) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_TransferFunctionProxy.tp_dict, __pyx_vtabptr_2yt_9amr_utils_TransferFunctionProxy) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TransferFunctionProxy", (PyObject *)&__pyx_type_2yt_9amr_utils_TransferFunctionProxy) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_2yt_9amr_utils_TransferFunctionProxy = &__pyx_type_2yt_9amr_utils_TransferFunctionProxy;
   __pyx_vtabptr_2yt_9amr_utils_PartitionedGrid = &__pyx_vtable_2yt_9amr_utils_PartitionedGrid;
   #if PY_MAJOR_VERSION >= 3
@@ -20462,9 +21551,9 @@
   *(void(**)(void))&__pyx_vtable_2yt_9amr_utils_PartitionedGrid.integrate_ray = (void(*)(void))__pyx_f_2yt_9amr_utils_15PartitionedGrid_integrate_ray;
   *(void(**)(void))&__pyx_vtable_2yt_9amr_utils_PartitionedGrid.sample_values = (void(*)(void))__pyx_f_2yt_9amr_utils_15PartitionedGrid_sample_values;
   #endif
-  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_PartitionedGrid) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_PartitionedGrid.tp_dict, __pyx_vtabptr_2yt_9amr_utils_PartitionedGrid) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "PartitionedGrid", (PyObject *)&__pyx_type_2yt_9amr_utils_PartitionedGrid) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_PartitionedGrid) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_PartitionedGrid.tp_dict, __pyx_vtabptr_2yt_9amr_utils_PartitionedGrid) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PartitionedGrid", (PyObject *)&__pyx_type_2yt_9amr_utils_PartitionedGrid) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_2yt_9amr_utils_PartitionedGrid = &__pyx_type_2yt_9amr_utils_PartitionedGrid;
   __pyx_vtabptr_2yt_9amr_utils_GridFace = &__pyx_vtable_2yt_9amr_utils_GridFace;
   #if PY_MAJOR_VERSION >= 3
@@ -20472,9 +21561,9 @@
   #else
   *(void(**)(void))&__pyx_vtable_2yt_9amr_utils_GridFace.proj_overlap = (void(*)(void))__pyx_f_2yt_9amr_utils_8GridFace_proj_overlap;
   #endif
-  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_GridFace) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_GridFace.tp_dict, __pyx_vtabptr_2yt_9amr_utils_GridFace) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "GridFace", (PyObject *)&__pyx_type_2yt_9amr_utils_GridFace) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_GridFace) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_GridFace.tp_dict, __pyx_vtabptr_2yt_9amr_utils_GridFace) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "GridFace", (PyObject *)&__pyx_type_2yt_9amr_utils_GridFace) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_2yt_9amr_utils_GridFace = &__pyx_type_2yt_9amr_utils_GridFace;
   __pyx_vtabptr_2yt_9amr_utils_ProtoPrism = &__pyx_vtable_2yt_9amr_utils_ProtoPrism;
   #if PY_MAJOR_VERSION >= 3
@@ -20482,15 +21571,16 @@
   #else
   *(void(**)(void))&__pyx_vtable_2yt_9amr_utils_ProtoPrism.split = (void(*)(void))__pyx_f_2yt_9amr_utils_10ProtoPrism_split;
   #endif
-  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_ProtoPrism) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_ProtoPrism.tp_dict, __pyx_vtabptr_2yt_9amr_utils_ProtoPrism) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "ProtoPrism", (PyObject *)&__pyx_type_2yt_9amr_utils_ProtoPrism) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_2yt_9amr_utils_ProtoPrism) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_2yt_9amr_utils_ProtoPrism.tp_dict, __pyx_vtabptr_2yt_9amr_utils_ProtoPrism) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "ProtoPrism", (PyObject *)&__pyx_type_2yt_9amr_utils_ProtoPrism) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_2yt_9amr_utils_ProtoPrism = &__pyx_type_2yt_9amr_utils_ProtoPrism;
   /*--- Type import code ---*/
-  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr)); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject)); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject)); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject)); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   /*--- Function import code ---*/
   /*--- Execution code ---*/
 
@@ -20501,10 +21591,10 @@
  * cimport numpy as np
  * cimport cython
  */
-  __pyx_1 = __Pyx_Import(__pyx_kp_numpy, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/DepthFirstOctree.pyx":26
  * """
@@ -20513,20 +21603,20 @@
  * cimport numpy as np
  * cimport cython
  */
-  __pyx_1 = __Pyx_Import(__pyx_kp_numpy, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/Interpolators.pyx":1
  * """             # <<<<<<<<<<<<<<
  * Simple interpolators
  * 
  */
-  __pyx_1 = __Pyx_Import(__pyx_kp_numpy, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/PointsInVolume.pyx":27
  * 
@@ -20535,10 +21625,10 @@
  * cimport numpy as np
  * cimport cython
  */
-  __pyx_1 = __Pyx_Import(__pyx_kp_numpy, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/RayIntegrators.pyx":26
  * """
@@ -20547,20 +21637,20 @@
  * cimport numpy as np
  * cimport cython
  */
-  __pyx_1 = __Pyx_Import(__pyx_kp_numpy, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/VolumeIntegrator.pyx":1
  * """             # <<<<<<<<<<<<<<
  * Simple integrators for the radiative transfer equation
  * 
  */
-  __pyx_1 = __Pyx_Import(__pyx_kp_numpy, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "/Users/matthewturk/Development/yt/trunk/yt/_amr_utils/ContourFinding.pyx":26
  * """
@@ -20569,10 +21659,34 @@
  * cimport numpy as np
  * cimport cython
  */
-  __pyx_1 = __Pyx_Import(__pyx_kp_numpy, 0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_1);
-  if (PyObject_SetAttr(__pyx_m, __pyx_kp_np, __pyx_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "/Users/matthewturk/Development/yt/trunk/yt/amr_utils.pyx":1
+ * """             # <<<<<<<<<<<<<<
+ * Container file to hold all our Cython routines.  This is to avoid problems with
+ * static linking.
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_2 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Transfer3D); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_2, "__doc__");
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_u_10), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__TransferShells); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = __Pyx_GetAttrString(__pyx_t_3, "__doc__");
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_u_11), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
 
   /* "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Cython/Includes/stdlib.pxd":2
  * 
@@ -20582,7 +21696,9 @@
  */
   goto __pyx_L0;
   __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_1);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
   if (__pyx_m) {
     __Pyx_AddTraceback("init yt.amr_utils");
     Py_DECREF(__pyx_m); __pyx_m = 0;
@@ -20590,7 +21706,7 @@
     PyErr_SetString(PyExc_ImportError, "init yt.amr_utils");
   }
   __pyx_L0:;
-  __Pyx_FinishRefcountContext();
+  __Pyx_RefNannyFinishContext();
   #if PY_MAJOR_VERSION < 3
   return;
   #else
@@ -20599,7 +21715,6 @@
 }
 
 static const char *__pyx_filenames[] = {
-  "amr_utils.pyx",
   "DepthFirstOctree.pyx",
   "PointsInVolume.pyx",
   "VolumeIntegrator.pyx",
@@ -20608,6 +21723,7 @@
   "CICDeposit.pyx",
   "ContourFinding.pyx",
   "numpy.pxd",
+  "amr_utils.pyx",
 };
 
 /* Runtime support code */
@@ -20646,7 +21762,7 @@
         func_name, more_or_less, num_expected, number, num_found);
 }
 
-static INLINE int __Pyx_CheckKeywordStrings(
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
     PyObject *kwdict,
     const char* function_name,
     int kw_allowed)
@@ -20772,7 +21888,7 @@
     return -1;
 }
 
-static INLINE int __Pyx_IsLittleEndian(void) {
+static CYTHON_INLINE int __Pyx_IsLittleEndian(void) {
   unsigned int n = 1;
   return *(unsigned char*)(&n) != 0;
 }
@@ -21169,7 +22285,7 @@
   }
 }
 
-static INLINE void __Pyx_ZeroBuffer(Py_buffer* buf) {
+static CYTHON_INLINE void __Pyx_ZeroBuffer(Py_buffer* buf) {
   buf->buf = NULL;
   buf->obj = NULL;
   buf->strides = __Pyx_zeros;
@@ -21210,33 +22326,16 @@
   return -1;
 }
 
-static INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
+static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
   if (info->buf == NULL) return;
   if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL;
   __Pyx_ReleaseBuffer(info);
 }
 
-static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
     PyObject *tmp_type, *tmp_value, *tmp_tb;
     PyThreadState *tstate = PyThreadState_GET();
 
-#if PY_MAJOR_VERSION >= 3
-    /* Note: this is a temporary work-around to prevent crashes in Python 3.0 */
-    if ((tstate->exc_type != NULL) & (tstate->exc_type != Py_None)) {
-        tmp_type = tstate->exc_type;
-        tmp_value = tstate->exc_value;
-        tmp_tb = tstate->exc_traceback;
-        PyErr_NormalizeException(&type, &value, &tb);
-        PyErr_NormalizeException(&tmp_type, &tmp_value, &tmp_tb);
-        tstate->exc_type = 0;
-        tstate->exc_value = 0;
-        tstate->exc_traceback = 0;
-        PyException_SetContext(value, tmp_value);
-        Py_DECREF(tmp_type);
-        Py_XDECREF(tmp_tb);
-    }
-#endif
-
     tmp_type = tstate->curexc_type;
     tmp_value = tstate->curexc_value;
     tmp_tb = tstate->curexc_traceback;
@@ -21248,7 +22347,7 @@
     Py_XDECREF(tmp_tb);
 }
 
-static INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
     PyThreadState *tstate = PyThreadState_GET();
     *type = tstate->curexc_type;
     *value = tstate->curexc_value;
@@ -21261,15 +22360,15 @@
 
 
 
-static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
-    if (!type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
         PyErr_Format(PyExc_SystemError, "Missing type object");
         return 0;
     }
-    if (obj == Py_None || PyObject_TypeCheck(obj, type))
+    if (likely(PyObject_TypeCheck(obj, type)))
         return 1;
-    PyErr_Format(PyExc_TypeError, "Cannot convert %s to %s",
-        Py_TYPE(obj)->tp_name, type->tp_name);
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
     return 0;
 }
 
@@ -21278,18 +22377,19 @@
      "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!");
 }
 
+
+static CYTHON_INLINE long __Pyx_mod_long(long a, long b) {
+    long r = a % b;
+    r += ((r != 0) & ((r ^ b) < 0)) * b;
+    return r;
+}
 static void __Pyx_RaiseBufferIndexError(int axis) {
   PyErr_Format(PyExc_IndexError,
      "Out of bounds on buffer access (axis %d)", axis);
 }
 
 
-
-static INLINE void __Pyx_RaiseNoneNotIterableError(void) {
-    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-}
-
-static INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
     PyErr_Format(PyExc_ValueError,
         #if PY_VERSION_HEX < 0x02050000
                  "need more than %d value%s to unpack", (int)index,
@@ -21299,10 +22399,38 @@
                  (index == 1) ? "" : "s");
 }
 
-static INLINE void __Pyx_RaiseTooManyValuesError(void) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(void) {
     PyErr_SetString(PyExc_ValueError, "too many values to unpack");
 }
 
+static PyObject *__Pyx_UnpackItem(PyObject *iter, Py_ssize_t index) {
+    PyObject *item;
+    if (!(item = PyIter_Next(iter))) {
+        if (!PyErr_Occurred()) {
+            __Pyx_RaiseNeedMoreValuesError(index);
+        }
+    }
+    return item;
+}
+
+static int __Pyx_EndUnpack(PyObject *iter) {
+    PyObject *item;
+    if ((item = PyIter_Next(iter))) {
+        Py_DECREF(item);
+        __Pyx_RaiseTooManyValuesError();
+        return -1;
+    }
+    else if (!PyErr_Occurred())
+        return 0;
+    else
+        return -1;
+}
+
+
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+}
+
 static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
     if (t == Py_None) {
       __Pyx_RaiseNoneNotIterableError();
@@ -21398,62 +22526,81 @@
     return result;
 }
 
-static INLINE PyObject *__Pyx_PyInt_to_py_npy_intp(npy_intp val) {
-  /**/ if (sizeof(npy_intp) <  sizeof(long))
-      return PyInt_FromLong((long)val);
-  else if (sizeof(npy_intp) == sizeof(long))
-     return (((npy_intp)-1) < ((npy_intp)0)) ? 
-            PyInt_FromLong((long)val) :
-            PyLong_FromUnsignedLong((unsigned long)val);
-  else /* (sizeof(npy_intp) >  sizeof(long)) */
-     return (((npy_intp)-1) < ((npy_intp)0)) ?
-            PyLong_FromLongLong((PY_LONG_LONG)val) :
-            PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
-}
-
-static INLINE npy_int32 __Pyx_PyInt_from_py_npy_int32(PyObject* x) {
-  /**/ if (sizeof(npy_int32) == sizeof(char))
-     return (((npy_int32)-1) < ((npy_int32)0)) ?
-            (npy_int32)__Pyx_PyInt_AsSignedChar(x) :
-            (npy_int32)__Pyx_PyInt_AsUnsignedChar(x);
-  else if (sizeof(npy_int32) == sizeof(short))
-     return (((npy_int32)-1) < ((npy_int32)0)) ?
-            (npy_int32)__Pyx_PyInt_AsSignedShort(x) :
-            (npy_int32)__Pyx_PyInt_AsUnsignedShort(x);
-  else if (sizeof(npy_int32) == sizeof(int))
-     return (((npy_int32)-1) < ((npy_int32)0)) ?
-            (npy_int32)__Pyx_PyInt_AsSignedInt(x) :
-            (npy_int32)__Pyx_PyInt_AsUnsignedInt(x);
-  else if (sizeof(npy_int32) == sizeof(long))
-     return (((npy_int32)-1) < ((npy_int32)0)) ?
-            (npy_int32)__Pyx_PyInt_AsSignedLong(x) :
-            (npy_int32)__Pyx_PyInt_AsUnsignedLong(x);
-  else if (sizeof(npy_int32) == sizeof(PY_LONG_LONG))
-     return (((npy_int32)-1) < ((npy_int32)0)) ?
-            (npy_int32)__Pyx_PyInt_AsSignedLongLong(x) :
-            (npy_int32)__Pyx_PyInt_AsUnsignedLongLong(x);
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_intp(npy_intp val) {
+    const npy_intp neg_one = (npy_intp)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(npy_intp) <  sizeof(long)) {
+        return PyInt_FromLong((long)val);
+    } else if (sizeof(npy_intp) == sizeof(long)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else { /* (sizeof(npy_intp) > sizeof(long)) */
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    }
+}
+
+static CYTHON_INLINE npy_int32 __Pyx_PyInt_from_py_npy_int32(PyObject* x) {
+    const npy_int32 neg_one = (npy_int32)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(npy_int32) == sizeof(char)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(npy_int32) == sizeof(short)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(npy_int32) == sizeof(int)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(npy_int32) == sizeof(long)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(npy_int32) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedLongLong(x);
 #if 0
-  else if (sizeof(npy_int32) > sizeof(short) &&
-           sizeof(npy_int32) < sizeof(int)) /*  __int32 ILP64 ? */
-     return (((npy_int32)-1) < ((npy_int32)0)) ?
-            (npy_int32)__Pyx_PyInt_AsSignedInt(x) :
-            (npy_int32)__Pyx_PyInt_AsUnsignedInt(x);
+    } else if (sizeof(npy_int32) > sizeof(short) &&
+               sizeof(npy_int32) < sizeof(int)) { /*  __int32 ILP64 ? */
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedInt(x);
 #endif
-  PyErr_SetString(PyExc_TypeError, "npy_int32");
-  return (npy_int32)-1;
+    }
+    PyErr_SetString(PyExc_TypeError, "npy_int32");
+    return (npy_int32)-1;
 }
 
-static INLINE PyObject *__Pyx_PyInt_to_py_npy_int32(npy_int32 val) {
-  /**/ if (sizeof(npy_int32) <  sizeof(long))
-      return PyInt_FromLong((long)val);
-  else if (sizeof(npy_int32) == sizeof(long))
-     return (((npy_int32)-1) < ((npy_int32)0)) ? 
-            PyInt_FromLong((long)val) :
-            PyLong_FromUnsignedLong((unsigned long)val);
-  else /* (sizeof(npy_int32) >  sizeof(long)) */
-     return (((npy_int32)-1) < ((npy_int32)0)) ?
-            PyLong_FromLongLong((PY_LONG_LONG)val) :
-            PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_int32(npy_int32 val) {
+    const npy_int32 neg_one = (npy_int32)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(npy_int32) <  sizeof(long)) {
+        return PyInt_FromLong((long)val);
+    } else if (sizeof(npy_int32) == sizeof(long)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else { /* (sizeof(npy_int32) > sizeof(long)) */
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    }
 }
 
 #if PY_MAJOR_VERSION < 3
@@ -21533,61 +22680,48 @@
 
 #endif
 
-static INLINE npy_int64 __Pyx_PyInt_from_py_npy_int64(PyObject* x) {
-  /**/ if (sizeof(npy_int64) == sizeof(char))
-     return (((npy_int64)-1) < ((npy_int64)0)) ?
-            (npy_int64)__Pyx_PyInt_AsSignedChar(x) :
-            (npy_int64)__Pyx_PyInt_AsUnsignedChar(x);
-  else if (sizeof(npy_int64) == sizeof(short))
-     return (((npy_int64)-1) < ((npy_int64)0)) ?
-            (npy_int64)__Pyx_PyInt_AsSignedShort(x) :
-            (npy_int64)__Pyx_PyInt_AsUnsignedShort(x);
-  else if (sizeof(npy_int64) == sizeof(int))
-     return (((npy_int64)-1) < ((npy_int64)0)) ?
-            (npy_int64)__Pyx_PyInt_AsSignedInt(x) :
-            (npy_int64)__Pyx_PyInt_AsUnsignedInt(x);
-  else if (sizeof(npy_int64) == sizeof(long))
-     return (((npy_int64)-1) < ((npy_int64)0)) ?
-            (npy_int64)__Pyx_PyInt_AsSignedLong(x) :
-            (npy_int64)__Pyx_PyInt_AsUnsignedLong(x);
-  else if (sizeof(npy_int64) == sizeof(PY_LONG_LONG))
-     return (((npy_int64)-1) < ((npy_int64)0)) ?
-            (npy_int64)__Pyx_PyInt_AsSignedLongLong(x) :
-            (npy_int64)__Pyx_PyInt_AsUnsignedLongLong(x);
+static CYTHON_INLINE npy_int64 __Pyx_PyInt_from_py_npy_int64(PyObject* x) {
+    const npy_int64 neg_one = (npy_int64)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(npy_int64) == sizeof(char)) {
+        if (is_unsigned)
+            return (npy_int64)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (npy_int64)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(npy_int64) == sizeof(short)) {
+        if (is_unsigned)
+            return (npy_int64)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (npy_int64)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(npy_int64) == sizeof(int)) {
+        if (is_unsigned)
+            return (npy_int64)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (npy_int64)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(npy_int64) == sizeof(long)) {
+        if (is_unsigned)
+            return (npy_int64)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (npy_int64)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(npy_int64) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (npy_int64)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (npy_int64)__Pyx_PyInt_AsSignedLongLong(x);
 #if 0
-  else if (sizeof(npy_int64) > sizeof(short) &&
-           sizeof(npy_int64) < sizeof(int)) /*  __int32 ILP64 ? */
-     return (((npy_int64)-1) < ((npy_int64)0)) ?
-            (npy_int64)__Pyx_PyInt_AsSignedInt(x) :
-            (npy_int64)__Pyx_PyInt_AsUnsignedInt(x);
+    } else if (sizeof(npy_int64) > sizeof(short) &&
+               sizeof(npy_int64) < sizeof(int)) { /*  __int32 ILP64 ? */
+        if (is_unsigned)
+            return (npy_int64)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (npy_int64)__Pyx_PyInt_AsSignedInt(x);
 #endif
-  PyErr_SetString(PyExc_TypeError, "npy_int64");
-  return (npy_int64)-1;
-}
-
-static PyObject *__Pyx_UnpackItem(PyObject *iter, Py_ssize_t index) {
-    PyObject *item;
-    if (!(item = PyIter_Next(iter))) {
-        if (!PyErr_Occurred()) {
-            __Pyx_RaiseNeedMoreValuesError(index);
-        }
-    }
-    return item;
-}
-
-static int __Pyx_EndUnpack(PyObject *iter) {
-    PyObject *item;
-    if ((item = PyIter_Next(iter))) {
-        Py_DECREF(item);
-        __Pyx_RaiseTooManyValuesError();
-        return -1;
     }
-    else if (!PyErr_Occurred())
-        return 0;
-    else
-        return -1;
+    PyErr_SetString(PyExc_TypeError, "npy_int64");
+    return (npy_int64)-1;
 }
 
+#if PY_MAJOR_VERSION < 3
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
     Py_XINCREF(type);
     Py_XINCREF(value);
@@ -21643,6 +22777,7 @@
             }
         #endif
     }
+
     __Pyx_ErrRestore(type, value, tb);
     return;
 raise_error:
@@ -21652,26 +22787,227 @@
     return;
 }
 
-static INLINE PyObject *__Pyx_PyInt_to_py_npy_int64(npy_int64 val) {
-  /**/ if (sizeof(npy_int64) <  sizeof(long))
-      return PyInt_FromLong((long)val);
-  else if (sizeof(npy_int64) == sizeof(long))
-     return (((npy_int64)-1) < ((npy_int64)0)) ? 
-            PyInt_FromLong((long)val) :
-            PyLong_FromUnsignedLong((unsigned long)val);
-  else /* (sizeof(npy_int64) >  sizeof(long)) */
-     return (((npy_int64)-1) < ((npy_int64)0)) ?
-            PyLong_FromLongLong((PY_LONG_LONG)val) :
-            PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+#else /* Python 3+ */
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (!PyExceptionClass_Check(type)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+
+    PyErr_SetObject(type, value);
+
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+
+bad:
+    return;
+}
+#endif
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_int64(npy_int64 val) {
+    const npy_int64 neg_one = (npy_int64)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(npy_int64) <  sizeof(long)) {
+        return PyInt_FromLong((long)val);
+    } else if (sizeof(npy_int64) == sizeof(long)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else { /* (sizeof(npy_int64) > sizeof(long)) */
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    }
 }
 
-static INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+#if CYTHON_CCOMPLEX
+  #ifdef __cplusplus
+    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
+      return ::std::complex< float >(x, y);
+    }
+  #else
+    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
+      return x + y*(__pyx_t_float_complex)_Complex_I;
+    }
+  #endif
+#else
+    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
+      __pyx_t_float_complex z;
+      z.real = x;
+      z.imag = y;
+      return z;
+    }
+#endif
+
+#if CYTHON_CCOMPLEX
+#else
+    static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+       return (a.real == b.real) && (a.imag == b.imag);
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+        __pyx_t_float_complex z;
+        z.real = a.real + b.real;
+        z.imag = a.imag + b.imag;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+        __pyx_t_float_complex z;
+        z.real = a.real - b.real;
+        z.imag = a.imag - b.imag;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+        __pyx_t_float_complex z;
+        z.real = a.real * b.real - a.imag * b.imag;
+        z.imag = a.real * b.imag + a.imag * b.real;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
+        __pyx_t_float_complex z;
+        float denom = b.real * b.real + b.imag * b.imag;
+        z.real = (a.real * b.real + a.imag * b.imag) / denom;
+        z.imag = (a.imag * b.real - a.real * b.imag) / denom;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_complex a) {
+        __pyx_t_float_complex z;
+        z.real = -a.real;
+        z.imag = -a.imag;
+        return z;
+    }
+    static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex a) {
+       return (a.real == 0) && (a.imag == 0);
+    }
+    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_complex a) {
+        __pyx_t_float_complex z;
+        z.real =  a.real;
+        z.imag = -a.imag;
+        return z;
+    }
+/*
+    static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex z) {
+#if HAVE_HYPOT
+        return hypotf(z.real, z.imag);
+#else
+        return sqrtf(z.real*z.real + z.imag*z.imag);
+#endif
+    }
+*/
+#endif
+
+#if CYTHON_CCOMPLEX
+  #ifdef __cplusplus
+    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
+      return ::std::complex< double >(x, y);
+    }
+  #else
+    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
+      return x + y*(__pyx_t_double_complex)_Complex_I;
+    }
+  #endif
+#else
+    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
+      __pyx_t_double_complex z;
+      z.real = x;
+      z.imag = y;
+      return z;
+    }
+#endif
+
+#if CYTHON_CCOMPLEX
+#else
+    static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+       return (a.real == b.real) && (a.imag == b.imag);
+    }
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+        __pyx_t_double_complex z;
+        z.real = a.real + b.real;
+        z.imag = a.imag + b.imag;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+        __pyx_t_double_complex z;
+        z.real = a.real - b.real;
+        z.imag = a.imag - b.imag;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+        __pyx_t_double_complex z;
+        z.real = a.real * b.real - a.imag * b.imag;
+        z.imag = a.real * b.imag + a.imag * b.real;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_complex a, __pyx_t_double_complex b) {
+        __pyx_t_double_complex z;
+        double denom = b.real * b.real + b.imag * b.imag;
+        z.real = (a.real * b.real + a.imag * b.imag) / denom;
+        z.imag = (a.imag * b.real - a.real * b.imag) / denom;
+        return z;
+    }
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_complex a) {
+        __pyx_t_double_complex z;
+        z.real = -a.real;
+        z.imag = -a.imag;
+        return z;
+    }
+    static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex a) {
+       return (a.real == 0) && (a.imag == 0);
+    }
+    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_complex a) {
+        __pyx_t_double_complex z;
+        z.real =  a.real;
+        z.imag = -a.imag;
+        return z;
+    }
+/*
+    static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex z) {
+#if HAVE_HYPOT
+        return hypot(z.real, z.imag);
+#else
+        return sqrt(z.real*z.real + z.imag*z.imag);
+#endif
+    }
+*/
+#endif
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
     if (sizeof(unsigned char) < sizeof(long)) {
         long val = __Pyx_PyInt_AsLong(x);
         if (unlikely(val != (long)(unsigned char)val)) {
             if (!unlikely(val == -1 && PyErr_Occurred())) {
                 PyErr_SetString(PyExc_OverflowError,
-                    (((unsigned char)-1) > ((unsigned char)0) && unlikely(val < 0)) ?
+                    (is_unsigned && unlikely(val < 0)) ?
                     "can't convert negative value to unsigned char" :
                     "value too large to convert to unsigned char");
             }
@@ -21682,13 +23018,15 @@
     return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
 }
 
-static INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
     if (sizeof(unsigned short) < sizeof(long)) {
         long val = __Pyx_PyInt_AsLong(x);
         if (unlikely(val != (long)(unsigned short)val)) {
             if (!unlikely(val == -1 && PyErr_Occurred())) {
                 PyErr_SetString(PyExc_OverflowError,
-                    (((unsigned short)-1) > ((unsigned short)0) && unlikely(val < 0)) ?
+                    (is_unsigned && unlikely(val < 0)) ?
                     "can't convert negative value to unsigned short" :
                     "value too large to convert to unsigned short");
             }
@@ -21699,13 +23037,15 @@
     return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
 }
 
-static INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
     if (sizeof(unsigned int) < sizeof(long)) {
         long val = __Pyx_PyInt_AsLong(x);
         if (unlikely(val != (long)(unsigned int)val)) {
             if (!unlikely(val == -1 && PyErr_Occurred())) {
                 PyErr_SetString(PyExc_OverflowError,
-                    (((unsigned int)-1) > ((unsigned int)0) && unlikely(val < 0)) ?
+                    (is_unsigned && unlikely(val < 0)) ?
                     "can't convert negative value to unsigned int" :
                     "value too large to convert to unsigned int");
             }
@@ -21716,13 +23056,15 @@
     return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
 }
 
-static INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
     if (sizeof(char) < sizeof(long)) {
         long val = __Pyx_PyInt_AsLong(x);
         if (unlikely(val != (long)(char)val)) {
             if (!unlikely(val == -1 && PyErr_Occurred())) {
                 PyErr_SetString(PyExc_OverflowError,
-                    (((char)-1) > ((char)0) && unlikely(val < 0)) ?
+                    (is_unsigned && unlikely(val < 0)) ?
                     "can't convert negative value to char" :
                     "value too large to convert to char");
             }
@@ -21733,13 +23075,15 @@
     return (char)__Pyx_PyInt_AsLong(x);
 }
 
-static INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
     if (sizeof(short) < sizeof(long)) {
         long val = __Pyx_PyInt_AsLong(x);
         if (unlikely(val != (long)(short)val)) {
             if (!unlikely(val == -1 && PyErr_Occurred())) {
                 PyErr_SetString(PyExc_OverflowError,
-                    (((short)-1) > ((short)0) && unlikely(val < 0)) ?
+                    (is_unsigned && unlikely(val < 0)) ?
                     "can't convert negative value to short" :
                     "value too large to convert to short");
             }
@@ -21750,13 +23094,15 @@
     return (short)__Pyx_PyInt_AsLong(x);
 }
 
-static INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
     if (sizeof(int) < sizeof(long)) {
         long val = __Pyx_PyInt_AsLong(x);
         if (unlikely(val != (long)(int)val)) {
             if (!unlikely(val == -1 && PyErr_Occurred())) {
                 PyErr_SetString(PyExc_OverflowError,
-                    (((int)-1) > ((int)0) && unlikely(val < 0)) ?
+                    (is_unsigned && unlikely(val < 0)) ?
                     "can't convert negative value to int" :
                     "value too large to convert to int");
             }
@@ -21767,13 +23113,15 @@
     return (int)__Pyx_PyInt_AsLong(x);
 }
 
-static INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
     if (sizeof(signed char) < sizeof(long)) {
         long val = __Pyx_PyInt_AsLong(x);
         if (unlikely(val != (long)(signed char)val)) {
             if (!unlikely(val == -1 && PyErr_Occurred())) {
                 PyErr_SetString(PyExc_OverflowError,
-                    (((signed char)-1) > ((signed char)0) && unlikely(val < 0)) ?
+                    (is_unsigned && unlikely(val < 0)) ?
                     "can't convert negative value to signed char" :
                     "value too large to convert to signed char");
             }
@@ -21784,13 +23132,15 @@
     return (signed char)__Pyx_PyInt_AsSignedLong(x);
 }
 
-static INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
     if (sizeof(signed short) < sizeof(long)) {
         long val = __Pyx_PyInt_AsLong(x);
         if (unlikely(val != (long)(signed short)val)) {
             if (!unlikely(val == -1 && PyErr_Occurred())) {
                 PyErr_SetString(PyExc_OverflowError,
-                    (((signed short)-1) > ((signed short)0) && unlikely(val < 0)) ?
+                    (is_unsigned && unlikely(val < 0)) ?
                     "can't convert negative value to signed short" :
                     "value too large to convert to signed short");
             }
@@ -21801,13 +23151,15 @@
     return (signed short)__Pyx_PyInt_AsSignedLong(x);
 }
 
-static INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
     if (sizeof(signed int) < sizeof(long)) {
         long val = __Pyx_PyInt_AsLong(x);
         if (unlikely(val != (long)(signed int)val)) {
             if (!unlikely(val == -1 && PyErr_Occurred())) {
                 PyErr_SetString(PyExc_OverflowError,
-                    (((signed int)-1) > ((signed int)0) && unlikely(val < 0)) ?
+                    (is_unsigned && unlikely(val < 0)) ?
                     "can't convert negative value to signed int" :
                     "value too large to convert to signed int");
             }
@@ -21818,11 +23170,13 @@
     return (signed int)__Pyx_PyInt_AsSignedLong(x);
 }
 
-static INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
 #if PY_VERSION_HEX < 0x03000000
     if (likely(PyInt_Check(x))) {
         long val = PyInt_AS_LONG(x);
-        if (((unsigned long)-1) > ((unsigned long)0) && unlikely(val < 0)) {
+        if (is_unsigned && unlikely(val < 0)) {
             PyErr_SetString(PyExc_OverflowError,
                             "can't convert negative value to unsigned long");
             return (unsigned long)-1;
@@ -21831,14 +23185,16 @@
     } else
 #endif
     if (likely(PyLong_Check(x))) {
-        if (((unsigned long)-1) > ((unsigned long)0) && unlikely(Py_SIZE(x) < 0)) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "can't convert negative value to unsigned long");
-            return (unsigned long)-1;
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return PyLong_AsUnsignedLong(x);
+        } else {
+            return PyLong_AsLong(x);
         }
-        return (((unsigned long)-1) < ((unsigned long)0)) ?
-               PyLong_AsLong(x) :
-               PyLong_AsUnsignedLong(x);
     } else {
         unsigned long val;
         PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -21849,11 +23205,13 @@
     }
 }
 
-static INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
 #if PY_VERSION_HEX < 0x03000000
     if (likely(PyInt_Check(x))) {
         long val = PyInt_AS_LONG(x);
-        if (((unsigned PY_LONG_LONG)-1) > ((unsigned PY_LONG_LONG)0) && unlikely(val < 0)) {
+        if (is_unsigned && unlikely(val < 0)) {
             PyErr_SetString(PyExc_OverflowError,
                             "can't convert negative value to unsigned PY_LONG_LONG");
             return (unsigned PY_LONG_LONG)-1;
@@ -21862,14 +23220,16 @@
     } else
 #endif
     if (likely(PyLong_Check(x))) {
-        if (((unsigned PY_LONG_LONG)-1) > ((unsigned PY_LONG_LONG)0) && unlikely(Py_SIZE(x) < 0)) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "can't convert negative value to unsigned PY_LONG_LONG");
-            return (unsigned PY_LONG_LONG)-1;
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return PyLong_AsUnsignedLongLong(x);
+        } else {
+            return PyLong_AsLongLong(x);
         }
-        return (((unsigned PY_LONG_LONG)-1) < ((unsigned PY_LONG_LONG)0)) ?
-               PyLong_AsLongLong(x) :
-               PyLong_AsUnsignedLongLong(x);
     } else {
         unsigned PY_LONG_LONG val;
         PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -21880,11 +23240,13 @@
     }
 }
 
-static INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
 #if PY_VERSION_HEX < 0x03000000
     if (likely(PyInt_Check(x))) {
         long val = PyInt_AS_LONG(x);
-        if (((long)-1) > ((long)0) && unlikely(val < 0)) {
+        if (is_unsigned && unlikely(val < 0)) {
             PyErr_SetString(PyExc_OverflowError,
                             "can't convert negative value to long");
             return (long)-1;
@@ -21893,14 +23255,16 @@
     } else
 #endif
     if (likely(PyLong_Check(x))) {
-        if (((long)-1) > ((long)0) && unlikely(Py_SIZE(x) < 0)) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "can't convert negative value to long");
-            return (long)-1;
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return PyLong_AsUnsignedLong(x);
+        } else {
+            return PyLong_AsLong(x);
         }
-        return (((long)-1) < ((long)0)) ?
-               PyLong_AsLong(x) :
-               PyLong_AsUnsignedLong(x);
     } else {
         long val;
         PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -21911,11 +23275,13 @@
     }
 }
 
-static INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
 #if PY_VERSION_HEX < 0x03000000
     if (likely(PyInt_Check(x))) {
         long val = PyInt_AS_LONG(x);
-        if (((PY_LONG_LONG)-1) > ((PY_LONG_LONG)0) && unlikely(val < 0)) {
+        if (is_unsigned && unlikely(val < 0)) {
             PyErr_SetString(PyExc_OverflowError,
                             "can't convert negative value to PY_LONG_LONG");
             return (PY_LONG_LONG)-1;
@@ -21924,14 +23290,16 @@
     } else
 #endif
     if (likely(PyLong_Check(x))) {
-        if (((PY_LONG_LONG)-1) > ((PY_LONG_LONG)0) && unlikely(Py_SIZE(x) < 0)) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "can't convert negative value to PY_LONG_LONG");
-            return (PY_LONG_LONG)-1;
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return PyLong_AsUnsignedLongLong(x);
+        } else {
+            return PyLong_AsLongLong(x);
         }
-        return (((PY_LONG_LONG)-1) < ((PY_LONG_LONG)0)) ?
-               PyLong_AsLongLong(x) :
-               PyLong_AsUnsignedLongLong(x);
     } else {
         PY_LONG_LONG val;
         PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -21942,11 +23310,13 @@
     }
 }
 
-static INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
 #if PY_VERSION_HEX < 0x03000000
     if (likely(PyInt_Check(x))) {
         long val = PyInt_AS_LONG(x);
-        if (((signed long)-1) > ((signed long)0) && unlikely(val < 0)) {
+        if (is_unsigned && unlikely(val < 0)) {
             PyErr_SetString(PyExc_OverflowError,
                             "can't convert negative value to signed long");
             return (signed long)-1;
@@ -21955,14 +23325,16 @@
     } else
 #endif
     if (likely(PyLong_Check(x))) {
-        if (((signed long)-1) > ((signed long)0) && unlikely(Py_SIZE(x) < 0)) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "can't convert negative value to signed long");
-            return (signed long)-1;
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return PyLong_AsUnsignedLong(x);
+        } else {
+            return PyLong_AsLong(x);
         }
-        return (((signed long)-1) < ((signed long)0)) ?
-               PyLong_AsLong(x) :
-               PyLong_AsUnsignedLong(x);
     } else {
         signed long val;
         PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -21973,11 +23345,13 @@
     }
 }
 
-static INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
 #if PY_VERSION_HEX < 0x03000000
     if (likely(PyInt_Check(x))) {
         long val = PyInt_AS_LONG(x);
-        if (((signed PY_LONG_LONG)-1) > ((signed PY_LONG_LONG)0) && unlikely(val < 0)) {
+        if (is_unsigned && unlikely(val < 0)) {
             PyErr_SetString(PyExc_OverflowError,
                             "can't convert negative value to signed PY_LONG_LONG");
             return (signed PY_LONG_LONG)-1;
@@ -21986,14 +23360,16 @@
     } else
 #endif
     if (likely(PyLong_Check(x))) {
-        if (((signed PY_LONG_LONG)-1) > ((signed PY_LONG_LONG)0) && unlikely(Py_SIZE(x) < 0)) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "can't convert negative value to signed PY_LONG_LONG");
-            return (signed PY_LONG_LONG)-1;
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return PyLong_AsUnsignedLongLong(x);
+        } else {
+            return PyLong_AsLongLong(x);
         }
-        return (((signed PY_LONG_LONG)-1) < ((signed PY_LONG_LONG)0)) ?
-               PyLong_AsLongLong(x) :
-               PyLong_AsUnsignedLongLong(x);
     } else {
         signed PY_LONG_LONG val;
         PyObject *tmp = __Pyx_PyNumber_Int(x);
@@ -22023,32 +23399,31 @@
 }
 
 static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
-    PyObject *pycobj = 0;
-    int result;
-    
-    pycobj = PyCObject_FromVoidPtr(vtable, 0);
-    if (!pycobj)
+#if PY_VERSION_HEX < 0x03010000
+    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
+#else
+    PyObject *ob = PyCapsule_New(vtable, 0, 0);
+#endif
+    if (!ob)
         goto bad;
-    if (PyDict_SetItemString(dict, "__pyx_vtable__", pycobj) < 0)
+    if (PyDict_SetItemString(dict, "__pyx_vtable__", ob) < 0)
         goto bad;
-    result = 0;
-    goto done;
-
+    Py_DECREF(ob);
+    return 0;
 bad:
-    result = -1;
-done:
-    Py_XDECREF(pycobj);
-    return result;
+    Py_XDECREF(ob);
+    return -1;
 }
 
 #ifndef __PYX_HAVE_RT_ImportType
 #define __PYX_HAVE_RT_ImportType
 static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
-    long size)
+    long size, int strict)
 {
     PyObject *py_module = 0;
     PyObject *result = 0;
     PyObject *py_name = 0;
+    char warning[200];
 
     py_module = __Pyx_ImportModule(module_name);
     if (!py_module)
@@ -22073,9 +23448,15 @@
             module_name, class_name);
         goto bad;
     }
-    if (((PyTypeObject *)result)->tp_basicsize != size) {
+    if (!strict && ((PyTypeObject *)result)->tp_basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning), 
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        PyErr_WarnEx(NULL, warning, 0);
+    }
+    else if (((PyTypeObject *)result)->tp_basicsize != size) {
         PyErr_Format(PyExc_ValueError, 
-            "%s.%s does not appear to be the correct type object",
+            "%s.%s has the wrong size, try recompiling",
             module_name, class_name);
         goto bad;
     }
@@ -22182,7 +23563,7 @@
 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
     while (t->p) {
         #if PY_MAJOR_VERSION < 3
-        if (t->is_unicode && (!t->is_identifier)) {
+        if (t->is_unicode) {
             *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
         } else if (t->intern) {
             *t->p = PyString_InternFromString(t->s);
@@ -22190,10 +23571,14 @@
             *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
         }
         #else  /* Python 3+ has unicode identifiers */
-        if (t->is_identifier || (t->is_unicode && t->intern)) {
-            *t->p = PyUnicode_InternFromString(t->s);
-        } else if (t->is_unicode) {
-            *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
         } else {
             *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
         }
@@ -22207,13 +23592,13 @@
 
 /* Type Conversion Functions */
 
-static INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
    if (x == Py_True) return 1;
    else if ((x == Py_False) | (x == Py_None)) return 0;
    else return PyObject_IsTrue(x);
 }
 
-static INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
   PyNumberMethods *m;
   const char *name = NULL;
   PyObject *res = NULL;
@@ -22259,7 +23644,7 @@
   return res;
 }
 
-static INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
   Py_ssize_t ival;
   PyObject* x = PyNumber_Index(b);
   if (!x) return -1;
@@ -22268,7 +23653,7 @@
   return ival;
 }
 
-static INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
 #if PY_VERSION_HEX < 0x02050000
    if (ival <= LONG_MAX)
        return PyInt_FromLong((long)ival);
@@ -22282,7 +23667,7 @@
 #endif
 }
 
-static INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
    unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
    if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
        return (size_t)-1;

Modified: trunk/yt/extensions/volume_rendering/software_sampler.py
==============================================================================
--- trunk/yt/extensions/volume_rendering/software_sampler.py	(original)
+++ trunk/yt/extensions/volume_rendering/software_sampler.py	Wed Feb  3 23:15:27 2010
@@ -28,7 +28,9 @@
 from yt.funcs import *
 
 def direct_ray_cast(pf, L, center, W, Nvec, tf, 
-                    partitioned_grids = None, field = 'Density', log_field = True, whole_box=False):
+                    partitioned_grids = None, field = 'Density',
+                    log_field = True, whole_box=False,
+                    nsamples = 5):
     center = na.array(center, dtype='float64')
 
     # This just helps us keep track of stuff, and it's cheap
@@ -85,6 +87,7 @@
     print tf.light_dir
     
     tfp = TransferFunctionProxy(tf)
+    tfp.ns = nsamples
 
     pbar = get_pbar("Ray casting ", len(partitioned_grids))
     for i,g in enumerate(partitioned_grids[ind]):



More information about the yt-svn mailing list