commit f4b24b7971752d680b77eaa36d2fb142a484ea42
Author: leszek <leszek@koltunski.pl>
Date:   Sat Dec 21 20:05:09 2024 +0100

    Restructuring for the solvers in the app.

diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index 39213f21..0e98b414 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -81,7 +81,7 @@ public class RubikObject
     int patternOrdinal  = RubikPatternList.getOrdinal(mObjectIndex);
     mPatterns = RubikPatternList.getPatterns(patternOrdinal);
 
-    mSolverOrdinal = SolvingList.getSolverOrdinal(mObjectIndex);
+    mSolverOrdinal = SolvingList.getSolverOrdinal(mObjectOrdinal);
     mExtrasOrdinal = -1;
 
     mObjectVersion = meta.objectVersion();
diff --git a/src/main/java/org/distorted/solvers/SolverTablebase.java b/src/main/java/org/distorted/solvers/SolverTablebase.java
index 04483bae..1cba4986 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebase.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebase.java
@@ -13,6 +13,8 @@ import android.content.res.Resources;
 
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
 import org.distorted.objectlib.main.TwistyObject;
+import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
+import org.distorted.objectlib.tablebases.TablebasesAbstract;
 import org.distorted.solverui.ScreenSolver;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -22,12 +24,12 @@ public abstract class SolverTablebase implements SolvingInterface
   private final OperatingSystemInterface mOS;
   private final Resources mRes;
   private final TwistyObject mObject;
+  private TablebasesAbstract mSolver;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public abstract int tablebaseIndex(TwistyObject object);
   public abstract String error(int index, Resources res);
-  public abstract int[][] solution(int index, OperatingSystemInterface os);
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC API
@@ -40,6 +42,10 @@ public abstract class SolverTablebase implements SolvingInterface
     mObject= object;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  int[] getExtra() { return null; }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void solve(ScreenSolver screen)
@@ -48,7 +54,13 @@ public abstract class SolverTablebase implements SolvingInterface
 
     if( index>=0 )
       {
-      int[][] moves = solution(index,mOS);
+      if( mSolver==null )
+        {
+        mSolver = ImplementedTablebasesList.createPacked(mOS, mObject.getShortName() );
+        }
+
+      mSolver.initialize();
+      int[][] moves = mSolver!=null ? mSolver.solution(index,getExtra(),mOS) : null;
       screen.setSolved(moves);
       }
     else
diff --git a/src/main/java/org/distorted/solvers/SolverTablebaseCU232.java b/src/main/java/org/distorted/solvers/SolverTablebaseCU232.java
index ce582dc0..061877c9 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebaseCU232.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebaseCU232.java
@@ -13,11 +13,8 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -41,7 +38,6 @@ public class SolverTablebaseCU232 extends SolverTablebase
   private static final int ERROR_EDGE_TWISTED    = -14;
   private static final int ERROR_CORNER_TWISTED  = -15;
 
-  TablebasesAbstract mSolver;
   private final int[] mFaceColors;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -402,17 +398,5 @@ public class SolverTablebaseCU232 extends SolverTablebase
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.CU_232.name() );
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebaseCU323.java b/src/main/java/org/distorted/solvers/SolverTablebaseCU323.java
index b29b1225..105780e1 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebaseCU323.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebaseCU323.java
@@ -13,14 +13,12 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TBCuboid323;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
+// a few cu_323 max (depth 18) indices: 1180633, 1180642, 1182044, 1190482, 128151851, 128190028
 
 public class SolverTablebaseCU323 extends SolverTablebase
 {
@@ -30,7 +28,6 @@ public class SolverTablebaseCU323 extends SolverTablebase
   private static final int ERROR_EDGE_TWISTED   = -4;
   private static final int ERROR_CORNER_TWISTED = -5;
 
-  TablebasesAbstract mSolver;
   private final int[] mFaceColors;
   private int mErrorColor1, mErrorColor2, mErrorColor3;
 
@@ -437,20 +434,5 @@ public class SolverTablebaseCU323 extends SolverTablebase
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// a few cu_323 max (depth 18) indices:
-// 1180633, 1180642, 1182044, 1190482, 128151851, 128190028
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.CU_323.name() );
-      }
-
-    ((TBCuboid323)mSolver).initialize();
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebaseCUBE2.java b/src/main/java/org/distorted/solvers/SolverTablebaseCUBE2.java
index 72758435..d32cd1b2 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebaseCUBE2.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebaseCUBE2.java
@@ -13,11 +13,8 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 import org.distorted.objectlib.tablebases.TBCube2;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -35,7 +32,6 @@ public class SolverTablebaseCUBE2 extends SolverTablebase
   private static final int ERROR_CORNERS_CANNOT     = -9;
   private static final int ERROR_CORNER_TWISTED     = -10;
 
