public Board getDeepCopy() {
    Piece[][] piecesCopy = new Piece[8][8];
    
    for(int x = 0; x < pieces.length; x++) {
      Piece[] row = pieces[x];
      
      for(int y = 0; y < row.length; y++) {
        if(row[y] != null) {
          piecesCopy[x][y] = row[y].getDeepCopy();
        }
      }
    }
    
    return new Board(piecesCopy);
  }