public Boolean load() {
      FileInputStream fis = null;
      ObjectInputStream ois = null;
      try {
         File f = new File("abalone.save");
         fis = new FileInputStream(f);
         ois = new ObjectInputStream(fis);
         Game loadedGame = (Game) ois.readObject();
         this.game = new Game(loadedGame.getTurn(), loadedGame.getTimeLeft(), loadedGame.getTurnsLeft());
         this.game.setHistory(loadedGame.getHistory());
         this.game.setBoard(Board.getInstance());
         this.game.getBoard().fill(loadedGame);
         AI.init(this.game, ((Boolean) Config.get("AI")) ? Color.BLACK : Color.NONE);
         this.currentBestMove = AI.getInstance().getBestMove(this.game.getTurn());
         this.window.updateBoard(this.game.getTurn());
      } catch (Exception ex) {
         Logger.getLogger(GameController.class.getName()).log(Level.SEVERE, null, ex);
         return Boolean.FALSE;
      } finally {
         try {
            if ( fis != null )
               fis.close();
            if ( ois != null )
               ois.close();
         } catch (IOException ex) {
            Logger.getLogger(GameController.class.getName()).log(Level.SEVERE, null, ex);
         }
      }
      this.window.updateBoard(this.game.getTurn());
      return Boolean.TRUE;
   }