-  TablebasesAbstract mSolver;
   private final int[] mFaceColors;
 
 ////////////////////////////////////////////////////////////////////////////////////////
@@ -281,17 +277,5 @@ public class SolverTablebaseCUBE2 extends SolverTablebase
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.CUBE_2.name() );
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebaseDIAM2.java b/src/main/java/org/distorted/solvers/SolverTablebaseDIAM2.java
index 22e779e0..bc025ab3 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebaseDIAM2.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebaseDIAM2.java
@@ -13,11 +13,8 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -45,7 +42,6 @@ public class SolverTablebaseDIAM2 extends SolverTablebase
   private static final int ERROR_CORNER_TWIST_180 = -18;
   private static final int ERROR_CORNERS_CANNOT   = -19;
 
-  private TablebasesAbstract mSolver;
   private final int[] mFaceColors;
 
   private static final int[] FREE_CENTERS = {0,2,5,7};
@@ -496,17 +492,5 @@ android.util.Log.e("D", "corn twist: "+corners_twist[0]+" "+corners_twist[1]+" "
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.DIAM_2.name());
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebaseDINO4.java b/src/main/java/org/distorted/solvers/SolverTablebaseDINO4.java
index 28c34893..c29347dd 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebaseDINO4.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebaseDINO4.java
@@ -13,20 +13,16 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
 import org.distorted.objectlib.shape.ShapeColors;
 import org.distorted.objectlib.shape.ShapeHexahedron;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TBDino4;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class SolverTablebaseDINO4 extends SolverTablebase
 {
   private static final int ERROR_EDGE_THREE  = -1;
-  private TablebasesAbstract mSolver;
   private int mErrorColor;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -169,17 +165,5 @@ public class SolverTablebaseDINO4 extends SolverTablebase
 
     return res.getString(R.string.solver_generic_edge_three,color);
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.DIN4_3.name() );
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebaseDINO6.java b/src/main/java/org/distorted/solvers/SolverTablebaseDINO6.java
index 681e7478..c60cf3b4 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebaseDINO6.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebaseDINO6.java
@@ -13,12 +13,9 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TBDino6;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -37,7 +34,6 @@ public class SolverTablebaseDINO6 extends SolverTablebase
                       {5,2},{0,5},{5,3},{1,5}
                      };
 
-  private TablebasesAbstract mSolver;
   private final int[] mFaceColors;
   private int mErrorColor1, mErrorColor2;
 
@@ -435,17 +431,5 @@ public class SolverTablebaseDINO6 extends SolverTablebase
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.DINO_3.name() );
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebaseIVY2.java b/src/main/java/org/distorted/solvers/SolverTablebaseIVY2.java
index 37ae6a09..8c4c8ed5 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebaseIVY2.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebaseIVY2.java
@@ -13,11 +13,8 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -32,8 +29,6 @@ public class SolverTablebaseIVY2 extends SolverTablebase
   private static final int ERROR_TWO_CENTERS_SWAP = -7;
   private static final int ERROR_CORNERS_CANNOT   = -8;
 
