anchor.diff:  
   (defun memory-block-vertex-buffer-object (blk)
     (if (memory-block-interop-p blk)
  -      (caddr blk)
  +      (memory-block-interop-vertex-buffer-object blk)
  +      (error "not interoperable memory block")))
  +
  +(defun (setf memory-block-vertex-buffer-object) (val blk)
  +  (if (memory-block-interop-p blk)
  +      (setf (memory-block-interop-vertex-buffer-object blk) val)
         (error "not interoperable memory block")))
   
   (defun memory-block-graphic-resource-ptr (blk)
     (if (memory-block-interop-p blk)
  -      (cadddr blk)
  +      (memory-block-interop-graphic-resource-ptr blk)
  +      (error "not interoperable memory block")))
  +
  +(defun (setf memory-block-graphic-resource-ptr) (val blk)
  +  (if (memory-block-interop-p blk)
  +      (setf (memory-block-interop-graphic-resource-ptr blk) val)
         (error "not interoperable memory block")))
   
   (defun memory-block-type (blk)
     (if (memory-block-interop-p blk)
  -      (cadddr (cdr blk))
  -      (cadddr blk)))
  +      (memory-block-interop-type blk)
  +      (memory-block-cuda-type    blk)))
  +
  +(defun (setf memory-block-type) (val blk)
  +  (if (memory-block-interop-p blk)
  +      (setf (memory-block-interop-type blk) val)
  +      (setf (memory-block-cuda-type    blk) val)))
   
   (defun memory-block-cffi-type (blk)
     (cffi-type (memory-block-type blk)))
   
   (defun memory-block-length (blk)
     (if (memory-block-interop-p blk)
  -      (cadddr (cddr blk))
  -      (cadddr (cdr  blk))))
  +      (memory-block-interop-length blk)
  +      (memory-block-cuda-length    blk)))
  +
  +(defun (setf memory-block-length) (val blk)
  +  (if (memory-block-length blk)
  +      (setf (memory-block-interop-length blk) val)
  +      (setf (memory-block-cuda-length    blk) val)))
   
   (defun memory-block-bytes (blk)
     (* (memory-block-element-bytes blk)
  
positive.code: ;;; Definition of Memory Block
  ;;;
  
  (defun alloc-memory-block-cuda (type n)
    (let ((cffi-ptr   (cffi:foreign-alloc (cffi-type type) :count n))
          (device-ptr (cffi:foreign-alloc 'cu-device-ptr)))
      (cu-mem-alloc device-ptr (* n (type-size type)))
      (list :cuda cffi-ptr device-ptr type n)))
  
  (defun alloc-memory-block-interop (type n)
    (let* ((cffi-ptr (cffi:foreign-alloc (cffi-type type) :count n))
           (vbo      (car (gl:gen-buffers 1)))
           (gres-ptr (cffi:foreign-alloc 'cu-graphics-resource)))
      ;; create and initialize a buffer object's data store
      (gl:bind-buffer :array-buffer vbo)
      (let ((ary (gl:alloc-gl-array (cffi-type type) n)))
        (unwind-protect (gl:buffer-data :array-buffer :dynamic-draw ary)
          (gl:free-gl-array ary)))
      (gl:bind-buffer :array-buffer 0)
      ;; register a buffer object accessed through CUDA
      (cu-graphics-gl-register-buffer gres-ptr vbo cu-graphics-register-flags-none)
      (list :interop cffi-ptr vbo gres-ptr type n)))
  
  (defun alloc-memory-block (type n &key (interop nil))
    (unless (non-pointer-type-p type)
  
negative.code:       (array-type-p  type)))
  
  (defun cffi-type (type)
    (cond
      ((basic-type-p  type) (basic-cffi-type  type))
      ((vector-type-p type) (vector-cffi-type type))
      ((array-type-p  type) (array-cffi-type  type))
  