public ChessGameConfiguration putPiece(Piece piece,int boardPosition)
    throws IllegalMark{
        ChessGameConfiguration out;
    
        Cell[] newCellBoard = Arrays.copyOf(this.currentBoard, this.currentBoard.length);
        
        //
        CellMarkerFactory cellMarkFactory = CellMarkerFactory.getInstance();
        Marker[] markers = cellMarkFactory.getMarks(piece);
        
        for(Marker marker:markers){    
              marker.mark(boardPosition,newCellBoard,this.rows,this.columns);
        }
        
        //Set the piece cell.
        newCellBoard[boardPosition] = new PieceCell(piece);        
        
        out = new ChessGameConfiguration(newCellBoard, rows, columns);
        
        return out;
    }