-  TablebasesAbstract mSolver;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private int checkAllCentersPresent(int[] centers)
@@ -238,17 +233,5 @@ public class SolverTablebaseIVY2 extends SolverTablebase
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.IVY_2.name() );
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebaseJING2.java b/src/main/java/org/distorted/solvers/SolverTablebaseJING2.java
index dcbfa660..8c2f4bfa 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebaseJING2.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebaseJING2.java
@@ -13,12 +13,9 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TBPyraminx;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -47,7 +44,6 @@ public class SolverTablebaseJING2 extends SolverTablebase
   private static final int ERROR_TWO_EDGES          = -18;
   private static final int ERROR_TWO_CENTERS        = -19;
 
-  private TablebasesAbstract mSolver;
   private int[] mFaceColors;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -520,17 +516,5 @@ public class SolverTablebaseJING2 extends SolverTablebase
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.JING_2.name());
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebasePDIA3.java b/src/main/java/org/distorted/solvers/SolverTablebasePDIA3.java
index ab188981..215840f5 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebasePDIA3.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebasePDIA3.java
@@ -13,11 +13,8 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -42,7 +39,6 @@ public class SolverTablebasePDIA3 extends SolverTablebase
   private static final int ERROR_TWO_CENTERS      = -15;
   private static final int ERROR_CORNERS_CANNOT   = -16;
 
-  private TablebasesAbstract mSolver;
   private final int[] mFaceColors;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -359,17 +355,5 @@ android.util.Log.e("D", "ret="+(total_twist + 2048*centers_perm_num) );
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.PDIA_3.name() );
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebasePDUO2.java b/src/main/java/org/distorted/solvers/SolverTablebasePDUO2.java
index 2adad7d7..0de2d840 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebasePDUO2.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebasePDUO2.java
@@ -13,10 +13,7 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -37,8 +34,6 @@ public class SolverTablebasePDUO2 extends SolverTablebase
 
   private static final int ERROR_CORNERS_CANNOT   = -11;
 
-  TablebasesAbstract mSolver;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private boolean cornerEqual(int[] corner, int c1, int c2, int c3)
@@ -283,17 +278,5 @@ public class SolverTablebasePDUO2 extends SolverTablebase
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.PDUO_2.name() );
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebasePYRA3.java b/src/main/java/org/distorted/solvers/SolverTablebasePYRA3.java
index 0a89cef2..1b783d86 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebasePYRA3.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebasePYRA3.java
@@ -13,11 +13,8 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 import org.distorted.objectlib.tablebases.TBPyraminx;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -47,7 +44,6 @@ public class SolverTablebasePYRA3 extends SolverTablebase
   private static final int ERROR_C_V_DONT_MATCH   = -18;
   private static final int ERROR_TWO_EDGES        = -19;
 
-  private TablebasesAbstract mSolver;
   private int[] mCornerTwist;
   private int[] mFaceColors;
 
@@ -536,14 +532,6 @@ public class SolverTablebasePYRA3 extends SolverTablebase
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.PYRA_3.name());
-      }
-
-    return mSolver!=null ? mSolver.solution(index,mCornerTwist,os) : null;
-    }
+  @Override int[] getExtra() { return mCornerTwist; }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolverTablebaseSKEW2.java b/src/main/java/org/distorted/solvers/SolverTablebaseSKEW2.java
index 3cda0fcf..7139b165 100644
--- a/src/main/java/org/distorted/solvers/SolverTablebaseSKEW2.java
+++ b/src/main/java/org/distorted/solvers/SolverTablebaseSKEW2.java
@@ -16,12 +16,9 @@ import android.content.res.Resources;
 
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.metadata.ListObjects;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
 import org.distorted.objectlib.tablebases.TBSkewb;
 import org.distorted.objectlib.tablebases.TablebaseHelpers;
-import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -51,7 +48,6 @@ public class SolverTablebaseSKEW2 extends SolverTablebase
   private static final int ERROR_FREE_CORNERS_NOT_EVEN    = -19;
   private static final int ERROR_FREE_CORNERS_ROTATED     = -20;
 
