public final void mergePuzzlePieces(final SlidingPuzzleBoard newGameBoard,
            final List<SlidingPuzzlePiece> puzzlePiece) {

        for (int i = 0; i <= mergeProcedures; i++) {

            SlidingPuzzlePiece firstPiece = SlidingPuzzlePiece.getPuzzlePiece()
                    .get(randomDigit(0, SlidingPuzzlePiece.getPuzzlePiece()
                            .size()));
            SlidingPuzzleField firstField = firstPiece.getField();

            SlidingPuzzlePiece secondPiece = SlidingPuzzlePiece
                    .getPuzzlePiece().get(
                            randomDigit(0, SlidingPuzzlePiece.getPuzzlePiece()
                                    .size()));
            SlidingPuzzleField secondField = secondPiece.getField();

            int firstFromX = firstField.getFieldCol();
            int firstFromY = firstField.getFieldRow();

            int firstToX = secondField.getFieldCol();
            int firstToY = secondField.getFieldRow();

            System.out.println("switching " + firstFromX + "-" + firstFromY
                    + " with " + firstToX + "-" + firstToY);

            double firstFreeX = secondField.getFieldCoordX();
            double firstFreeY = secondField.getFieldCoordY();

            double secondFreeX = firstField.getFieldCoordX();
            double secondFreeY = firstField.getFieldCoordY();

            double firstShuffleX = (firstFreeX - firstField.getFieldCoordX())
                    + firstPiece.getTranslateX();
            double firstShuffleY = (firstFreeY - firstField.getFieldCoordY())
                    + firstPiece.getTranslateY();

            double secondShuffleX = (secondFreeX - secondField.getFieldCoordX())
                    + secondPiece.getTranslateX();
            double secondShuffleY = (secondFreeY - secondField.getFieldCoordY())
                    + secondPiece.getTranslateY();

            firstPiece.setTranslateX(firstShuffleX);
            firstPiece.setTranslateY(firstShuffleY);

            secondPiece.setTranslateX(secondShuffleX);
            secondPiece.setTranslateY(secondShuffleY);

            secondField.setFieldCoordX(firstField.getFieldCoordX());
            secondField.setFieldCoordY(firstField.getFieldCoordY());
            secondField.setFieldCol(firstFromX);
            secondField.setFieldRow(firstFromY);

            firstField.setFieldCoordX(firstFreeX);
            firstField.setFieldCoordY(firstFreeY);
            firstField.setFieldCol(firstToX);
            firstField.setFieldRow(firstToY);

        }
        System.out.println("merged..");

    }