commit 40eef4b9f602b7bd7e29b3b768e4197a66d96036
Author: Leszek Koltunski <leszek@distorted.org>
Date:   Mon Dec 12 23:47:59 2016 +0000

    Beginnings of split of DistortedObject into two separate classes: DistortedEffectQueues and DistortedTexture.
    
    Still does not compile, but pushing already.

diff --git a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java
index ec6edad..b6da354 100644
--- a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java
+++ b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java
@@ -122,7 +122,7 @@ class AroundTheWorldRenderer implements GLSurfaceView.Renderer
       mObjWidth = bitmap.getWidth();
       mObjHeight= bitmap.getHeight();
 
-      mObject = new DistortedObject(mObjWidth,mObjHeight,1);
+      mObject = new DistortedObject(mObjWidth,mObjHeight,0);
       mObject.setTexture(bitmap);
       mEffects.apply(mObject);
 
diff --git a/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java b/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
index d03b663..eb16beb 100644
--- a/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
+++ b/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
@@ -27,7 +27,8 @@ import javax.microedition.khronos.opengles.GL10;
 
 import org.distorted.examples.R;
 import org.distorted.library.Distorted;
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedEffectQueues;
+import org.distorted.library.DistortedTexture;
 import org.distorted.library.GridFlat;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.type.Dynamic1D;
@@ -46,9 +47,9 @@ import android.opengl.GLSurfaceView;
 class CatAndDogRenderer implements GLSurfaceView.Renderer
 {
     private GLSurfaceView mView;
-    private DistortedObject mObject;
+    private DistortedEffectQueues mQueues;
+    private DistortedTexture mTexture;
     private GridFlat mGrid;
-    private Static4D chromaRegion, alphaRegion;
     private int bmpHeight, bmpWidth;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -56,9 +57,24 @@ class CatAndDogRenderer implements GLSurfaceView.Renderer
     public CatAndDogRenderer(GLSurfaceView v)
       {   
       mView = v;
-      
-      chromaRegion= new Static4D( 530, 200,100,100);
-      alphaRegion = new Static4D( 230, 200,100,100);
+
+      mGrid   = new GridFlat(1,1);  // no vertex effects, grid can be a (1x1) quad.
+      mQueues = new DistortedEffectQueues();
+
+      Static4D chromaRegion= new Static4D( 530, 200,100,100);
+      Static4D alphaRegion = new Static4D( 230, 200,100,100);
+
+      Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f);
+      chromaDyn.add(new Static1D(1));
+      chromaDyn.add(new Static1D(0));
+
+      mQueues.chroma(chromaDyn, new Static3D(1,0,0), chromaRegion ,true);
+
+      Dynamic1D alphaDyn = new Dynamic1D(3000,0.0f);
+      alphaDyn.add(new Static1D(1));
+      alphaDyn.add(new Static1D(0));
+
+      mQueues.alpha( alphaDyn, alphaRegion, false );
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -66,7 +82,7 @@ class CatAndDogRenderer implements GLSurfaceView.Renderer
     public void onDrawFrame(GL10 glUnused) 
       {
       GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
-      mObject.draw(System.currentTimeMillis(), mGrid);
+      mQueues.draw(System.currentTimeMillis(), mTexture, mGrid);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -94,23 +110,9 @@ class CatAndDogRenderer implements GLSurfaceView.Renderer
       bmpHeight = bitmap.getHeight();
       bmpWidth  = bitmap.getWidth();
 
-      mGrid = new GridFlat(1,1);  // no vertex effects, grid can be a (1x1) quad.
-
-      mObject = new DistortedObject(bmpWidth,bmpHeight,1);
-      mObject.setTexture(bitmap);
-
-      Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f);
-      chromaDyn.add(new Static1D(1));
-      chromaDyn.add(new Static1D(0));
-
-      mObject.chroma(chromaDyn, new Static3D(1,0,0), chromaRegion ,true);
-
-      Dynamic1D alphaDyn = new Dynamic1D(3000,0.0f);
-      alphaDyn.add(new Static1D(1));
-      alphaDyn.add(new Static1D(0));
+      mTexture = new DistortedTexture(bmpWidth,bmpHeight,0);
+      mTexture.setTexture(bitmap);
 
-      mObject.alpha( alphaDyn, alphaRegion, false );
-      
       try
         {
         Distorted.onSurfaceCreated(mView.getContext());
@@ -139,11 +141,11 @@ class CatAndDogRenderer implements GLSurfaceView.Renderer
       diRotate.add(new Static1D(  0));
       diRotate.add(new Static1D(360));
       
-      mObject.abortEffects(EffectTypes.MATRIX);
+      mQueues.abortEffects(EffectTypes.MATRIX);
 
-      mObject.move(diMove);
-      mObject.scale(diScale);
-      mObject.rotate( diRotate, new Static3D(0,0,1), new Static3D(bmpWidth/2,bmpHeight/2,0) );
+      mQueues.move(diMove);
+      mQueues.scale(diScale);
+      mQueues.rotate( diRotate, new Static3D(0,0,1), new Static3D(bmpWidth/2,bmpHeight/2,0) );
 
       Distorted.onSurfaceChanged(width, height); 
       }
diff --git a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
index a4d8c7c..450a989 100644
--- a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
+++ b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
@@ -29,7 +29,8 @@ import org.distorted.examples.R;
 
 import org.distorted.library.Distorted;
 import org.distorted.library.GridFlat;
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedTexture;
+import org.distorted.library.DistortedEffectQueues;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.type.Dynamic1D;
 import org.distorted.library.type.Dynamic3D;
@@ -49,11 +50,9 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
    private static final int NUM = 3;
    
    private GLSurfaceView mView;
-   private DistortedObject[] mObj;
+   private DistortedEffectQueues[] mQueue;
+   private DistortedTexture mTexture;
    private GridFlat mGrid;
-   private Static3D pLeft, pRight, pNose1;
-   private Static4D RegionEye;
-   private Dynamic3D mDI;
    private int bmpHeight, bmpWidth;
     
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -62,18 +61,36 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
       {     
       mView = v;
       
-      // mObj[0] effects
-      pLeft = new Static3D(214, 206, 0);
-      pRight= new Static3D(390, 212, 0);
-      RegionEye = new Static4D(0,0,60,60);
+      // mQueue[0] effects
+      Static3D pLeft = new Static3D(214, 206, 0);
+      Static3D pRight= new Static3D(390, 212, 0);
+      Static4D RegionEye = new Static4D(0,0,60,60);
       
-      // mObj[1] effects
-      mDI = new Dynamic3D(1000,0.0f);
-      mDI.add(new Static3D( 50,0,0));
-      mDI.add(new Static3D(-50,0,0));
-      pNose1 = new Static3D(305, 340, 0);
+      // mQueue[1] effects
+      Dynamic3D dyn = new Dynamic3D(1000,0.0f);
+      dyn.add(new Static3D( 50,0,0));
+      dyn.add(new Static3D(-50,0,0));
+      Static3D pNose1 = new Static3D(305, 340, 0);
       
-      // we don't need to prepare anything for bmp[2] effects
+      // we don't need to prepare anything for mQueue[2] effects
+
+      mQueue= new DistortedEffectQueues[NUM];
+
+      for(int i=0; i<NUM; i++) mQueue[i] = new DistortedEffectQueues();
+
+      Dynamic1D sink = new Dynamic1D(2000,0.0f);
+      sink.add(new Static1D( 1));
+      sink.add(new Static1D(10));
+
+      mQueue[0].sink(sink, pLeft, RegionEye);
+      mQueue[0].sink(sink, pRight,RegionEye);
+      mQueue[1].distort(dyn, pNose1);
+
+      Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f);
+      chromaDyn.add(new Static1D(0));
+      chromaDyn.add(new Static1D(1));
+
+      mQueue[2].chroma(chromaDyn, new Static3D(0,1,0) );
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -84,7 +101,7 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
       
      long time = System.currentTimeMillis();
    
-     for(int i=NUM-1; i>=0; i--) mObj[i].draw(time, mGrid);
+     for(int i=NUM-1; i>=0; i--) mQueue[i].draw(time, mTexture, mGrid);
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -93,7 +110,7 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
      {
      for(int i=NUM-1; i>=0; i--)
        {
-       mObj[i].abortEffects(EffectTypes.MATRIX);
+       mQueue[i].abortEffects(EffectTypes.MATRIX);
        }
       
      if( (float)bmpHeight/(NUM*bmpWidth) > (float)height/width )
@@ -103,8 +120,8 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
 
        for(int i=NUM-1; i>=0; i--)
          {
-         mObj[i].move( new Static3D((width-NUM*w)/2 +i*w , 0, 0) );
-         mObj[i].scale(factor);
+         mQueue[i].move( new Static3D((width-NUM*w)/2 +i*w , 0, 0) );
+         mQueue[i].scale(factor);
          }
        }
      else
@@ -115,8 +132,8 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
 
        for(int i=NUM-1; i>=0; i--)
          {
-         mObj[i].move( new Static3D(i*w, (height-h)/2, 0) );
-         mObj[i].scale(factor);
+         mQueue[i].move( new Static3D(i*w, (height-h)/2, 0) );
+         mQueue[i].scale(factor);
          }
        }
        