-  private TablebasesAbstract mSolver;
   private final int[] mFaceColors;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -435,17 +431,5 @@ public class SolverTablebaseSKEW2 extends SolverTablebase
 
     return null;
     }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int[][] solution(int index, OperatingSystemInterface os)
-    {
-    if( mSolver==null )
-      {
-      mSolver = ImplementedTablebasesList.createPacked(os, ListObjects.SKEW_2.name() );
-      }
-
-    return mSolver!=null ? mSolver.solution(index,null,os) : null;
-    }
 }  
 
diff --git a/src/main/java/org/distorted/solvers/SolvingList.java b/src/main/java/org/distorted/solvers/SolvingList.java
index b8bca0f7..0663dd38 100644
--- a/src/main/java/org/distorted/solvers/SolvingList.java
+++ b/src/main/java/org/distorted/solvers/SolvingList.java
@@ -9,6 +9,8 @@
 
 package org.distorted.solvers;
 
+import static org.distorted.objectlib.metadata.ListObjects.*;
+
 import android.content.res.Resources;
 
 import org.distorted.main.R;
@@ -23,24 +25,24 @@ import java.lang.reflect.InvocationTargetException;
 
 public enum SolvingList
 {
-  CUBE2          (MetadataCUBE_2.INDEX, SolverTablebaseCUBE2.class,  R.string.solver_cube2_title, R.string.solver_cube2_description, true),
-  CUBE3_KOCIEMBA (MetadataCUBE_3.INDEX, SolverKociembaCUBE3.class , R.string.solver_cube3_title, R.string.solver_cube3_description, true),
-  CU_232         (MetadataCU_232.INDEX, SolverTablebaseCU232.class, R.string.solver_cu232_title, R.string.solver_cu232_description, true),
-  CU_323         (MetadataCU_323.INDEX, SolverTablebaseCU323.class, R.string.solver_cu323_title, R.string.solver_cu323_description, true),
-  PYRAMINX       (MetadataPYRA_3.INDEX, SolverTablebasePYRA3.class, R.string.solver_pyra3_title, R.string.solver_pyra3_description, true),
-  SKEWB          (MetadataSKEW_2.INDEX, SolverTablebaseSKEW2.class, R.string.solver_skew2_title, R.string.solver_skew2_description, true),
-  PYRAMINX_DUO   (MetadataPDUO_2.INDEX, SolverTablebasePDUO2.class, R.string.solver_pduo2_title, R.string.solver_pduo2_description, true),
-  IVY            (MetadataIVY_2.INDEX , SolverTablebaseIVY2.class , R.string.solver_ivy_title, R.string.solver_ivy_description, true),
-  DIAMOND        (MetadataDIAM_2.INDEX, SolverTablebasePDIA3.class, R.string.solver_diam2_title, R.string.solver_diam2_description, true),
-  JING2          (MetadataJING_2.INDEX, SolverTablebaseJING2.class, R.string.solver_jing2_title, R.string.solver_jing2_description, true),
-  DINO6          (MetadataDINO_3.INDEX, SolverTablebaseDINO6.class, R.string.solver_dino6_title, R.string.solver_dino6_description, true),
-  DINO4          (MetadataDIN4_3.INDEX, SolverTablebaseDINO4.class, R.string.solver_dino4_title, R.string.solver_dino4_description, true),
-  PDIA           (MetadataPDIA_3.INDEX, SolverTablebasePDUO2.class, R.string.solver_pdia_title, R.string.solver_pdia_description, true),
+  CUBE2          (CUBE_2.ordinal(), SolverTablebaseCUBE2.class, R.string.solver_cube2_title, R.string.solver_cube2_description, true),
+  CUBE3_KOCIEMBA (CUBE_3.ordinal(), SolverKociembaCUBE3.class , R.string.solver_cube3_title, R.string.solver_cube3_description, true),
+  CU232          (CU_232.ordinal(), SolverTablebaseCU232.class, R.string.solver_cu232_title, R.string.solver_cu232_description, true),
+  CU323          (CU_323.ordinal(), SolverTablebaseCU323.class, R.string.solver_cu323_title, R.string.solver_cu323_description, true),
+  PYRAMINX       (PYRA_3.ordinal(), SolverTablebasePYRA3.class, R.string.solver_pyra3_title, R.string.solver_pyra3_description, true),
+  SKEWB          (SKEW_2.ordinal(), SolverTablebaseSKEW2.class, R.string.solver_skew2_title, R.string.solver_skew2_description, true),
+  PYRAMINX_DUO   (PDUO_2.ordinal(), SolverTablebasePDUO2.class, R.string.solver_pduo2_title, R.string.solver_pduo2_description, true),
+  IVY            (IVY_2.ordinal() , SolverTablebaseIVY2.class , R.string.solver_ivy_title, R.string.solver_ivy_description, true),
+  DIAMOND        (DIAM_2.ordinal(), SolverTablebaseDIAM2.class, R.string.solver_diam2_title, R.string.solver_diam2_description, true),
+  JING2          (JING_2.ordinal(), SolverTablebaseJING2.class, R.string.solver_jing2_title, R.string.solver_jing2_description, true),
+  DINO6          (DINO_3.ordinal(), SolverTablebaseDINO6.class, R.string.solver_dino6_title, R.string.solver_dino6_description, true),
+  DINO4          (DIN4_3.ordinal(), SolverTablebaseDINO4.class, R.string.solver_dino4_title, R.string.solver_dino4_description, true),
+  PDIA           (PDIA_3.ordinal(), SolverTablebasePDIA3.class, R.string.solver_pdia_title, R.string.solver_pdia_description, true),
   ;
 
   public static final int NUM_OBJECTS = values().length;
 
-  private final int mObject;
+  private final int mObjectOrdinal;
   private final Class<? extends SolvingInterface> mClass;
   private final int mTitle;
   private final int mDescription;
@@ -71,7 +73,7 @@ public enum SolvingList
   public static int getSolverOrdinal(int objectOrdinal)
     {
     for(int o=0; o<NUM_OBJECTS; o++)
-      if( objects[o].mObject==objectOrdinal ) return o;
+      if( objects[o].mObjectOrdinal==objectOrdinal ) return o;
 
     return -1;
     }
@@ -80,11 +82,11 @@ public enum SolvingList
 
   SolvingList(int object, final Class<? extends SolvingInterface> clazz, int title, int descripton, boolean implemented)
     {
-    mObject      = object;
-    mClass       = clazz;
-    mTitle       = title;
-    mDescription = descripton;
-    mImplemented = implemented;
+    mObjectOrdinal= object;
+    mClass        = clazz;
+    mTitle        = title;
+    mDescription  = descripton;
+    mImplemented  = implemented;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -110,7 +112,7 @@ public enum SolvingList
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public int getObject() { return mObject; }
+  public int getObjectOrdinal() { return mObjectOrdinal; }
   public int getTitle() { return mTitle; }
   public int getDescription() { return mDescription; }
   public boolean isImplemented() { return mImplemented; }
@@ -130,20 +132,20 @@ public enum SolvingList
         }
       else
         {
-        android.util.Log.e("ImplementedSolversList", "ERROR! number of SolverInterface constructors="+cons.length);
+        android.util.Log.e("SolvingList", "ERROR! number of SolverInterface constructors="+cons.length);
         }
       }
     catch(IllegalAccessException iae)
       {
-      android.util.Log.e("ImplementedSolversList", "Illegal Access Exception: "+iae.getMessage());
+      android.util.Log.e("SolvingList", "Illegal Access Exception: "+iae.getMessage());
       }
     catch(InstantiationException ie)
       {
-      android.util.Log.e("ImplementedSolversList", "Instantiation Exception: "+ie.getMessage());
+      android.util.Log.e("SolvingList", "Instantiation Exception: "+ie.getMessage());
       }
     catch(InvocationTargetException ite)
       {
-      android.util.Log.e("ImplementedSolversList", "Invocation Target Exception: "+ite.getMessage());
+      android.util.Log.e("SolvingList", "Invocation Target Exception: "+ite.getMessage());
       }
 
     return null;
