private AbstractStartingHand getHandInput(PokerGameType gameType, int i) {
        while (true) {
            System.out.println("");
            System.out.print("Enter cards in hand " + i + "  (example: As, Kd): ");
            String input = scanner.nextLine().trim();
            List<Card> parsedCards;
            try {
                parsedCards = TextParser.parseTextToCards(input);
            } catch (ParseException ex) {
                System.out.println("Unable to parse input");
                continue;
            }
            if (parsedCards.isEmpty()) {
                System.out.println("No cards detected in input");
                continue;
            }
            if (checkDuplicateCards(parsedCards)) {
                System.out.println("One of the entered cards belongs to another hand");
                continue;
            }
            switch (gameType) {
                case TEXAS:
                    if (parsedCards.size() > 2) {
                        System.out.println("A Texas hold'em hand can have at most two cards");
                    } else {
                        return new TexasHoldemStartingHand(parsedCards);
                    }
                    break;
                case OMAHA:
                    if (parsedCards.size() > 4) {
                        System.out.println("An Omaha hold'em hand can have at most four cards");
                    } else {
                        return new OmahaHoldemStartingHand(parsedCards);
                    }
                    break;
                case SEVEN_STUD:
                    if (parsedCards.size() > 7) {
                        System.out.println("A Seven card stud hand can have at most seven cards");
                    } else {
                        return new SevenCardStudStartingHand(parsedCards);
                    }
                    break;
                case FIVE_DRAW:
                    if (parsedCards.size() > 5) {
                        System.out.println("A Five card draw/stud hand can have at most five cards");
                    } else {
                        return new FiveCardDrawStartingHand(parsedCards);
                    }
                    break;   
                default:
                    throw new RuntimeException("Unsupported hand type!");
            }
        }
    }