private DiceCombination handle(Command command) {
        int jokerBonus = 100;

        DiceCombination combination = getDiceCombination(command);
        if (combination != null) {
            DiceSet diceSet = ((FigureCommand) command).getDiceSet();

            if (!combination.isSet()) {
                if (jokerChecker.isSet()
                        && (jokerChecker.check(diceSet) > 0)) {
                    // if joker
                    if ((combination != null) && (combination instanceof DiceJokerCombination)) {
                        ((DiceJokerCombination) combination).joker(command, jokerBonus);
                    }
                    else {
                        combination.doHandle(command);
                        combination.setPoints(combination.getPoints() + jokerBonus);
                    }
                }
                else {
                    combination.doHandle(command);
                }

                combination.setPoints(combination.getPoints() * multiplier);
            }
        }
        return combination;
    }