diff --git a/src/main/java/org/distorted/solverui/ScreenSolver.java b/src/main/java/org/distorted/solverui/ScreenSolver.java
index 36101bcd..03c6a38e 100644
--- a/src/main/java/org/distorted/solverui/ScreenSolver.java
+++ b/src/main/java/org/distorted/solverui/ScreenSolver.java
@@ -9,6 +9,8 @@
 
 package org.distorted.solverui;
 
+import static org.distorted.objectlib.metadata.ListObjects.*;
+
 import android.content.SharedPreferences;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
@@ -29,37 +31,7 @@ import org.distorted.main.MainActivity;
 import org.distorted.main.R;
 import org.distorted.objectlib.main.ObjectControl;
 import org.distorted.objectlib.main.TwistyObject;
-import org.distorted.objectlib.metadata.MetadataBALL_4;
-import org.distorted.objectlib.metadata.MetadataCRYS_3;
-import org.distorted.objectlib.metadata.MetadataDIAM_2;
-import org.distorted.objectlib.metadata.MetadataDIAM_3;
-import org.distorted.objectlib.metadata.MetadataDIAM_4;
-import org.distorted.objectlib.metadata.MetadataDIN4_3;
-import org.distorted.objectlib.metadata.MetadataICOS_2;
-import org.distorted.objectlib.metadata.MetadataJING_2;
-import org.distorted.objectlib.metadata.MetadataKILO_3;
-import org.distorted.objectlib.metadata.MetadataKILO_5;
-import org.distorted.objectlib.metadata.MetadataMEGA_3;
-import org.distorted.objectlib.metadata.MetadataMEGA_5;
-import org.distorted.objectlib.metadata.MetadataMORP_2;
-import org.distorted.objectlib.metadata.MetadataMORP_3;
-import org.distorted.objectlib.metadata.MetadataMORP_4;
-import org.distorted.objectlib.metadata.MetadataPDIA_3;
-import org.distorted.objectlib.metadata.MetadataPDUO_2;
-import org.distorted.objectlib.metadata.MetadataPENT_2;
-import org.distorted.objectlib.metadata.MetadataPYRA_3;
-import org.distorted.objectlib.metadata.MetadataPYRA_4;
-import org.distorted.objectlib.metadata.MetadataPYRA_5;
-import org.distorted.objectlib.metadata.MetadataSTAR_3;
-import org.distorted.objectlib.metadata.MetadataTRAJ_3;
-import org.distorted.objectlib.metadata.MetadataTRAJ_4;
-import org.distorted.objectlib.shape.ShapeColors;
-import org.distorted.objectlib.shape.ShapeDiamond;
-import org.distorted.objectlib.shape.ShapeDodecahedron;
-import org.distorted.objectlib.shape.ShapeHexahedron;
-import org.distorted.objectlib.shape.ShapeIcosahedron;
-import org.distorted.objectlib.shape.ShapeOctahedron;
-import org.distorted.objectlib.shape.ShapeTetrahedron;
+import org.distorted.objectlib.shape.*;
 import org.distorted.solvers.SolvingList;
 import org.distorted.solvers.SolvingThread;
 
