   lcd.init();
   lcd.backlight();
   
-  //MsTimer2::set(500, timerInterupt);
+  MsTimer2::set(2, timerInterupt);
   //MsTimer2::start();    
 }
 
 //Main operation method
 void loop() {
   
-  operateOrNot();
+  char startOption = selectOption("Select mode", "Solve  Calibrate", "Solve", "       Calibrate");
+  if (startOption == 1) calibrationScan();
+  else {
+    char solvingMode = selectOption("Solving mode?", "Python   Arduino", "Python", "         Arduino");
+    if (solvingMode == 0) {
+      pythonSolveOperation();
+    }
+    else {
+      delay(5000);
+      //arduinoSolveOperation();
+    }
+  }
+  //solveOrCaliblate();
+  
+  //operateOrNot();
 
   //scanCube();
-  ScannedCube = "oobwwrbbboboybobwwyyybrrggwrrryyggogwrrggwooywggwoyrby";
-
-  writePortData();
-  delay(500);
-  
-  readPortData();
+  //ScannedCube = "oobwwrbbboboybobwwyyybrrggwrrryyggogwrrggwooywggwoyrby";
+
+  //writePortData();
+  //delay(500);
+  
+  //readPortData();
   
   //String movementString = "rLUdBBUUllFFllUUllFF";
-  assembleCube(SolvedCube);
+  //assembleCube(SolvedCube);
 
   //scanTopSide();
   //printSide(SideScanResult);

byte maxAngleMotor4 = 98;  // maximum limit for turning

//Flags
volatile boolean leftButtonIsPressed = false;
volatile boolean rightButtonIsPressed = false;
volatile boolean operateFlag = false;


//Data arrays and matrixes


//Method for turning the cube ClockWise
void turnCubeCW() {
  turnMotor2(95, 5);
  delay(200);
  turnMotor1(5, 3);