@@ -148,30 +165,11 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
      bmpHeight = bitmap.getHeight();
      bmpWidth  = bitmap.getWidth();
 
-     mGrid = new GridFlat(30,30*bmpHeight/bmpWidth);
+     mGrid     = new GridFlat(30,30*bmpHeight/bmpWidth);
+     mTexture  = new DistortedTexture(bmpWidth, bmpHeight, 1);
 
-     mObj = new DistortedObject[NUM];
-     mObj[0] = new DistortedObject(bmpWidth, bmpHeight, 1);
-      
-     for(int i=1; i<NUM; i++) mObj[i] = new DistortedObject(mObj[0], Distorted.CLONE_BITMAP);
-      
-     // setting the bitmap once is enough; others are cloned!
-     mObj[0].setTexture(bitmap);
-
-     Dynamic1D sink = new Dynamic1D(2000,0.0f);
-     sink.add(new Static1D( 1));
-     sink.add(new Static1D(10));
+     mTexture.setTexture(bitmap);
 
-     mObj[0].sink(sink, pLeft, RegionEye);
-     mObj[0].sink(sink, pRight,RegionEye);
-     mObj[1].distort(mDI, pNose1);
-
-     Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f);
-     chromaDyn.add(new Static1D(0));
-     chromaDyn.add(new Static1D(1));
-
-     mObj[2].chroma(chromaDyn, new Static3D(0,1,0) );
-      
      try
        {
        Distorted.onSurfaceCreated(mView.getContext());
diff --git a/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java b/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java
index ba1c707..1c96f5c 100644
--- a/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java
+++ b/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java
@@ -30,7 +30,8 @@ import android.opengl.GLES20;
 import android.opengl.GLSurfaceView;
 
 import org.distorted.library.GridFlat;
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedEffectQueues;
+import org.distorted.library.DistortedTexture;
 import org.distorted.library.Distorted;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -38,7 +39,8 @@ import org.distorted.library.Distorted;
 class DynamicRenderer implements GLSurfaceView.Renderer
    {  
    private DynamicSurfaceView mView;
-   private DistortedObject mBackground;
+   private DistortedTexture mTexture;
+   private DistortedEffectQueues mQueues;
    private GridFlat mGrid;
    private Canvas mCanvas;
    private Bitmap mBitmap;
@@ -57,6 +59,8 @@ class DynamicRenderer implements GLSurfaceView.Renderer
      mPaint.setStyle(Style.FILL);
       
      mView = v;
+     mGrid   = new GridFlat(1,1);
+     mQueues = new DistortedEffectQueues();
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -80,10 +84,9 @@ class DynamicRenderer implements GLSurfaceView.Renderer
      texW = width;
      texH = height;
 
-     mGrid       = new GridFlat(1,1);
-     mBackground = new DistortedObject(texW,texH,1);
-     mBitmap     = Bitmap.createBitmap(texW,texH, Bitmap.Config.ARGB_8888);
-     mCanvas     = new Canvas(mBitmap);
+     mTexture= new DistortedTexture(texW,texH,0);
+     mBitmap = Bitmap.createBitmap(texW,texH, Bitmap.Config.ARGB_8888);
+     mCanvas = new Canvas(mBitmap);
 
      Distorted.onSurfaceChanged(texW,texH);
      mView.onSurfaceChanged(texW,texH);
@@ -99,8 +102,8 @@ class DynamicRenderer implements GLSurfaceView.Renderer
       
      mCanvas.drawRect(0, 0, texW, texH, mPaint);
      mView.drawCurve(mCanvas,time);
-     mBackground.setTexture(mBitmap);
-     mBackground.draw(time,mGrid);
+     mTexture.setTexture(mBitmap);
+     mQueues.draw(time,mTexture,mGrid);
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java b/src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java
index ab1755d..de27c66 100644
--- a/src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java
+++ b/src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java
@@ -24,7 +24,7 @@ import android.widget.SeekBar;
 import android.widget.TextView;
 
 import org.distorted.examples.R;
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedEffectQueues;
 import org.distorted.library.EffectNames;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.type.Dynamic1D;
@@ -77,33 +77,33 @@ class Effects3DEffect implements SeekBar.OnSeekBarChangeListener
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // requires knowledge about effect nature
 
-  void apply(DistortedObject object)
+  void apply(DistortedEffectQueues queues)
     {
     switch(mName)
       {
-      case ROTATE           : mId = object.rotate    (mDyn4, mCenterDyn); break;
-      case QUATERNION       : mId = object.quaternion(mDyn4, mCenterDyn); break;
-      case MOVE             : mId = object.move      (mDyn3)            ; break;
-      case SCALE            : mId = object.scale     (mDyn3)            ; break;
-      case SHEAR            : mId = object.shear     (mDyn3, mCenterDyn); break;
-
-      case DISTORT          : mId = object.distort   (mDyn3, mCenterDyn, mRegionDyn); break;
-      case DEFORM           : mId = object.deform    (mDyn3, mCenterDyn, mRegionDyn); break;
-      case SINK             : mId = object.sink      (mDyn1, mCenterDyn, mRegionDyn); break;
-      case PINCH            : mId = object.pinch     (mDyn2, mCenterDyn, mRegionDyn); break;
-      case SWIRL            : mId = object.swirl     (mDyn1, mCenterDyn, mRegionDyn); break;
-      case WAVE             : mId = object.wave      (mDyn5, mCenterDyn, mRegionDyn); break;
-
-      case ALPHA            : mId = object.alpha     (mDyn1,        mRegionDyn, false); break;
-      case SMOOTH_ALPHA     : mId = object.alpha     (mDyn1,        mRegionDyn, true ); break;
-      case CHROMA           : mId = object.chroma    (mDyn1, mDyn3, mRegionDyn, false); break;
-      case SMOOTH_CHROMA    : mId = object.chroma    (mDyn1, mDyn3, mRegionDyn, true ); break;
-      case BRIGHTNESS       : mId = object.brightness(mDyn1,        mRegionDyn, false); break;
-      case SMOOTH_BRIGHTNESS: mId = object.brightness(mDyn1,        mRegionDyn, true ); break;
-      case SATURATION       : mId = object.saturation(mDyn1,        mRegionDyn, false); break;
-      case SMOOTH_SATURATION: mId = object.saturation(mDyn1,        mRegionDyn, true ); break;
-      case CONTRAST         : mId = object.contrast  (mDyn1,        mRegionDyn, false); break;
-      case SMOOTH_CONTRAST  : mId = object.contrast  (mDyn1,        mRegionDyn, true ); break;
+      case ROTATE           : mId = queues.rotate    (mDyn4, mCenterDyn); break;
+      case QUATERNION       : mId = queues.quaternion(mDyn4, mCenterDyn); break;
+      case MOVE             : mId = queues.move      (mDyn3)            ; break;
+      case SCALE            : mId = queues.scale     (mDyn3)            ; break;
+      case SHEAR            : mId = queues.shear     (mDyn3, mCenterDyn); break;
+
+      case DISTORT          : mId = queues.distort   (mDyn3, mCenterDyn, mRegionDyn); break;
+      case DEFORM           : mId = queues.deform    (mDyn3, mCenterDyn, mRegionDyn); break;
+      case SINK             : mId = queues.sink      (mDyn1, mCenterDyn, mRegionDyn); break;
+      case PINCH            : mId = queues.pinch     (mDyn2, mCenterDyn, mRegionDyn); break;
+      case SWIRL            : mId = queues.swirl     (mDyn1, mCenterDyn, mRegionDyn); break;
+      case WAVE             : mId = queues.wave      (mDyn5, mCenterDyn, mRegionDyn); break;
+
+      case ALPHA            : mId = queues.alpha     (mDyn1,        mRegionDyn, false); break;
+      case SMOOTH_ALPHA     : mId = queues.alpha     (mDyn1,        mRegionDyn, true ); break;
+      case CHROMA           : mId = queues.chroma    (mDyn1, mDyn3, mRegionDyn, false); break;
+      case SMOOTH_CHROMA    : mId = queues.chroma    (mDyn1, mDyn3, mRegionDyn, true ); break;
+      case BRIGHTNESS       : mId = queues.brightness(mDyn1,        mRegionDyn, false); break;
+      case SMOOTH_BRIGHTNESS: mId = queues.brightness(mDyn1,        mRegionDyn, true ); break;
+      case SATURATION       : mId = queues.saturation(mDyn1,        mRegionDyn, false); break;
+      case SMOOTH_SATURATION: mId = queues.saturation(mDyn1,        mRegionDyn, true ); break;
+      case CONTRAST         : mId = queues.contrast  (mDyn1,        mRegionDyn, false); break;
+      case SMOOTH_CONTRAST  : mId = queues.contrast  (mDyn1,        mRegionDyn, true ); break;
 
       default: mId = -1;
       }
diff --git a/src/main/java/org/distorted/examples/flag/FlagRenderer.java b/src/main/java/org/distorted/examples/flag/FlagRenderer.java
index 59c00ef..76b3a75 100644
--- a/src/main/java/org/distorted/examples/flag/FlagRenderer.java
+++ b/src/main/java/org/distorted/examples/flag/FlagRenderer.java
@@ -27,7 +27,8 @@ import android.opengl.GLSurfaceView;
 import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.GridCubes;
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedEffectQueues;
+import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.type.Dynamic;
 import org.distorted.library.type.Dynamic5D;
@@ -47,7 +48,8 @@ import javax.microedition.khronos.opengles.GL10;
 class FlagRenderer implements GLSurfaceView.Renderer
 {
     private GLSurfaceView mView;
-    private DistortedObject mObject;
+    private DistortedEffectQueues mQueues;
+    private DistortedTexture mTexture;
     private GridCubes mGrid;
     private int mObjWidth, mObjHeight;
     private DynamicQuat mQuatInt1, mQuatInt2;
@@ -63,11 +65,12 @@ class FlagRenderer implements GLSurfaceView.Renderer
       {
       mView = v;
 
-      mGrid = new GridCubes(50,30,false);
-      mObject = new DistortedObject(500,300,10);
+      mQueues  = new DistortedEffectQueues();
+      mGrid    = new GridCubes(50,30,false);
+      mTexture = new DistortedTexture(500,300,10);
 
-      mObjWidth = mObject.getWidth();
-      mObjHeight= mObject.getHeight();
+      mObjWidth = mTexture.getWidth();
+      mObjHeight= mTexture.getHeight();
 
       mWaveDyn = new Dynamic5D(1000,0.0f);
       mWaveSta1= new Static5D(0,0,-180,0,0);  // all other values besides the
@@ -89,7 +92,7 @@ class FlagRenderer implements GLSurfaceView.Renderer
       Static3D waveCenter = new Static3D(mObjWidth, mObjHeight/2, 0);  // middle of the right edge
       Static4D waveRegion = new Static4D(0,0,mObjWidth,mObjWidth);
 
-      mObject.wave(mWaveDyn, waveCenter, waveRegion);
+      mQueues.wave(mWaveDyn, waveCenter, waveRegion);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -136,7 +139,7 @@ class FlagRenderer implements GLSurfaceView.Renderer
     public void onDrawFrame(GL10 glUnused) 
       {
       GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
-      mObject.draw(System.currentTimeMillis(), mGrid);
+      mQueues.draw(System.currentTimeMillis(), mTexture, mGrid);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -145,7 +148,7 @@ class FlagRenderer implements GLSurfaceView.Renderer
       {
       mScreenMin = width<height ? width:height;
     	
-      mObject.abortEffects(EffectTypes.MATRIX);
+      mQueues.abortEffects(EffectTypes.MATRIX);
       float factor;
 
       if( width*mObjHeight > height*mObjWidth ) // screen is more 'horizontal' than the Object
@@ -157,12 +160,12 @@ class FlagRenderer implements GLSurfaceView.Renderer
         factor = (0.8f*width)/mObjWidth;
         }
 
-      mObject.move( new Static3D( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0) );
-      mObject.scale(factor);
+      mQueues.move( new Static3D( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0) );
+      mQueues.scale(factor);
       Static3D center = new Static3D(mObjWidth/2,mObjHeight/2, 0);
 
-      mObject.quaternion(mQuatInt1, center);
-      mObject.quaternion(mQuatInt2, center);
+      mQueues.quaternion(mQuatInt1, center);
+      mQueues.quaternion(mQuatInt2, center);
        
       Distorted.onSurfaceChanged(width, height); 
       }
@@ -189,7 +192,7 @@ class FlagRenderer implements GLSurfaceView.Renderer
         catch(IOException e) { }
         }  
       
-      mObject.setTexture(bitmap);
+      mTexture.setTexture(bitmap);
       
       try
         {
diff --git a/src/main/java/org/distorted/examples/matrix3d/Matrix3DActivity.java b/src/main/java/org/distorted/examples/matrix3d/Matrix3DActivity.java
index aa45a35..5c66a82 100644
--- a/src/main/java/org/distorted/examples/matrix3d/Matrix3DActivity.java
+++ b/src/main/java/org/distorted/examples/matrix3d/Matrix3DActivity.java
@@ -220,8 +220,8 @@ public class Matrix3DActivity extends Activity implements AdapterView.OnItemSele
     {
     switch(parent.getId())
       {
-      case R.id.matrix3dspinner          : mEffectAdd = pos;
-                                           break;
+      case R.id.matrix3dspinner: mEffectAdd = pos;
+                                 break;
       }
     }
 
diff --git a/src/main/java/org/distorted/examples/matrix3d/Matrix3DEffect.java b/src/main/java/org/distorted/examples/matrix3d/Matrix3DEffect.java
index ecdbd64..2fac1b9 100644
--- a/src/main/java/org/distorted/examples/matrix3d/Matrix3DEffect.java
+++ b/src/main/java/org/distorted/examples/matrix3d/Matrix3DEffect.java
@@ -24,7 +24,7 @@ import android.widget.SeekBar;
 import android.widget.TextView;
 
 import org.distorted.examples.R;
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedEffectQueues;
 import org.distorted.library.EffectNames;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.type.Dynamic1D;
@@ -77,33 +77,33 @@ class Matrix3DEffect implements SeekBar.OnSeekBarChangeListener
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // requires knowledge about effect nature
 
-  void apply(DistortedObject object)
+  void apply(DistortedEffectQueues queues)
     {
     switch(mName)
       {
-      case ROTATE           : mId = object.rotate    (mDyn4, mCenterDyn); break;
-      case QUATERNION       : mId = object.quaternion(mDyn4, mCenterDyn); break;
-      case MOVE             : mId = object.move      (mDyn3)            ; break;
-      case SCALE            : mId = object.scale     (mDyn3)            ; break;
-      case SHEAR            : mId = object.shear     (mDyn3, mCenterDyn); break;
-
-      case DISTORT          : mId = object.distort   (mDyn3, mCenterDyn, mRegionDyn); break;
-      case DEFORM           : mId = object.deform    (mDyn3, mCenterDyn, mRegionDyn); break;
-      case SINK             : mId = object.sink      (mDyn1, mCenterDyn, mRegionDyn); break;
-      case PINCH            : mId = object.pinch     (mDyn2, mCenterDyn, mRegionDyn); break;
-      case SWIRL            : mId = object.swirl     (mDyn1, mCenterDyn, mRegionDyn); break;
-      case WAVE             : mId = object.wave      (mDyn5, mCenterDyn, mRegionDyn); break;
-
-      case ALPHA            : mId = object.alpha     (mDyn1,        mRegionDyn, false); break;
-      case SMOOTH_ALPHA     : mId = object.alpha     (mDyn1,        mRegionDyn, true ); break;
-      case CHROMA           : mId = object.chroma    (mDyn1, mDyn3, mRegionDyn, false); break;
-      case SMOOTH_CHROMA    : mId = object.chroma    (mDyn1, mDyn3, mRegionDyn, true ); break;
-      case BRIGHTNESS       : mId = object.brightness(mDyn1,        mRegionDyn, false); break;
-      case SMOOTH_BRIGHTNESS: mId = object.brightness(mDyn1,        mRegionDyn, true ); break;
-      case SATURATION       : mId = object.saturation(mDyn1,        mRegionDyn, false); break;
-      case SMOOTH_SATURATION: mId = object.saturation(mDyn1,        mRegionDyn, true ); break;
-      case CONTRAST         : mId = object.contrast  (mDyn1,        mRegionDyn, false); break;
-      case SMOOTH_CONTRAST  : mId = object.contrast  (mDyn1,        mRegionDyn, true ); break;
+      case ROTATE           : mId = queues.rotate    (mDyn4, mCenterDyn); break;
+      case QUATERNION       : mId = queues.quaternion(mDyn4, mCenterDyn); break;
+      case MOVE             : mId = queues.move      (mDyn3)            ; break;
+      case SCALE            : mId = queues.scale     (mDyn3)            ; break;
+      case SHEAR            : mId = queues.shear     (mDyn3, mCenterDyn); break;
+
+      case DISTORT          : mId = queues.distort   (mDyn3, mCenterDyn, mRegionDyn); break;
+      case DEFORM           : mId = queues.deform    (mDyn3, mCenterDyn, mRegionDyn); break;
+      case SINK             : mId = queues.sink      (mDyn1, mCenterDyn, mRegionDyn); break;
+      case PINCH            : mId = queues.pinch     (mDyn2, mCenterDyn, mRegionDyn); break;
+      case SWIRL            : mId = queues.swirl     (mDyn1, mCenterDyn, mRegionDyn); break;
+      case WAVE             : mId = queues.wave      (mDyn5, mCenterDyn, mRegionDyn); break;
+
+      case ALPHA            : mId = queues.alpha     (mDyn1,        mRegionDyn, false); break;
+      case SMOOTH_ALPHA     : mId = queues.alpha     (mDyn1,        mRegionDyn, true ); break;
+      case CHROMA           : mId = queues.chroma    (mDyn1, mDyn3, mRegionDyn, false); break;
+      case SMOOTH_CHROMA    : mId = queues.chroma    (mDyn1, mDyn3, mRegionDyn, true ); break;
+      case BRIGHTNESS       : mId = queues.brightness(mDyn1,        mRegionDyn, false); break;
+      case SMOOTH_BRIGHTNESS: mId = queues.brightness(mDyn1,        mRegionDyn, true ); break;
+      case SATURATION       : mId = queues.saturation(mDyn1,        mRegionDyn, false); break;
+      case SMOOTH_SATURATION: mId = queues.saturation(mDyn1,        mRegionDyn, true ); break;
+      case CONTRAST         : mId = queues.contrast  (mDyn1,        mRegionDyn, false); break;
+      case SMOOTH_CONTRAST  : mId = queues.contrast  (mDyn1,        mRegionDyn, true ); break;
 
       default: mId = -1;
       }
diff --git a/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java b/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
index 009ef2d..6ec0dd4 100644
--- a/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
+++ b/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
@@ -34,7 +34,8 @@ import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static1D;
 import org.distorted.library.Distorted;
 import org.distorted.library.GridFlat;
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedEffectQueues;
+import org.distorted.library.DistortedTexture;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -51,7 +52,9 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
    
    private GLSurfaceView mView;
    private DistortedObjectTree mScreen;
-   private DistortedObject mLeaf;
+   private DistortedTexture mLeaf;
+
+   private int mScreenW, mScreenH;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -59,10 +62,14 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
       {     
       mView = v;
 
-      mLeaf = new DistortedObject(LEAF_SIZE,LEAF_SIZE,1);
+      mLeaf = new DistortedTexture(LEAF_SIZE,LEAF_SIZE,1);
       GridFlat grid = new GridFlat(1,1);
+      DistortedEffectQueues queue = new DistortedEffectQueues();
+
+      mScreenW = 9*LEAF_SIZE;
+      mScreenH = 9*LEAF_SIZE;
 
-      mScreen = new DistortedObjectTree(new DistortedObject(9*LEAF_SIZE,9*LEAF_SIZE,1), grid);
+      mScreen = new DistortedObjectTree(new DistortedTexture(mScreenW,mScreenH,0), queue, grid);
      
       Dynamic1D rot = new Dynamic1D(5000,0.0f);
       rot.setMode(Dynamic1D.MODE_JUMP);
@@ -72,9 +79,8 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
       DistortedObjectTree[] mCircleNode = new DistortedObjectTree[NUM_CIRCLES];
     
       int[] colors    = new int[] {0,0,1,  0,0,0,  1,0,0,  1,1,0,  0,1,0}; // blue, black, red, yellow, green  
-      int[] positions = new int[] {0*LEAF_SIZE,2*LEAF_SIZE,  3*LEAF_SIZE,2*LEAF_SIZE,  6*LEAF_SIZE,2*LEAF_SIZE,  3*LEAF_SIZE/2,9*LEAF_SIZE/2,  9*LEAF_SIZE/2,9*LEAF_SIZE/2};
+      int[] positions = new int[] {0,2*LEAF_SIZE,  3*LEAF_SIZE,2*LEAF_SIZE,  6*LEAF_SIZE,2*LEAF_SIZE,  3*LEAF_SIZE/2,9*LEAF_SIZE/2,  9*LEAF_SIZE/2,9*LEAF_SIZE/2};
       
-      DistortedObject tmp;
       Static3D center = new Static3D(3*LEAF_SIZE/2, 3*LEAF_SIZE/2, 0);
       Static3D axis   = new Static3D(0,0,1);
       Static3D moveVector = new Static3D(0,LEAF_SIZE,0);
@@ -83,14 +89,15 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
         {
         if( i==0 )
           {
-          mCircleNode[i] = new DistortedObjectTree(new DistortedObject(3*LEAF_SIZE,3*LEAF_SIZE,1), grid);
+          queue = new DistortedEffectQueues();
+          mCircleNode[i] = new DistortedObjectTree(new DistortedTexture(3*LEAF_SIZE,3*LEAF_SIZE,1), queue, grid);
         
           for(int j=0; j<NUM_LEAVES; j++)
             {
-            tmp = new DistortedObject(mLeaf, Distorted.CLONE_BITMAP);
-            mCircleNode[i].attach(tmp,grid);
-            tmp.rotate( new Static1D(j*(360/NUM_LEAVES)), axis, center );
-            tmp.move(moveVector);
+            queue = new DistortedEffectQueues();
+            mCircleNode[i].attach(mLeaf, queue, grid);
+            queue.rotate( new Static1D(j*(360/NUM_LEAVES)), axis, center );
+            queue.move(moveVector);
             }
           }
         else
@@ -99,10 +106,10 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
           }
       
         mScreen.attach(mCircleNode[i]);
-        tmp = mCircleNode[i].getObject();
-        tmp.move( new Static3D(positions[2*i], positions[2*i+1], 0) );
-        tmp.rotate( rot, axis, center );
-        tmp.chroma( new Static1D(0.5f), new Static3D(colors[3*i],colors[3*i+1], colors[3*i+2]) );
+        queue = mCircleNode[i].getQueues();
+        queue.move( new Static3D(positions[2*i], positions[2*i+1], 0) );
+        queue.rotate( rot, axis, center );
+        queue.chroma( new Static1D(0.5f), new Static3D(colors[3*i],colors[3*i+1], colors[3*i+2]) );
         }
       }
 
@@ -118,27 +125,25 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
     
     public void onSurfaceChanged(GL10 glUnused, int width, int height) 
       {
-      DistortedObject bmp = mScreen.getObject();
-      int bmpWidth  = bmp.getWidth();
-      int bmpHeight = bmp.getHeight();
-     
-      bmp.abortEffects(EffectTypes.MATRIX);
+      DistortedEffectQueues queues = mScreen.getQueues();
+
+      queues.abortEffects(EffectTypes.MATRIX);
       
-      if( (float)bmpHeight/bmpWidth > (float)height/width )
+      if( (float)mScreenH/mScreenW > (float)height/width )
         {
-        int w = (height*bmpWidth)/bmpHeight;
-        float factor = (float)height/bmpHeight;
+        int w = (height*mScreenW)/mScreenH;
+        float factor = (float)height/mScreenH;
 
-        bmp.move( new Static3D((width-w)/2 ,0, 0) );
-        bmp.scale( factor );
+        queues.move( new Static3D((width-w)/2 ,0, 0) );
+        queues.scale( factor );
         }
       else
         {
-        int h = (width*bmpHeight)/bmpWidth;
-        float factor = (float)width/bmpWidth;
+        int h = (width*mScreenH)/mScreenW;
+        float factor = (float)width/mScreenW;
 
-        bmp.move( new Static3D(0,(height-h)/2,0) );
-        bmp.scale( factor );
+        queues.move( new Static3D(0,(height-h)/2,0) );
+        queues.scale( factor );
         }
       
       Distorted.onSurfaceChanged(width, height); 
diff --git a/src/main/java/org/distorted/examples/save/SaveRenderer.java b/src/main/java/org/distorted/examples/save/SaveRenderer.java
index cbd792e..7a786fc 100644
--- a/src/main/java/org/distorted/examples/save/SaveRenderer.java
+++ b/src/main/java/org/distorted/examples/save/SaveRenderer.java
@@ -31,7 +31,8 @@ import javax.microedition.khronos.opengles.GL10;
 import org.distorted.examples.R;
 
 import org.distorted.library.Distorted;
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedEffectQueues;
+import org.distorted.library.DistortedTexture;
 import org.distorted.library.GridFlat;
 import org.distorted.library.DistortedFramebuffer;
 import org.distorted.library.EffectTypes;
@@ -52,12 +53,10 @@ import android.os.Environment;
 class SaveRenderer implements GLSurfaceView.Renderer
   {
   private GLSurfaceView mView;
-  private DistortedObject mGirl;
+  private DistortedTexture mGirl;
+  private DistortedEffectQueues mQueues;
   private GridFlat mGrid;
   private DistortedFramebuffer mOffscreen;
-  private Static3D pLeft, pRight;
-  private Static4D sinkRegion;
-  private Dynamic1D diSink;
   private Static1D s0;
   private Dynamic3D mScaleDyn;
   private Static3D mScaleFactor;
@@ -77,20 +76,24 @@ class SaveRenderer implements GLSurfaceView.Renderer
       
     boobsSink  = 1.0f;
       
-    pLeft = new Static3D(132, 264, 0);
-    pRight= new Static3D(247, 264, 0);
+    Static3D pLeft = new Static3D(132, 264, 0);
+    Static3D pRight= new Static3D(247, 264, 0);
       
-    sinkRegion = new Static4D(0,0,60,60);
+    Static4D sinkRegion = new Static4D(0,0,60,60);
       
     s0 = new Static1D(boobsSink);
       
-    diSink = new Dynamic1D();
+    Dynamic1D diSink = new Dynamic1D();
     diSink.add(s0);
 
     mScale = 1.0f;
     mScaleDyn = new Dynamic3D();
     mScaleFactor = new Static3D(mScale,mScale,1.0f);
     mScaleDyn.add(mScaleFactor);
+
+    mQueues = new DistortedEffectQueues();
+    mQueues.sink( diSink, pLeft , sinkRegion);
+    mQueues.sink( diSink, pRight, sinkRegion);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -145,11 +148,13 @@ class SaveRenderer implements GLSurfaceView.Renderer
     {
     GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
 
+    long time = System.currentTimeMillis();
+
     if( isSaving )  // render to an offscreen buffer and read pixels
       {
-      mGirl.abortEffects(EffectTypes.MATRIX);
-      mGirl.scale(mScaleFactor);
-      mGirl.draw(System.currentTimeMillis(), mGrid, mOffscreen);
+      mQueues.abortEffects(EffectTypes.MATRIX);
+      mQueues.scale(mScaleFactor);
+      mQueues.draw(time, mGirl, mGrid, mOffscreen);
       applyMatrixEffects(scrWidth,scrHeight);
 
       int fW =(int)(mScale*bmpWidth);
@@ -164,33 +169,33 @@ class SaveRenderer implements GLSurfaceView.Renderer
       isSaving = false;
       }
 
-    mGirl.draw(System.currentTimeMillis(), mGrid);
+    mQueues.draw(time, mGirl, mGrid);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private void applyMatrixEffects(int width, int height)
     {
-    mGirl.abortEffects(EffectTypes.MATRIX);
+    mQueues.abortEffects(EffectTypes.MATRIX);
 
     if( (float)bmpHeight/bmpWidth > (float)height/width )
       {
       int w = (height*bmpWidth)/bmpHeight;
       float factor = (float)height/bmpHeight;
 
-      mGirl.move( new Static3D((width-w)/2,0,0) );
-      mGirl.scale(factor);
+      mQueues.move( new Static3D((width-w)/2,0,0) );
+      mQueues.scale(factor);
       }
     else
       {
       int h = (width*bmpHeight)/bmpWidth;
       float factor = (float)width/bmpWidth;
 
-      mGirl.move( new Static3D(0,(height-h)/2,0) );
-      mGirl.scale(factor);
+      mQueues.move( new Static3D(0,(height-h)/2,0) );
+      mQueues.scale(factor);
       }
 
-    mGirl.scale(mScaleDyn);
+    mQueues.scale(mScaleDyn);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -229,12 +234,9 @@ class SaveRenderer implements GLSurfaceView.Renderer
     bmpWidth  = bitmap.getWidth();
 
     mGrid = new GridFlat(30,30*bmpHeight/bmpWidth);
-    mGirl = new DistortedObject(bmpWidth,bmpHeight,1);
+    mGirl = new DistortedTexture(bmpWidth,bmpHeight,0);
     mGirl.setTexture(bitmap);
 
-    mGirl.sink( diSink, pLeft , sinkRegion);
-    mGirl.sink( diSink, pRight, sinkRegion);
-
     mOffscreen = new DistortedFramebuffer(bmpWidth,bmpHeight);
 
     try
diff --git a/src/main/java/org/distorted/examples/wind/WindEffectsManager.java b/src/main/java/org/distorted/examples/wind/WindEffectsManager.java
index 1ab24d0..e2bb8ad 100644
--- a/src/main/java/org/distorted/examples/wind/WindEffectsManager.java
+++ b/src/main/java/org/distorted/examples/wind/WindEffectsManager.java
@@ -21,7 +21,8 @@ package org.distorted.examples.wind;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedEffectQueues;
+import org.distorted.library.DistortedTexture;
 import org.distorted.library.type.Dynamic;
 import org.distorted.library.type.Dynamic3D;
 import org.distorted.library.type.Dynamic5D;
@@ -47,10 +48,10 @@ class WindEffectsManager
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  WindEffectsManager(DistortedObject obj)
+  WindEffectsManager(DistortedTexture texture)
     {
-    mHeight = obj.getHeight();
-    mWidth  = obj.getWidth();
+    mHeight = texture.getHeight();
+    mWidth  = texture.getWidth();
 
     shearFactor = new Static3D(0,0,0);
     shearDynamic= new Dynamic3D();
@@ -89,7 +90,7 @@ class WindEffectsManager
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  synchronized void apply(DistortedObject obj, int wind)
+  synchronized void apply(DistortedEffectQueues queues, int wind)
     {
     Static3D midLeft = new Static3D(0,mHeight/2,0);
     Static3D midRight = new Static3D(mWidth,mHeight/2,0);
@@ -97,12 +98,12 @@ class WindEffectsManager
 
     setWind(wind);
 
-    obj.shear(shearDynamic,midLeft);
-    obj.scale(scaleDynamic);
-    obj.deform(deformForce,midRight);
-    obj.wave(windDynamic1, midRight, windRegion);
-    obj.wave(windDynamic2, midRight, windRegion);
-    obj.wave(windDynamic3, midRight, windRegion);
+    queues.shear(shearDynamic,midLeft);
+    queues.scale(scaleDynamic);
+    queues.deform(deformForce,midRight);
+    queues.wave(windDynamic1, midRight, windRegion);
+    queues.wave(windDynamic2, midRight, windRegion);
+    queues.wave(windDynamic3, midRight, windRegion);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/wind/WindRenderer.java b/src/main/java/org/distorted/examples/wind/WindRenderer.java
index 914a4ca..36ef7fd 100644
--- a/src/main/java/org/distorted/examples/wind/WindRenderer.java
+++ b/src/main/java/org/distorted/examples/wind/WindRenderer.java
@@ -27,7 +27,8 @@ import android.opengl.GLSurfaceView;
 import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.GridCubes;
-import org.distorted.library.DistortedObject;
+import org.distorted.library.DistortedEffectQueues;
+import org.distorted.library.DistortedTexture;
 import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
 
@@ -42,7 +43,8 @@ import javax.microedition.khronos.opengles.GL10;
 class WindRenderer implements GLSurfaceView.Renderer
 {
    private GLSurfaceView mView;
-   private DistortedObject mObject;
+   private DistortedEffectQueues mQueues;
+   private DistortedTexture mTexture;
    private GridCubes mGrid;
    private WindEffectsManager mEffects;
    private int mObjWidth, mObjHeight;
@@ -55,11 +57,12 @@ class WindRenderer implements GLSurfaceView.Renderer
       mView = view;
 
       mGrid    = new GridCubes(50,30,false);
-      mObject  = new DistortedObject(50,30,1);
-      mEffects = new WindEffectsManager(mObject);
+      mQueues  = new DistortedEffectQueues();
+      mTexture = new DistortedTexture(50,30,1);
+      mEffects = new WindEffectsManager(mTexture);
 
-      mObjWidth = mObject.getWidth();
-      mObjHeight= mObject.getHeight();
+      mObjWidth = mTexture.getWidth();
+      mObjHeight= mTexture.getHeight();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -75,27 +78,27 @@ class WindRenderer implements GLSurfaceView.Renderer
    public void onDrawFrame(GL10 glUnused) 
       {
       GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
-      mObject.draw(System.currentTimeMillis(),mGrid);
+      mQueues.draw(System.currentTimeMillis(),mTexture, mGrid);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
     
    public void onSurfaceChanged(GL10 glUnused, int width, int height) 
       {
-      mObject.abortAllEffects();
+      mQueues.abortAllEffects();
 
       float factor = ( (float)(width<height? width:height) )/(mObjHeight + 1.4f*mObjWidth);
 
-      mObject.move( new Static3D( factor*mObjHeight*0.58f , factor*mObjHeight*0.08f , 0) );
-      mObject.scale(factor);
+      mQueues.move( new Static3D( factor*mObjHeight*0.58f , factor*mObjHeight*0.08f , 0) );
+      mQueues.scale(factor);
 
       Static1D angle = new Static1D(-45);
       Static3D axis  = new Static3D(0,0,1);
       Static3D center= new Static3D(0,mObjHeight/2,0);
 
-      mObject.rotate(angle, axis, center);
+      mQueues.rotate(angle, axis, center);
 
-      mEffects.apply(mObject, mWind);
+      mEffects.apply(mQueues,mWind);
 
       Distorted.onSurfaceChanged(width, height);
       }
@@ -122,7 +125,7 @@ class WindRenderer implements GLSurfaceView.Renderer
         catch(IOException e) { }
         }
 
-      mObject.setTexture(bitmap);
+      mTexture.setTexture(bitmap);
 
       try
         {