@@ -108,7 +80,7 @@ public class ScreenSolver extends ScreenAbstract
 
     int solverIndex= act.getSolverOrdinal();
     mList = SolvingList.getSolver(solverIndex);
-    int currentObject = mList.getObject();
+    int currentObject = mList.getObjectOrdinal();
     control.solveOnly();
     generateFaceColors(currentObject);
 
@@ -164,50 +136,50 @@ public class ScreenSolver extends ScreenAbstract
     {
     mColorMode = MODE_NORMAL;
 
-    if( object==MetadataPYRA_3.INDEX ||
-        object==MetadataPYRA_4.INDEX ||
-        object==MetadataPYRA_5.INDEX ||
-        object==MetadataPDUO_2.INDEX ||
-        object==MetadataJING_2.INDEX ||
-        object==MetadataMORP_2.INDEX ||
-        object==MetadataMORP_3.INDEX ||
-        object==MetadataMORP_4.INDEX  )
+    if( object==PYRA_3.ordinal() ||
+        object==PYRA_4.ordinal() ||
+        object==PYRA_5.ordinal() ||
+        object==PDUO_2.ordinal() ||
+        object==JING_2.ordinal() ||
+        object==MORP_2.ordinal() ||
+        object==MORP_3.ordinal() ||
+        object==MORP_4.ordinal()  )
       {
       mNumColors  = ShapeTetrahedron.NUM_FACES;
       mFaceColors = ShapeTetrahedron.FACE_COLORS;
       }
-    else if( object==MetadataDIAM_2.INDEX ||
-             object==MetadataDIAM_3.INDEX ||
-             object==MetadataDIAM_4.INDEX ||
-             object==MetadataTRAJ_3.INDEX ||
-             object==MetadataTRAJ_4.INDEX ||
-             object==MetadataPDIA_3.INDEX  )
+    else if( object==DIAM_2.ordinal() ||
+             object==DIAM_3.ordinal() ||
+             object==DIAM_4.ordinal() ||
+             object==TRAJ_3.ordinal() ||
+             object==TRAJ_4.ordinal() ||
+             object==PDIA_3.ordinal()  )
       {
       mNumColors  = ShapeOctahedron.NUM_FACES;
       mFaceColors = ShapeOctahedron.FACE_COLORS;
       }
-    else if( object==MetadataCRYS_3.INDEX ||
-             object==MetadataSTAR_3.INDEX ||
-             object==MetadataPENT_2.INDEX ||
-             object==MetadataKILO_3.INDEX ||
-             object==MetadataKILO_5.INDEX ||
-             object==MetadataMEGA_3.INDEX ||
-             object==MetadataMEGA_5.INDEX  )
+    else if( object==CRYS_3.ordinal() ||
+             object==STAR_3.ordinal() ||
+             object==PENT_2.ordinal() ||
+             object==KILO_3.ordinal() ||
+             object==KILO_5.ordinal() ||
+             object==MEGA_3.ordinal() ||
+             object==MEGA_5.ordinal()  )
       {
       mNumColors  = ShapeDodecahedron.NUM_FACES;
       mFaceColors = ShapeDodecahedron.FACE_COLORS;
       }
-    else if( object==MetadataBALL_4.INDEX )
+    else if( object==BALL_4.ordinal() )
       {
       mNumColors  = ShapeDiamond.NUM_FACES;
       mFaceColors = ShapeDiamond.FACE_COLORS;
       }
-    else if( object==MetadataICOS_2.INDEX )
+    else if( object==ICOS_2.ordinal() )
       {
       mNumColors  = ShapeIcosahedron.NUM_FACES;
       mFaceColors = ShapeIcosahedron.FACE_COLORS;
       }
-    else if( object==MetadataDIN4_3.INDEX )
+    else if( object==DIN4_3.ordinal() )
       {
       mNumColors  = 4;
       mFaceColors = new int[] { ShapeColors.COLOR_YELLOW, ShapeColors.COLOR_RED, ShapeColors.COLOR_BLUE, ShapeColors.COLOR_WHITE};
diff --git a/src/main/java/org/distorted/solverui/SolverActivity.java b/src/main/java/org/distorted/solverui/SolverActivity.java
index 14342de9..967db199 100644
--- a/src/main/java/org/distorted/solverui/SolverActivity.java
+++ b/src/main/java/org/distorted/solverui/SolverActivity.java
@@ -62,8 +62,7 @@ public class SolverActivity extends BaseActivity
       Bundle b = getIntent().getExtras();
       mObjectOrdinal = b!=null ? b.getInt("obj") : 0;
       RubikObject object = RubikObjectList.getObject(mObjectOrdinal);
-      int objectIndex = object==null ? -1 : object.getIndex();
-      mSolverOrdinal = SolvingList.getSolverOrdinal(objectIndex);
+      mSolverOrdinal = object==null ? -1 : object.getSolverOrdinal();
       mDisplayMessageDialog = true;
 
       computeScreenDimensions();
