       totalScore += addScore;
     }
   }
-  gameWon: return totalScore;
+gameWon: 
+  return totalScore;
 }
 
 int bestMove(char board[], char token, char oppToken, byte &bestCol, byte lookAhead) {
-  
   int bestScore = -9999;
-  
   // Make a copy of the board
   char boardCopy[43];
   for (byte i = 0; i < 43; i++) boardCopy[i] = board[i];
-  
   if (lookAhead > 1) digitalWrite(LED, !digitalRead(LED));
-  
   // Evaluate each choice of column
   for (byte col = 0; col < 7; col++) {
     if (board[col] == '.') {
-    
-      // Drop token onto the copy of the board   
+      // Drop token onto the copy of the board
       byte counterPosition = dropCounter(boardCopy, token, col);
       int thisScore = score(boardCopy, token, oppToken);
-      
       if (thisScore > -1000 && thisScore < 1000 && lookAhead > 0) {
         // Look more moves ahead, but swap places with opponent since it will be their turn next
         byte oppBestCol;
         thisScore = -bestMove(boardCopy, oppToken, token, oppBestCol, lookAhead - 1);
       }
-        
       // Check this choice of column - best so far?
       if (thisScore > bestScore) {
         // Yes, a new best choice found

      digitalWrite(btnCol[col], LOW);
    }
  }
  
  // Has there been any change in the buttons?
  if (btnsNow != lastBtns) {
    // Note the new button values and the time of the change
    lastBtns = btnsNow;
    debounce = millis();
  }
  
  // Do we have a new, stable reading?
  if ((millis() - debounce) > 50 && btnsNow != stableBtns) {
    stableBtns = btnsNow;
    btns &= btnsNow;
  }
  
  // Have we detected some button presses and the timeout period for further changes has expired?
  if ((millis() - debounce) > 500 && btns != NO_BUTTONS) {
    // Work out which column the counter was placed in. Zero indicates cheating! 
    unsigned int col = btns & btns >> 7;
    if (col == 0) {
      strcpy(screen[0], "Cheat!");
      updateScreen();
    }
    else {

      // Figure out which colour counter has been dropped
      char counter;
      if ((btns & 0b1111111) == col) counter = 'O'; else counter = 'X';

      // Has human chosen a colour yet?
      if (human == '-') {
        // Human has now chosen a colour and robot chooses the other
        human = counter;
        if (human == 'X') robot = 'O'; else robot = 'X';
      }

      // Has human played with robot's colour?
      if (counter != human) {
        strcpy(screen[0], "Cheat!");

      else {
        // Human has played correct colour. Figure out which column
        for (byte i=0; i<=6; i++) {
          strip.setPixelColor(i, 0);
          if (bit(i) == col) {
            c = 6-i;
          }
        }
        // Drop the counter
        strip.setPixelColor(c, humanColour);
        strip.show();
        dropCounter(board, human, c);
        displayBoard(board);
        updateScreen();
        if (score(board, human, robot) == 1000) {
          strcpy(screen[0], "You Won!");
          updateScreen();
          while (true) {
          }
        }
        else {
          //unsigned long t = millis();
          strcpy(screen[0], "My go:");
          updateScreen();
          currentScore = bestMove(board, robot, human, best, 4);
          digitalWrite(LED, LOW);
          //Serial.println(millis() - t);
          for (byte i=0; i<=6; i++) {
            strip.setPixelColor(i, 0);
          }
          strip.setPixelColor(best, robotColour);
          strip.show();
          dropCounter(board, robot, best);
          displayBoard(board);
          if (score(board, robot, human) == 1000) {
            strcpy(screen[0], "You Lost!");
            updateScreen();
            while (true) {
            }
          }
          strcpy(screen[0], "Your go:");
          updateScreen();
        }
      }
    }
    btns = NO_BUTTONS;
  }
}

void displayBoard(char board[]) {
  Serial.println("0123456");
  byte i = 0;
  for(byte row = 0; row <= 5; row++) {
    for(byte col = 0; col <= 6; col++) {
      screen[row+1][col] = board[i++];
