private void startSimulation() {
        PokerGameType gameType = getGameSelection();
        int numberOfHands = getNumberOfHands(gameType);
        List<AbstractStartingHand> startingHands = getStartingHands(numberOfHands, gameType);
        FiveCardBoard board = null;
        if (gameType.isCommunityCardGame()) {
            board = getBoard();
            deadCards.addAll(board.getCards());
        }
        int numberOfSimulations = getNumberOfSimulations();
        

//        printSelections(gameType, numberOfHands, startingHands, board, numberOfSimulations);

        AbstractPokerHandSimulator simulator;
        if (gameType.isCommunityCardGame()) {
            simulator = new PokerHandSimulatorVersion2(startingHands, board.getCards(), numberOfSimulations);
        } else {
            simulator = new PokerHandSimulatorVersion2(startingHands, numberOfSimulations);
        }
        SimulationResult result;
        
        System.out.println("Simulating, please wait...");
        long start = System.currentTimeMillis();

        try {
            result = simulator.performSimulation(2);
        } catch (InterruptedException ex) {
            System.out.println("One of the simulation threads were interrupted. Please try again.");
            return;
        }
        long end = System.currentTimeMillis(); 
        double timeElapsed = (1.0*end-start)/1000;     
        printResults(result, startingHands, board, gameType, timeElapsed);                
    }