commit 8005e7628dc7223c2723c6a78a3c7b3a408af0a1
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Oct 1 16:33:33 2021 +0200

    Reename ObjectList to a more logical ObjectType.

diff --git a/src/main/java/org/distorted/objectlib/main/Cubit.java b/src/main/java/org/distorted/objectlib/main/Cubit.java
index 0484c336..ab2fcc07 100644
--- a/src/main/java/org/distorted/objectlib/main/Cubit.java
+++ b/src/main/java/org/distorted/objectlib/main/Cubit.java
@@ -155,7 +155,7 @@ public class Cubit
     for(int axis=0; axis<mNumAxis; axis++)
       {
       result += (mRotationRow[axis]<<accumulativeShift);
-      accumulativeShift += ObjectList.MAX_OBJECT_SIZE;
+      accumulativeShift += ObjectType.MAX_OBJECT_SIZE;
       }
 
     return result;
diff --git a/src/main/java/org/distorted/objectlib/main/ObjectList.java b/src/main/java/org/distorted/objectlib/main/ObjectList.java
deleted file mode 100644
index 09bee804..00000000
--- a/src/main/java/org/distorted/objectlib/main/ObjectList.java
+++ /dev/null
@@ -1,309 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Copyright 2020 Leszek Koltunski                                                               //
-//                                                                                               //
-// This file is part of Magic Cube.                                                              //
-//                                                                                               //
-// Magic Cube is free software: you can redistribute it and/or modify                            //
-// it under the terms of the GNU General Public License as published by                          //
-// the Free Software Foundation, either version 2 of the License, or                             //
-// (at your option) any later version.                                                           //
-//                                                                                               //
-// Magic Cube is distributed in the hope that it will be useful,                                 //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
-// GNU General Public License for more details.                                                  //
-//                                                                                               //
-// You should have received a copy of the GNU General Public License                             //
-// along with Magic Cube.  If not, see <http://www.gnu.org/licenses/>.                           //
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-package org.distorted.objectlib.main;
-
-import android.content.res.Resources;
-
-import org.distorted.library.main.DistortedEffects;
-import org.distorted.library.main.DistortedTexture;
-import org.distorted.library.mesh.MeshSquare;
-import org.distorted.library.type.Static4D;
-import org.distorted.objectlib.R;
-import org.distorted.objectlib.objects.TwistyBandaged2Bar;
-import org.distorted.objectlib.objects.TwistyBandaged3Plate;
-import org.distorted.objectlib.objects.TwistyBandagedEvil;
-import org.distorted.objectlib.objects.TwistyBandagedFused;
-import org.distorted.objectlib.objects.TwistyCube;
-import org.distorted.objectlib.objects.TwistyDiamond;
-import org.distorted.objectlib.objects.TwistyDino4;
-import org.distorted.objectlib.objects.TwistyDino6;
-import org.distorted.objectlib.objects.TwistyHelicopter;
-import org.distorted.objectlib.objects.TwistyIvy;
-import org.distorted.objectlib.objects.TwistyJing;
-import org.distorted.objectlib.objects.TwistyKilominx;
-import org.distorted.objectlib.objects.TwistyMegaminx;
-import org.distorted.objectlib.objects.TwistyMirror;
-import org.distorted.objectlib.objects.TwistyPyraminx;
-import org.distorted.objectlib.objects.TwistyRedi;
-import org.distorted.objectlib.objects.TwistyRex;
-import org.distorted.objectlib.objects.TwistySkewb;
-import org.distorted.objectlib.objects.TwistySquare1;
-import org.distorted.objectlib.objects.TwistySquare2;
-import org.distorted.objectlib.objects.TwistyUltimate;
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-public enum ObjectList
-  {
-  CUBE_2 ( 0, 2, 12, 12, R.drawable.small_cube2, R.drawable.medium_cube2, R.drawable.big_cube2, R.drawable.huge_cube2),
-  CUBE_3 ( 0, 3, 16, 17, R.drawable.small_cube3, R.drawable.medium_cube3, R.drawable.big_cube3, R.drawable.huge_cube3),
-  CUBE_4 ( 0, 4, 20, 24, R.drawable.small_cube4, R.drawable.medium_cube4, R.drawable.big_cube4, R.drawable.huge_cube4),
-  CUBE_5 ( 0, 5, 24, 28, R.drawable.small_cube5, R.drawable.medium_cube5, R.drawable.big_cube5, R.drawable.huge_cube5),
-  JING_2 ( 1, 2, 11, 11, R.drawable.small_jing2, R.drawable.medium_jing2, R.drawable.big_jing2, R.drawable.huge_jing2),
-  PYRA_3 ( 1, 3, 10, 10, R.drawable.small_pyra3, R.drawable.medium_pyra3, R.drawable.big_pyra3, R.drawable.huge_pyra3),
-  PYRA_4 ( 1, 4, 14, 17, R.drawable.small_pyra4, R.drawable.medium_pyra4, R.drawable.big_pyra4, R.drawable.huge_pyra4),
-  PYRA_5 ( 1, 5, 20, 23, R.drawable.small_pyra5, R.drawable.medium_pyra5, R.drawable.big_pyra5, R.drawable.huge_pyra5),
-  KILO_3 ( 2, 3, 18, 18, R.drawable.small_kilo3, R.drawable.medium_kilo3, R.drawable.big_kilo3, R.drawable.huge_kilo3),
-  KILO_5 ( 2, 5, 33, 33, R.drawable.small_kilo5, R.drawable.medium_kilo5, R.drawable.big_kilo5, R.drawable.huge_kilo5),
-  MEGA_3 ( 2, 3, 21, 21, R.drawable.small_mega3, R.drawable.medium_mega3, R.drawable.big_mega3, R.drawable.huge_mega3),
-  MEGA_5 ( 2, 5, 35, 37, R.drawable.small_mega5, R.drawable.medium_mega5, R.drawable.big_mega5, R.drawable.huge_mega5),
-  ULTI_2 ( 3, 2, 18, 18, R.drawable.small_ulti , R.drawable.medium_ulti , R.drawable.big_ulti , R.drawable.huge_ulti ),
-  DIAM_2 ( 3, 2, 10, 12, R.drawable.small_diam2, R.drawable.medium_diam2, R.drawable.big_diam2, R.drawable.huge_diam2),
-  DIAM_3 ( 3, 3, 18, 24, R.drawable.small_diam3, R.drawable.medium_diam3, R.drawable.big_diam3, R.drawable.huge_diam3),
-  DIAM_4 ( 3, 4, 32, 32, R.drawable.small_diam4, R.drawable.medium_diam4, R.drawable.big_diam4, R.drawable.huge_diam4),
-  DINO_3 ( 4, 3, 10, 10, R.drawable.small_dino , R.drawable.medium_dino , R.drawable.big_dino , R.drawable.huge_dino ),
-  DIN4_3 ( 4, 3,  7,  7, R.drawable.small_din4 , R.drawable.medium_din4 , R.drawable.big_din4 , R.drawable.huge_din4 ),
-  REDI_3 ( 4, 3, 14, 16, R.drawable.small_redi , R.drawable.medium_redi , R.drawable.big_redi , R.drawable.huge_redi ),
-  HELI_3 ( 4, 3, 18, 20, R.drawable.small_heli , R.drawable.medium_heli , R.drawable.big_heli , R.drawable.huge_heli ),
-  SKEW_2 ( 5, 2, 11, 11, R.drawable.small_skew2, R.drawable.medium_skew2, R.drawable.big_skew2, R.drawable.huge_skew2),
-  SKEW_3 ( 5, 3, 17, 21, R.drawable.small_skew3, R.drawable.medium_skew3, R.drawable.big_skew3, R.drawable.huge_skew3),
-  IVY_2  ( 5, 2,  8,  8, R.drawable.small_ivy  , R.drawable.medium_ivy  , R.drawable.big_ivy  , R.drawable.huge_ivy  ),
-  REX_3  ( 5, 3, 16, 19, R.drawable.small_rex  , R.drawable.medium_rex  , R.drawable.big_rex  , R.drawable.huge_rex  ),
-  BAN1_3 ( 6, 3, 16, 16, R.drawable.small_ban1 , R.drawable.medium_ban1 , R.drawable.big_ban1 , R.drawable.huge_ban1 ),
-  BAN2_3 ( 6, 3, 16, 16, R.drawable.small_ban2 , R.drawable.medium_ban2 , R.drawable.big_ban2 , R.drawable.huge_ban2 ),
-  BAN3_3 ( 6, 3, 16, 16, R.drawable.small_ban3 , R.drawable.medium_ban3 , R.drawable.big_ban3 , R.drawable.huge_ban3 ),
-  BAN4_3 ( 6, 3, 16, 16, R.drawable.small_ban4 , R.drawable.medium_ban4 , R.drawable.big_ban4 , R.drawable.huge_ban4 ),
-  SQU1_3 ( 7, 3, 24, 24, R.drawable.small_squa1, R.drawable.medium_squa1, R.drawable.big_squa1, R.drawable.huge_squa1),
-  SQU2_3 ( 7, 3, 24, 24, R.drawable.small_squa2, R.drawable.medium_squa2, R.drawable.big_squa2, R.drawable.huge_squa2),
-  MIRR_2 ( 7, 2, 12, 12, R.drawable.small_mirr2, R.drawable.medium_mirr2, R.drawable.big_mirr2, R.drawable.huge_mirr2),
-  MIRR_3 ( 7, 3, 16, 17, R.drawable.small_mirr3, R.drawable.medium_mirr3, R.drawable.big_mirr3, R.drawable.huge_mirr3),
-  ;
-
-  public static final int NUM_OBJECTS = values().length;
-  public static final int MAX_LEVEL;
-  public static final int MAX_SCRAMBLE;
-  public static final int MAX_OBJECT_SIZE;
-
-  private final int mRow, mSize, mDBLevels, mNumScrambles;
-  private final int mSmallIconID, mMediumIconID, mBigIconID, mHugeIconID;
-
-  private static final ObjectList[] objects;
-  private static int[] mIndices;
-  private static int mColCount, mRowCount;
-
-  static
-    {
-    int i = 0;
-    objects = new ObjectList[NUM_OBJECTS];
-    int maxLevel   = Integer.MIN_VALUE;
-    int maxScramble= Integer.MIN_VALUE;
-    int maxSize    = Integer.MIN_VALUE;
-
-    for(ObjectList object: ObjectList.values())
-      {
-      objects[i++] = object;
-
-      if( object.mNumScrambles> maxScramble ) maxScramble= object.mNumScrambles;
-      if( object.mDBLevels    > maxLevel    ) maxLevel   = object.mDBLevels;
-      if( object.mSize        > maxSize     ) maxSize    = object.mSize;
-      }
-
-    MAX_LEVEL       = maxLevel;
-    MAX_SCRAMBLE    = maxScramble;
-    MAX_OBJECT_SIZE = maxSize;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private static void setUpColAndRow()
-    {
-    mIndices = new int[NUM_OBJECTS];
-    mRowCount= 0;
-
-    for(int obj=0; obj<NUM_OBJECTS; obj++)
-      {
-      mIndices[obj] = objects[obj].mRow;
-      if( mIndices[obj]>=mRowCount ) mRowCount = mIndices[obj]+1;
-      }
-
-    mColCount = 0;
-
-    for(int row=0; row<mRowCount; row++)
-      {
-      int numObjects = computeNumObjectsInRow(row);
-      if( numObjects>mColCount ) mColCount = numObjects;
-      }
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private static int computeNumObjectsInRow(int row)
-    {
-    int num=0;
-
-    for(int object=0; object<NUM_OBJECTS; object++)
-      {
-      if( objects[object].mRow == row ) num++;
-      }
-
-    return num;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static int getColumnCount()
-    {
-    if( mIndices==null ) setUpColAndRow();
-
-    return mColCount;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static int getRowCount()
-    {
-    if( mIndices==null ) setUpColAndRow();
-
-    return mRowCount;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static int[] getIndices()
-    {
-    if( mIndices==null ) setUpColAndRow();
-
-    return mIndices;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static ObjectList getObject(int ordinal)
-    {
-    return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal] : CUBE_3;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static int getOrdinal(String name)
-    {
-    for(int i=0; i<NUM_OBJECTS; i++)
-      {
-      if( objects[i].name().equals(name) ) return i;
-      }
-
-    return -1;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static String getObjectList()
-    {
-    StringBuilder list = new StringBuilder();
-
-    for(int i=0; i<NUM_OBJECTS; i++)
-      {
-      if( i>0 ) list.append(',');
-      list.append(objects[i].name());
-      }
-
-    return list.toString();
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static int getDBLevel(int ordinal)
-    {
-    return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal].mDBLevels : 0;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static int getNumScramble(int ordinal)
-    {
-    return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal].mNumScrambles : 0;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  ObjectList(int row, int size, int db, int scrambles, int smallIcon, int mediumIcon, int bigIcon, int hugeIcon)
-    {
-    mRow         = row;
-    mSize        = size;
-    mDBLevels    = db;
-    mNumScrambles= scrambles;
-    mSmallIconID = smallIcon;
-    mMediumIconID= mediumIcon;
-    mBigIconID   = bigIcon;
-    mHugeIconID  = hugeIcon;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int getIconID(int size)
-    {
-    switch(size)
-      {
-      case 0: return mSmallIconID;
-      case 1: return mMediumIconID;
-      case 2: return mBigIconID;
-      case 3: return mHugeIconID;
-      }
-
-    return mSmallIconID;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public TwistyObject create(Static4D quat, int[][] moves, Resources res, int scrWidth)
-    {
-    DistortedTexture texture = new DistortedTexture();
-    DistortedEffects effects = new DistortedEffects();
-    MeshSquare mesh          = new MeshSquare(20,20);   // mesh of the node, not of the cubits
-
-    switch(ordinal())
-      {
-      case  0: return new TwistyCube          (objects[ 0].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case  1: return new TwistyCube          (objects[ 1].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case  2: return new TwistyCube          (objects[ 2].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case  3: return new TwistyCube          (objects[ 3].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case  4: return new TwistyJing          (objects[ 4].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case  5: return new TwistyPyraminx      (objects[ 5].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case  6: return new TwistyPyraminx      (objects[ 6].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case  7: return new TwistyPyraminx      (objects[ 7].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case  8: return new TwistyKilominx      (objects[ 8].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case  9: return new TwistyKilominx      (objects[ 9].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 10: return new TwistyMegaminx      (objects[10].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 11: return new TwistyMegaminx      (objects[11].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 12: return new TwistyUltimate      (objects[12].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 13: return new TwistyDiamond       (objects[13].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 14: return new TwistyDiamond       (objects[14].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 15: return new TwistyDiamond       (objects[15].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 16: return new TwistyDino6         (objects[16].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 17: return new TwistyDino4         (objects[17].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 18: return new TwistyRedi          (objects[18].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 19: return new TwistyHelicopter    (objects[19].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 20: return new TwistySkewb         (objects[20].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 21: return new TwistySkewb         (objects[21].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 22: return new TwistyIvy           (objects[22].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 23: return new TwistyRex           (objects[23].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 24: return new TwistyBandagedFused (objects[24].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 25: return new TwistyBandaged2Bar  (objects[25].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 26: return new TwistyBandaged3Plate(objects[26].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 27: return new TwistyBandagedEvil  (objects[27].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 28: return new TwistySquare1       (objects[28].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 29: return new TwistySquare2       (objects[29].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 30: return new TwistyMirror        (objects[30].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      case 31: return new TwistyMirror        (objects[31].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
-      }
-
-    return null;
-    }
-  }
diff --git a/src/main/java/org/distorted/objectlib/main/ObjectType.java b/src/main/java/org/distorted/objectlib/main/ObjectType.java
new file mode 100644
index 00000000..0d29dd6e
--- /dev/null
+++ b/src/main/java/org/distorted/objectlib/main/ObjectType.java
@@ -0,0 +1,309 @@
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Copyright 2020 Leszek Koltunski                                                               //
+//                                                                                               //
+// This file is part of Magic Cube.                                                              //
+//                                                                                               //
+// Magic Cube is free software: you can redistribute it and/or modify                            //
+// it under the terms of the GNU General Public License as published by                          //
+// the Free Software Foundation, either version 2 of the License, or                             //
+// (at your option) any later version.                                                           //
+//                                                                                               //
+// Magic Cube is distributed in the hope that it will be useful,                                 //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
+// GNU General Public License for more details.                                                  //
+//                                                                                               //
+// You should have received a copy of the GNU General Public License                             //
+// along with Magic Cube.  If not, see <http://www.gnu.org/licenses/>.                           //
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+package org.distorted.objectlib.main;
+
+import android.content.res.Resources;
+
+import org.distorted.library.main.DistortedEffects;
+import org.distorted.library.main.DistortedTexture;
+import org.distorted.library.mesh.MeshSquare;
+import org.distorted.library.type.Static4D;
+import org.distorted.objectlib.R;
+import org.distorted.objectlib.objects.TwistyBandaged2Bar;
+import org.distorted.objectlib.objects.TwistyBandaged3Plate;
+import org.distorted.objectlib.objects.TwistyBandagedEvil;
+import org.distorted.objectlib.objects.TwistyBandagedFused;
+import org.distorted.objectlib.objects.TwistyCube;
+import org.distorted.objectlib.objects.TwistyDiamond;
+import org.distorted.objectlib.objects.TwistyDino4;
+import org.distorted.objectlib.objects.TwistyDino6;
+import org.distorted.objectlib.objects.TwistyHelicopter;
+import org.distorted.objectlib.objects.TwistyIvy;
+import org.distorted.objectlib.objects.TwistyJing;
+import org.distorted.objectlib.objects.TwistyKilominx;
+import org.distorted.objectlib.objects.TwistyMegaminx;
+import org.distorted.objectlib.objects.TwistyMirror;
+import org.distorted.objectlib.objects.TwistyPyraminx;
+import org.distorted.objectlib.objects.TwistyRedi;
+import org.distorted.objectlib.objects.TwistyRex;
+import org.distorted.objectlib.objects.TwistySkewb;
+import org.distorted.objectlib.objects.TwistySquare1;
+import org.distorted.objectlib.objects.TwistySquare2;
+import org.distorted.objectlib.objects.TwistyUltimate;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+public enum ObjectType
+  {
+  CUBE_2 ( 0, 2, 12, 12, R.drawable.small_cube2, R.drawable.medium_cube2, R.drawable.big_cube2, R.drawable.huge_cube2),
+  CUBE_3 ( 0, 3, 16, 17, R.drawable.small_cube3, R.drawable.medium_cube3, R.drawable.big_cube3, R.drawable.huge_cube3),
+  CUBE_4 ( 0, 4, 20, 24, R.drawable.small_cube4, R.drawable.medium_cube4, R.drawable.big_cube4, R.drawable.huge_cube4),
+  CUBE_5 ( 0, 5, 24, 28, R.drawable.small_cube5, R.drawable.medium_cube5, R.drawable.big_cube5, R.drawable.huge_cube5),
+  JING_2 ( 1, 2, 11, 11, R.drawable.small_jing2, R.drawable.medium_jing2, R.drawable.big_jing2, R.drawable.huge_jing2),
+  PYRA_3 ( 1, 3, 10, 10, R.drawable.small_pyra3, R.drawable.medium_pyra3, R.drawable.big_pyra3, R.drawable.huge_pyra3),
+  PYRA_4 ( 1, 4, 14, 17, R.drawable.small_pyra4, R.drawable.medium_pyra4, R.drawable.big_pyra4, R.drawable.huge_pyra4),
+  PYRA_5 ( 1, 5, 20, 23, R.drawable.small_pyra5, R.drawable.medium_pyra5, R.drawable.big_pyra5, R.drawable.huge_pyra5),
+  KILO_3 ( 2, 3, 18, 18, R.drawable.small_kilo3, R.drawable.medium_kilo3, R.drawable.big_kilo3, R.drawable.huge_kilo3),
+  KILO_5 ( 2, 5, 33, 33, R.drawable.small_kilo5, R.drawable.medium_kilo5, R.drawable.big_kilo5, R.drawable.huge_kilo5),
+  MEGA_3 ( 2, 3, 21, 21, R.drawable.small_mega3, R.drawable.medium_mega3, R.drawable.big_mega3, R.drawable.huge_mega3),
+  MEGA_5 ( 2, 5, 35, 37, R.drawable.small_mega5, R.drawable.medium_mega5, R.drawable.big_mega5, R.drawable.huge_mega5),
+  ULTI_2 ( 3, 2, 18, 18, R.drawable.small_ulti , R.drawable.medium_ulti , R.drawable.big_ulti , R.drawable.huge_ulti ),
+  DIAM_2 ( 3, 2, 10, 12, R.drawable.small_diam2, R.drawable.medium_diam2, R.drawable.big_diam2, R.drawable.huge_diam2),
+  DIAM_3 ( 3, 3, 18, 24, R.drawable.small_diam3, R.drawable.medium_diam3, R.drawable.big_diam3, R.drawable.huge_diam3),
+  DIAM_4 ( 3, 4, 32, 32, R.drawable.small_diam4, R.drawable.medium_diam4, R.drawable.big_diam4, R.drawable.huge_diam4),
+  DINO_3 ( 4, 3, 10, 10, R.drawable.small_dino , R.drawable.medium_dino , R.drawable.big_dino , R.drawable.huge_dino ),
+  DIN4_3 ( 4, 3,  7,  7, R.drawable.small_din4 , R.drawable.medium_din4 , R.drawable.big_din4 , R.drawable.huge_din4 ),
+  REDI_3 ( 4, 3, 14, 16, R.drawable.small_redi , R.drawable.medium_redi , R.drawable.big_redi , R.drawable.huge_redi ),
+  HELI_3 ( 4, 3, 18, 20, R.drawable.small_heli , R.drawable.medium_heli , R.drawable.big_heli , R.drawable.huge_heli ),
+  SKEW_2 ( 5, 2, 11, 11, R.drawable.small_skew2, R.drawable.medium_skew2, R.drawable.big_skew2, R.drawable.huge_skew2),
+  SKEW_3 ( 5, 3, 17, 21, R.drawable.small_skew3, R.drawable.medium_skew3, R.drawable.big_skew3, R.drawable.huge_skew3),
+  IVY_2  ( 5, 2,  8,  8, R.drawable.small_ivy  , R.drawable.medium_ivy  , R.drawable.big_ivy  , R.drawable.huge_ivy  ),
+  REX_3  ( 5, 3, 16, 19, R.drawable.small_rex  , R.drawable.medium_rex  , R.drawable.big_rex  , R.drawable.huge_rex  ),
+  BAN1_3 ( 6, 3, 16, 16, R.drawable.small_ban1 , R.drawable.medium_ban1 , R.drawable.big_ban1 , R.drawable.huge_ban1 ),
+  BAN2_3 ( 6, 3, 16, 16, R.drawable.small_ban2 , R.drawable.medium_ban2 , R.drawable.big_ban2 , R.drawable.huge_ban2 ),
+  BAN3_3 ( 6, 3, 16, 16, R.drawable.small_ban3 , R.drawable.medium_ban3 , R.drawable.big_ban3 , R.drawable.huge_ban3 ),
+  BAN4_3 ( 6, 3, 16, 16, R.drawable.small_ban4 , R.drawable.medium_ban4 , R.drawable.big_ban4 , R.drawable.huge_ban4 ),
+  SQU1_3 ( 7, 3, 24, 24, R.drawable.small_squa1, R.drawable.medium_squa1, R.drawable.big_squa1, R.drawable.huge_squa1),
+  SQU2_3 ( 7, 3, 24, 24, R.drawable.small_squa2, R.drawable.medium_squa2, R.drawable.big_squa2, R.drawable.huge_squa2),
+  MIRR_2 ( 7, 2, 12, 12, R.drawable.small_mirr2, R.drawable.medium_mirr2, R.drawable.big_mirr2, R.drawable.huge_mirr2),
+  MIRR_3 ( 7, 3, 16, 17, R.drawable.small_mirr3, R.drawable.medium_mirr3, R.drawable.big_mirr3, R.drawable.huge_mirr3),
+  ;
+
+  public static final int NUM_OBJECTS = values().length;
+  public static final int MAX_LEVEL;
+  public static final int MAX_SCRAMBLE;
+  public static final int MAX_OBJECT_SIZE;
+
+  private final int mRow, mSize, mDBLevels, mNumScrambles;
+  private final int mSmallIconID, mMediumIconID, mBigIconID, mHugeIconID;
+
+  private static final ObjectType[] objects;
+  private static int[] mIndices;
+  private static int mColCount, mRowCount;
+
+  static
+    {
+    int i = 0;
+    objects = new ObjectType[NUM_OBJECTS];
+    int maxLevel   = Integer.MIN_VALUE;
+    int maxScramble= Integer.MIN_VALUE;
+    int maxSize    = Integer.MIN_VALUE;
+
+    for(ObjectType object: ObjectType.values())
+      {
+      objects[i++] = object;
+
+      if( object.mNumScrambles> maxScramble ) maxScramble= object.mNumScrambles;
+      if( object.mDBLevels    > maxLevel    ) maxLevel   = object.mDBLevels;
+      if( object.mSize        > maxSize     ) maxSize    = object.mSize;
+      }
+
+    MAX_LEVEL       = maxLevel;
+    MAX_SCRAMBLE    = maxScramble;
+    MAX_OBJECT_SIZE = maxSize;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private static void setUpColAndRow()
+    {
+    mIndices = new int[NUM_OBJECTS];
+    mRowCount= 0;
+
+    for(int obj=0; obj<NUM_OBJECTS; obj++)
+      {
+      mIndices[obj] = objects[obj].mRow;
+      if( mIndices[obj]>=mRowCount ) mRowCount = mIndices[obj]+1;
+      }
+
+    mColCount = 0;
+
+    for(int row=0; row<mRowCount; row++)
+      {
+      int numObjects = computeNumObjectsInRow(row);
+      if( numObjects>mColCount ) mColCount = numObjects;
+      }
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private static int computeNumObjectsInRow(int row)
+    {
+    int num=0;
+
+    for(int object=0; object<NUM_OBJECTS; object++)
+      {
+      if( objects[object].mRow == row ) num++;
+      }
+
+    return num;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static int getColumnCount()
+    {
+    if( mIndices==null ) setUpColAndRow();
+
+    return mColCount;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static int getRowCount()
+    {
+    if( mIndices==null ) setUpColAndRow();
+
+    return mRowCount;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static int[] getIndices()
+    {
+    if( mIndices==null ) setUpColAndRow();
+
+    return mIndices;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static ObjectType getObject(int ordinal)
+    {
+    return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal] : CUBE_3;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static int getOrdinal(String name)
+    {
+    for(int i=0; i<NUM_OBJECTS; i++)
+      {
+      if( objects[i].name().equals(name) ) return i;
+      }
+
+    return -1;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static String getObjectList()
+    {
+    StringBuilder list = new StringBuilder();
+
+    for(int i=0; i<NUM_OBJECTS; i++)
+      {
+      if( i>0 ) list.append(',');
+      list.append(objects[i].name());
+      }
+
+    return list.toString();
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static int getDBLevel(int ordinal)
+    {
+    return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal].mDBLevels : 0;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static int getNumScramble(int ordinal)
+    {
+    return ordinal>=0 && ordinal<NUM_OBJECTS ? objects[ordinal].mNumScrambles : 0;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  ObjectType(int row, int size, int db, int scrambles, int smallIcon, int mediumIcon, int bigIcon, int hugeIcon)
+    {
+    mRow         = row;
+    mSize        = size;
+    mDBLevels    = db;
+    mNumScrambles= scrambles;
+    mSmallIconID = smallIcon;
+    mMediumIconID= mediumIcon;
+    mBigIconID   = bigIcon;
+    mHugeIconID  = hugeIcon;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getIconID(int size)
+    {
+    switch(size)
+      {
+      case 0: return mSmallIconID;
+      case 1: return mMediumIconID;
+      case 2: return mBigIconID;
+      case 3: return mHugeIconID;
+      }
+
+    return mSmallIconID;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public TwistyObject create(Static4D quat, int[][] moves, Resources res, int scrWidth)
+    {
+    DistortedTexture texture = new DistortedTexture();
+    DistortedEffects effects = new DistortedEffects();
+    MeshSquare mesh          = new MeshSquare(20,20);   // mesh of the node, not of the cubits
+
+    switch(ordinal())
+      {
+      case  0: return new TwistyCube          (objects[ 0].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case  1: return new TwistyCube          (objects[ 1].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case  2: return new TwistyCube          (objects[ 2].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case  3: return new TwistyCube          (objects[ 3].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case  4: return new TwistyJing          (objects[ 4].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case  5: return new TwistyPyraminx      (objects[ 5].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case  6: return new TwistyPyraminx      (objects[ 6].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case  7: return new TwistyPyraminx      (objects[ 7].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case  8: return new TwistyKilominx      (objects[ 8].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case  9: return new TwistyKilominx      (objects[ 9].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 10: return new TwistyMegaminx      (objects[10].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 11: return new TwistyMegaminx      (objects[11].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 12: return new TwistyUltimate      (objects[12].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 13: return new TwistyDiamond       (objects[13].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 14: return new TwistyDiamond       (objects[14].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 15: return new TwistyDiamond       (objects[15].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 16: return new TwistyDino6         (objects[16].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 17: return new TwistyDino4         (objects[17].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 18: return new TwistyRedi          (objects[18].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 19: return new TwistyHelicopter    (objects[19].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 20: return new TwistySkewb         (objects[20].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 21: return new TwistySkewb         (objects[21].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 22: return new TwistyIvy           (objects[22].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 23: return new TwistyRex           (objects[23].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 24: return new TwistyBandagedFused (objects[24].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 25: return new TwistyBandaged2Bar  (objects[25].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 26: return new TwistyBandaged3Plate(objects[26].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 27: return new TwistyBandagedEvil  (objects[27].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 28: return new TwistySquare1       (objects[28].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 29: return new TwistySquare2       (objects[29].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 30: return new TwistyMirror        (objects[30].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 31: return new TwistyMirror        (objects[31].mSize, quat, texture, mesh, effects, moves, res, scrWidth);
+      }
+
+    return null;
+    }
+  }
diff --git a/src/main/java/org/distorted/objectlib/main/TwistyObject.java b/src/main/java/org/distorted/objectlib/main/TwistyObject.java
index d47abdb5..b8b08f04 100644
--- a/src/main/java/org/distorted/objectlib/main/TwistyObject.java
+++ b/src/main/java/org/distorted/objectlib/main/TwistyObject.java
@@ -1111,7 +1111,7 @@ public abstract class TwistyObject extends DistortedNode
     mRotationAngleStatic.set0(0.0f);
     mRotationAxis.set( mAxis[axis] );
     mRotationAngle.add(mRotationAngleStatic);
-    mRotateEffect.setMeshAssociation( mRotRowBitmap<<(axis* ObjectList.MAX_OBJECT_SIZE) , -1);
+    mRotateEffect.setMeshAssociation( mRotRowBitmap<<(axis* ObjectType.MAX_OBJECT_SIZE) , -1);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1129,7 +1129,7 @@ public abstract class TwistyObject extends DistortedNode
       mRotationAngle.resetToBeginning();
       mRotationAngle.add(new Static1D(0));
       mRotationAngle.add(new Static1D(angle));
-      mRotateEffect.setMeshAssociation( mRotRowBitmap<<(axis*ObjectList.MAX_OBJECT_SIZE) , -1);
+      mRotateEffect.setMeshAssociation( mRotRowBitmap<<(axis* ObjectType.MAX_OBJECT_SIZE) , -1);
       mRotateEffect.notifyWhenFinished(listener);
 
       return mRotateEffect.getID();
@@ -1270,7 +1270,7 @@ public abstract class TwistyObject extends DistortedNode
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList getObjectList()
+  public ObjectType getObjectList()
     {
     return intGetObjectList(mNumLayers);
     }
@@ -1304,7 +1304,7 @@ public abstract class TwistyObject extends DistortedNode
   protected abstract ObjectSticker retSticker(int face);
   protected abstract int getFaceColor(int cubit, int cubitface, int numLayers);
   protected abstract int getResource(int mNumLayers);
-  protected abstract ObjectList intGetObjectList(int numLayers);
+  protected abstract ObjectType intGetObjectList(int numLayers);
 
   public abstract Movement getMovement();
   public abstract Static3D[] getRotationAxis();
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyBandaged2Bar.java b/src/main/java/org/distorted/objectlib/objects/TwistyBandaged2Bar.java
index e03ff957..8d7608f0 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyBandaged2Bar.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyBandaged2Bar.java
@@ -27,7 +27,7 @@ import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static4D;
 
 import org.distorted.objectlib.R;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ScrambleState;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -115,9 +115,9 @@ public class TwistyBandaged2Bar extends TwistyBandagedAbstract
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC API
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.BAN2_3;
+    return ObjectType.BAN2_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyBandaged3Plate.java b/src/main/java/org/distorted/objectlib/objects/TwistyBandaged3Plate.java
index 0e67bd08..e9ec41ac 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyBandaged3Plate.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyBandaged3Plate.java
@@ -27,7 +27,7 @@ import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static4D;
 
 import org.distorted.objectlib.R;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ScrambleState;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -122,9 +122,9 @@ public class TwistyBandaged3Plate extends TwistyBandagedAbstract
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC API
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.BAN3_3;
+    return ObjectType.BAN3_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyBandagedEvil.java b/src/main/java/org/distorted/objectlib/objects/TwistyBandagedEvil.java
index eae3b9c1..036c922f 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyBandagedEvil.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyBandagedEvil.java
@@ -27,7 +27,7 @@ import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static4D;
 
 import org.distorted.objectlib.R;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ScrambleState;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -246,9 +246,9 @@ public class TwistyBandagedEvil extends TwistyBandagedAbstract
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC API
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.BAN4_3;
+    return ObjectType.BAN4_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyBandagedFused.java b/src/main/java/org/distorted/objectlib/objects/TwistyBandagedFused.java
index 958186df..1591f28c 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyBandagedFused.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyBandagedFused.java
@@ -27,7 +27,7 @@ import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static4D;
 
 import org.distorted.objectlib.R;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ScrambleState;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -115,9 +115,9 @@ public class TwistyBandagedFused extends TwistyBandagedAbstract
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC APi
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.BAN1_3;
+    return ObjectType.BAN1_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyCube.java b/src/main/java/org/distorted/objectlib/objects/TwistyCube.java
index 3a7f1c2b..62b214b3 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyCube.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyCube.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -396,17 +396,17 @@ public class TwistyCube extends Twisty6
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
     switch(numLayers)
       {
-      case 2: return ObjectList.CUBE_2;
-      case 3: return ObjectList.CUBE_3;
-      case 4: return ObjectList.CUBE_4;
-      case 5: return ObjectList.CUBE_5;
+      case 2: return ObjectType.CUBE_2;
+      case 3: return ObjectType.CUBE_3;
+      case 4: return ObjectType.CUBE_4;
+      case 5: return ObjectType.CUBE_5;
       }
 
-    return ObjectList.CUBE_3;
+    return ObjectType.CUBE_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyDiamond.java b/src/main/java/org/distorted/objectlib/objects/TwistyDiamond.java
index 3ad909a4..3ca6c48f 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyDiamond.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyDiamond.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement8;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -538,16 +538,16 @@ public class TwistyDiamond extends Twisty8
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
     switch(numLayers)
       {
-      case 2: return ObjectList.DIAM_2;
-      case 3: return ObjectList.DIAM_3;
-      case 4: return ObjectList.DIAM_4;
+      case 2: return ObjectType.DIAM_2;
+      case 3: return ObjectType.DIAM_3;
+      case 4: return ObjectType.DIAM_4;
       }
 
-    return ObjectList.DIAM_2;
+    return ObjectType.DIAM_2;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyDino.java b/src/main/java/org/distorted/objectlib/objects/TwistyDino.java
index 2af485c6..d3fc6d25 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyDino.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyDino.java
@@ -32,7 +32,6 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyDino4.java b/src/main/java/org/distorted/objectlib/objects/TwistyDino4.java
index 603a33d5..bd278ef3 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyDino4.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyDino4.java
@@ -27,7 +27,7 @@ import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static4D;
 
 import org.distorted.objectlib.R;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ScrambleState;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -98,9 +98,9 @@ public class TwistyDino4 extends TwistyDino
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.DIN4_3;
+    return ObjectType.DIN4_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyDino6.java b/src/main/java/org/distorted/objectlib/objects/TwistyDino6.java
index c3b3ed0c..766a995a 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyDino6.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyDino6.java
@@ -27,7 +27,7 @@ import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static4D;
 
 import org.distorted.objectlib.R;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ScrambleState;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -100,9 +100,9 @@ public class TwistyDino6 extends TwistyDino
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.DINO_3;
+    return ObjectType.DINO_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyHelicopter.java b/src/main/java/org/distorted/objectlib/objects/TwistyHelicopter.java
index 181b7ea3..d7d87050 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyHelicopter.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyHelicopter.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -458,9 +458,9 @@ public class TwistyHelicopter extends Twisty6
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.HELI_3;
+    return ObjectType.HELI_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyIvy.java b/src/main/java/org/distorted/objectlib/objects/TwistyIvy.java
index 53e25e8b..2ffd3aa8 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyIvy.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyIvy.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -485,9 +485,9 @@ public class TwistyIvy extends Twisty6
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.IVY_2;
+    return ObjectType.IVY_2;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyJing.java b/src/main/java/org/distorted/objectlib/objects/TwistyJing.java
index b3163e47..4d1a5c77 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyJing.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyJing.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement4;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -444,9 +444,9 @@ public class TwistyJing extends Twisty4
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.JING_2;
+    return ObjectType.JING_2;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyKilominx.java b/src/main/java/org/distorted/objectlib/objects/TwistyKilominx.java
index 622b7c39..ac065d08 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyKilominx.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyKilominx.java
@@ -31,7 +31,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.library.main.QuatHelper;
 
 import org.distorted.objectlib.R;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 
@@ -696,15 +696,15 @@ public class TwistyKilominx extends TwistyMinx
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
     switch(numLayers)
       {
-      case 3: return ObjectList.KILO_3;
-      case 5: return ObjectList.KILO_5;
+      case 3: return ObjectType.KILO_3;
+      case 5: return ObjectType.KILO_5;
       }
 
-    return ObjectList.KILO_3;
+    return ObjectType.KILO_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyMegaminx.java b/src/main/java/org/distorted/objectlib/objects/TwistyMegaminx.java
index 82d065bf..f5368dc3 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyMegaminx.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyMegaminx.java
@@ -31,7 +31,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.library.main.QuatHelper;
 
 import org.distorted.objectlib.R;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 
@@ -603,15 +603,15 @@ public class TwistyMegaminx extends TwistyMinx
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
     switch(numLayers)
       {
-      case 3: return ObjectList.MEGA_3;
-      case 5: return ObjectList.MEGA_5;
+      case 3: return ObjectType.MEGA_3;
+      case 5: return ObjectType.MEGA_5;
       }
 
-    return ObjectList.MEGA_3;
+    return ObjectType.MEGA_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyMinx.java b/src/main/java/org/distorted/objectlib/objects/TwistyMinx.java
index 2c9e1251..59062d36 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyMinx.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyMinx.java
@@ -33,7 +33,6 @@ import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement12;
-import org.distorted.objectlib.main.ObjectList;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
 import org.distorted.objectlib.main.Twisty12;
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyMirror.java b/src/main/java/org/distorted/objectlib/objects/TwistyMirror.java
index 0d8a8175..6825a198 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyMirror.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyMirror.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -631,15 +631,15 @@ public class TwistyMirror extends Twisty6
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
     switch(numLayers)
       {
-      case 2: return ObjectList.MIRR_2;
-      case 3: return ObjectList.MIRR_3;
+      case 2: return ObjectType.MIRR_2;
+      case 3: return ObjectType.MIRR_3;
       }
 
-    return ObjectList.MIRR_2;
+    return ObjectType.MIRR_2;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyPyraminx.java b/src/main/java/org/distorted/objectlib/objects/TwistyPyraminx.java
index 5581fc2a..2828dcd4 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyPyraminx.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyPyraminx.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement4;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -422,16 +422,16 @@ public class TwistyPyraminx extends Twisty4
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
     switch(numLayers)
       {
-      case 3: return ObjectList.PYRA_3;
-      case 4: return ObjectList.PYRA_4;
-      case 5: return ObjectList.PYRA_5;
+      case 3: return ObjectType.PYRA_3;
+      case 4: return ObjectType.PYRA_4;
+      case 5: return ObjectType.PYRA_5;
       }
 
-    return ObjectList.PYRA_3;
+    return ObjectType.PYRA_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyRedi.java b/src/main/java/org/distorted/objectlib/objects/TwistyRedi.java
index 97174ea4..617f9891 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyRedi.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyRedi.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -455,9 +455,9 @@ public class TwistyRedi extends Twisty6
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.REDI_3;
+    return ObjectType.REDI_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyRex.java b/src/main/java/org/distorted/objectlib/objects/TwistyRex.java
index d0c68890..d2f94706 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyRex.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyRex.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -488,9 +488,9 @@ public class TwistyRex extends Twisty6
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.REX_3;
+    return ObjectType.REX_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistySkewb.java b/src/main/java/org/distorted/objectlib/objects/TwistySkewb.java
index f61dae20..2bad9b61 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistySkewb.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistySkewb.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -597,15 +597,15 @@ public class TwistySkewb extends Twisty6
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
     switch(numLayers)
       {
-      case 2: return ObjectList.SKEW_2;
-      case 3: return ObjectList.SKEW_3;
+      case 2: return ObjectType.SKEW_2;
+      case 3: return ObjectType.SKEW_3;
       }
 
-    return ObjectList.SKEW_2;
+    return ObjectType.SKEW_2;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistySquare.java b/src/main/java/org/distorted/objectlib/objects/TwistySquare.java
index 4c400c0f..07d86ee1 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistySquare.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistySquare.java
@@ -30,7 +30,6 @@ import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
 import org.distorted.objectlib.main.Twisty6;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistySquare1.java b/src/main/java/org/distorted/objectlib/objects/TwistySquare1.java
index a66cab6e..bcea5f4b 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistySquare1.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistySquare1.java
@@ -28,7 +28,7 @@ import org.distorted.library.type.Static4D;
 
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement6;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -350,9 +350,9 @@ public class TwistySquare1 extends TwistySquare
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC API
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.SQU1_3;
+    return ObjectType.SQU1_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistySquare2.java b/src/main/java/org/distorted/objectlib/objects/TwistySquare2.java
index 6bb9a28e..e32044a7 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistySquare2.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistySquare2.java
@@ -27,7 +27,7 @@ import org.distorted.library.mesh.MeshSquare;
 import org.distorted.library.type.Static4D;
 
 import org.distorted.objectlib.R;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -383,9 +383,9 @@ public class TwistySquare2 extends TwistySquare
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC API
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.SQU2_3;
+    return ObjectType.SQU2_3;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objectlib/objects/TwistyUltimate.java b/src/main/java/org/distorted/objectlib/objects/TwistyUltimate.java
index bf1420ce..8c7457d2 100644
--- a/src/main/java/org/distorted/objectlib/objects/TwistyUltimate.java
+++ b/src/main/java/org/distorted/objectlib/objects/TwistyUltimate.java
@@ -32,7 +32,7 @@ import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.R;
 import org.distorted.objectlib.main.Movement;
 import org.distorted.objectlib.main.Movement12;
-import org.distorted.objectlib.main.ObjectList;
+import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.ObjectShape;
 import org.distorted.objectlib.main.ObjectSticker;
 import org.distorted.objectlib.main.ScrambleState;
@@ -443,9 +443,9 @@ public class TwistyUltimate extends Twisty12
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public ObjectList intGetObjectList(int numLayers)
+  public ObjectType intGetObjectList(int numLayers)
     {
-    return ObjectList.ULTI_2;
+    return ObjectType.ULTI_2;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
