anchor.diff:  
   	 (uniform :int :test-texture *tex-unit-2*)
   
  -	 (gl:tex-image-2d :texture-2d 0 :rgba8 20 20 0
  -			  :rgba	;components per element
  -			  :unsigned-byte ;; normalized integer
  -			  *rgba-texture-data*)))))
  +	 (with-slots (width height pixels ffi-array) *png-opticl*
  +	   (gl:tex-image-2d :texture-2d 0 :rgba8
  +			    width
  +			    height 0
  +			    :rgba	;components per element
  +			    :unsigned-byte ;; normalized integer
  +			    ffi-array))))))
   
   (defun draw-cube ()
     (gl:bind-vertex-array *vao*)
  
positive.code: 
  
  (defun image-file->image-object (path)
    (let ((img(convert-image-to-rgba (read-png-file path))))
      ;; first dim: height then width then length of pixel, here 4 because rgba
      (with-image-bounds (height width) img
        (make-instance 'image-object :height height :width width )))
  )
  
  ;;print representation reads, intuitively, top-to-bottom just like the picture rendered
  ;;a 3d-array: 1.row 2.pixel 3. color-component
  (defparameter *123-png-opticl* (convert-image-to-rgba (read-png-file "123.png")))
  
  ;;useful functions
  ;; (with-image-bounds (height width) *123-png-opticl*
  ;;   (list height width)) ; ==> (3 3)
  ;; (convert-image-to-rgba *123-PNG-OPTICL*)
  
  ;; since we're dealing with a simple array
  ;; (array-element-type <array>)
  
negative.code: ;;opticl experiments------------------------------------------------------------
  
  ;; TODO: chedk out 3bgl-opticl for a direct solution
  ;; TODO: check out sbcl for some lowlevel vecor access and provide it with
  ;;       #+sbcl.. ?
  (defun 3d-array->vector (3d-array)
    (let* ((dims (array-dimensions 3d-array))
  	 (dims-1d (apply #'* dims))
  