   //scanCube();  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   detachInterrupt(0);
   copyCube();
+  //virtualSequence(F("RDURRL"));
   solveCube();
   assembleCube(SolvedCube);
   detachInterrupt(0);

  for (byte j = 0; j<20; j++) {
    ScannedCube[pgm_read_byte(&(v_table[index][j]))] = CubeCopy[pgm_read_byte(&(v_table[index][j+20]))];
  }
  copyCube();
}


//General method for solivng the cube
void solveCube() {
  virtualMove('R');
  virtualMove('L');
  virtualMove('U');
  virtualMove('D');
  virtualMove('B');
  virtualMove('F');
  virtualMove('f');
  virtualMove('b');
  virtualMove('d');
  virtualMove('u');
  virtualMove('l');
  virtualMove('r');
  
  delay(1000);
}




//Methods for virtual rotation of the cube
void virtualSequence(String v_sequence) {
  byte sequenceLength = v_sequence.length();
  for (byte i=0; i<sequenceLength; i++) {
    virtualMove(v_sequence[i]);    
  }
}


void virtualMove(char v_move) {
  byte index;
  for (index = 0; index <13; index++) {
