diff --git a/P/Sd1/TicTacToe/V4/src/main/java/de/hdm_stuttgart/mi/sd1/tictactoe/Board.java b/P/Sd1/TicTacToe/V4/src/main/java/de/hdm_stuttgart/mi/sd1/tictactoe/Board.java
index 7d198206549faf0454a78420f34ebeeb2e9a3e83..f7023e55ce4262fa4203c50fe3c441cbef6adaf2 100644
--- a/P/Sd1/TicTacToe/V4/src/main/java/de/hdm_stuttgart/mi/sd1/tictactoe/Board.java
+++ b/P/Sd1/TicTacToe/V4/src/main/java/de/hdm_stuttgart/mi/sd1/tictactoe/Board.java
@@ -47,8 +47,7 @@ public class Board {
           Helper.excludeIndex(freeFields, i));
       
       if (currentActivePlayer.score == score) {
-        currentActivePlayer = currentActivePlayer.getOtherPlayer();
-        numberOfMoves++;
+        completeMove();
         return;                                                       // Leave current field occupied by active player.
       } else {
         if (0 == score) {
@@ -58,12 +57,15 @@ public class Board {
       board[freeFieldIndex] = null;                                   // Reset field to empty state, continue searching.
     }
     board[drawOrLooseIndex] = currentActivePlayer;
+    completeMove();
+  }
+  
+  private void completeMove() {                                       // To be called after setting a field.
     numberOfMoves++;
     currentActivePlayer = currentActivePlayer.getOtherPlayer();
   }
   
-  
-  public int[] getFreeFields() {
+  private int[] getFreeFields() {
     final int[] freeFields = new int[numberOfFields - numberOfMoves];
 
     int index = 0;
@@ -81,7 +83,6 @@ public class Board {
   }
 
   private int getScore(final Player[] evalBoard, final Player activePlayer, final int[] freeFields) {
-
     {
       final Player winner = getWinner(evalBoard);
 
@@ -92,7 +93,9 @@ public class Board {
       }
     }
 
-    boolean drawChildExists = false;
+    int drawOrLooseScore =                            // Initial value: Opponent is winning
+        activePlayer.getOtherPlayer().score;
+    
     for(int i = 0; i < freeFields.length; i++) {
       final int freeFieldIndex = freeFields[i];
 
@@ -105,15 +108,10 @@ public class Board {
       if (activePlayer.score == score) {              // Maximum or minimum (with respect to active player) has been reached.
         return activePlayer.score;
       } else if (0 == score) {
-        drawChildExists = true;                       // Continue searching for better (maximal or minimal) score.
+        drawOrLooseScore = 0;                         // We found a draw.
       }
     }
-
-    if (drawChildExists) {
-      return 0;                                       // There is at least one "draw" child to choose from.
-    } else {
-      return activePlayer.getOtherPlayer().score;     // All board children score to the active player's enemy
-    }
+    return drawOrLooseScore;
   }
 
   public  Player evaluateWinner(){
@@ -128,32 +126,32 @@ public class Board {
   static public Player getWinner(Player[] evalBoard) {
 
     if (null != evalBoard[4] && (                                            // Check both diagonals
-        (evalBoard[4] == evalBoard[0] && evalBoard[4] == evalBoard[8]) ||                //
-        (evalBoard[4] == evalBoard[6] && evalBoard[4] == evalBoard[2]))) {               //   x x
-      return evalBoard[4];                                                   //    x
-    }                                                                    //   x x
-
-    for (int i = 0; i < fieldSize; i++) {                                // Check all three columns
-      if (null != evalBoard[i] &&                                            //  +-=                                      
-          evalBoard[i] == evalBoard[i + fieldSize] &&
-          evalBoard[i] == evalBoard[i + 2* fieldSize]) {                         //  +-=
-        return evalBoard[i];                                                 //  +-=
+        (evalBoard[4] == evalBoard[0] && evalBoard[4] == evalBoard[8]) ||    //
+        (evalBoard[4] == evalBoard[6] && evalBoard[4] == evalBoard[2]))) {   //   \ /
+      return evalBoard[4];                                                   //    X
+    }                                                                        //   / \
+
+    for (int i = 0; i < fieldSize; i++) {                                    // Check all three columns
+      if (null != evalBoard[i] &&                                            //  | | |                                      
+          evalBoard[i] == evalBoard[i + fieldSize] &&                        //  | | |
+          evalBoard[i] == evalBoard[i + 2* fieldSize]) {                     //  | | |
+        return evalBoard[i];
       }
     }
 
-    for (int i = 0; i < 2 * fieldSize + 1; i += fieldSize) {             // Check all three rows
-      if (null != evalBoard[i] &&                                            // +++
-          evalBoard[i] == evalBoard[i + 1] && evalBoard[i] == evalBoard[i + 2]) {        // ---
-        return evalBoard[i];                                                 // ===
+    for (int i = 0; i < 2 * fieldSize + 1; i += fieldSize) {                      // Check all three rows
+      if (null != evalBoard[i] &&                                                 // ---
+          evalBoard[i] == evalBoard[i + 1] && evalBoard[i] == evalBoard[i + 2]) { // ---
+        return evalBoard[i];                                                      // ---
       }
     }
-    return null;
+    return null;  // No winner found.
   }
 
   /**
    * Occupy the next field by player {@link #getCurrentActivePlayer()}.
    * 
-   * Fields are being numbered by:
+   * Fields are being numbered as:
    * 
    *  1|2|3
    *  -+-+-
@@ -161,7 +159,7 @@ public class Board {
    *  -+-+-
    *  7|8|9
    * 
-   * @param field The field in question
+   * @param field The field in question using user perspective numbering (1,...,9)
    *  
    * @return An error message indication either an occupied field or an index violation.
    *          null if everything is o.K.
@@ -176,8 +174,7 @@ public class Board {
       final Player current = board[fieldIndex];
       if (current == null) {
         board[fieldIndex] = currentActivePlayer;
-        currentActivePlayer = currentActivePlayer.getOtherPlayer();
-        numberOfMoves++;
+        completeMove();
         return null;
       } else {
         return "Field already occupied by " + current.nickname;
@@ -185,21 +182,6 @@ public class Board {
     }
   }
 
-  static public void printNumberingHint() {
-    System.out.println("Numbering scheme:\n");
-    for (int y = 0; y < 3; y++) {
-      for (int x = 0; x < 3; x++) {
-        System.out.print((char)('1' + x + y * fieldSize));
-        if (x < fieldSize - 1) {
-          System.out.print('|');
-        }
-      }
-      if (y < fieldSize - 1) {
-        System.out.println("\n-+-+-");
-      }
-    }
-  }
-
   /**
    * Get the player instance which will do the next move. See {@link #nextMove(short)}
    * 
diff --git a/P/Sd1/TicTacToe/V4/src/test/java/de/hdm_stuttgart/mi/sd1/connectfour/ScoreTest.java b/P/Sd1/TicTacToe/V4/src/test/java/de/hdm_stuttgart/mi/sd1/connectfour/ScoreTest.java
index 4cf14dfe924d0b8d6ef21b6341de6a4f793c2146..cf69f974120966c7116cce29525ab1215323c435 100644
--- a/P/Sd1/TicTacToe/V4/src/test/java/de/hdm_stuttgart/mi/sd1/connectfour/ScoreTest.java
+++ b/P/Sd1/TicTacToe/V4/src/test/java/de/hdm_stuttgart/mi/sd1/connectfour/ScoreTest.java
@@ -49,7 +49,7 @@ public class ScoreTest {
   public void testDraw1() {
 
     final Board board = new Board(
-        COM,                      // active player.
+        COM,                      // active player X.
 
         new Player[] {
             null, null, null,     //  | | 
@@ -58,7 +58,7 @@ public class ScoreTest {
             //                       -+-+-
             YOU, null, COM});     // O| |X
 
-    Assert.assertEquals(YOU.score, board.getScore());
+    Assert.assertEquals(0, board.getScore());
   }