public void initGame(ViewPlayer player1, ViewPlayer player2, int timeRemaining) {
    if(!myThread.isPaused ()){
      synchronized(myThread){
        myThread.pause ();
      }
    }
    
    if ( player1.isHuman () ) {
      p1 = new Human (player1.getPlayerName (), WHITE, timeRemaining);
    }
    else {
      p1 = new AI (player1.getPlayerDepthLevel (),
          player1.getPlayerIntDifficulty (), WHITE, player1.getPlayerName (),
          timeRemaining);
    }

    if ( player2.isHuman () ) {
      p2 = new Human (player2.getPlayerName (), BLACK, timeRemaining);
    }
    else {
      p2 = new AI (player2.getPlayerDepthLevel (),
          player2.getPlayerIntDifficulty (), BLACK, player2.getPlayerName (),
          timeRemaining);
    }
    humanMove = null;
    moveStorage = Collections.synchronizedList (new ArrayList<Move> ());
    myTimer.setPlayer1Name (player1.getPlayerName ());
    myTimer.setPlayer2Name (player2.getPlayerName ());
    myTimer.resetTimer (timeRemaining);
    myTimer.continueTimer ();
    board = new Board ();
    myBoard.setBoard (board);
    myBoard.setLastMove (null);
    myBoard.setPossibleMoves (null);
    myBoard.setActivePosition (null);
    addHistory ();
    changeColorTo(WHITE);
    frame.repaint ();
    synchronized (myThread) {
      myThread.goOn ();
    }
  }