public SimulationResult performSimulation() {
        SimulationResult simulationResult;
        Set<AbstractStartingHand> handSet = new HashSet<AbstractStartingHand>(startingHands);
        if (gameType.isCommunityCardGame()) {
            simulationResult = new SimulationResult(handSet, board, numberOfSimulations, gameType);
        } else {
            simulationResult = new SimulationResult(handSet, numberOfSimulations, gameType);
        }

        for (int i = 0; i < numberOfSimulations; i++) {
            Set<AbstractStartingHand> result = simulateHand();
            simulationResult.addResultForOneSimulation(result);
        }

        return simulationResult;
    }