private static void upkeep_Oath_of_Ghouls() {
        CardList oathList = AllZoneUtil.getCardsInPlay("Oath of Ghouls");
        if (oathList.isEmpty())
            return;

        final Player player = AllZone.getPhase().getPlayerTurn();

        if (AllZoneUtil.compareTypeAmountInGraveyard(player, "Creature") > 0) {
            for (int i = 0; i < oathList.size(); i++) {
                Ability ability = new Ability(oathList.get(0), "0") {
                    @Override
                    public void resolve() {
                        CardList graveyardCreatures = AllZoneUtil.getPlayerTypeInGraveyard(player, "Creature");

                        if (AllZoneUtil.compareTypeAmountInGraveyard(player, "Creature") > 0) {
                            if (player.isHuman()) {
                                Object o = GuiUtils.getChoiceOptional("Pick a creature to return to hand",
                                        graveyardCreatures.toArray());
                                if (o != null) {
                                    Card card = (Card) o;

                                    AllZone.getGameAction().moveToHand(card);
                                }
                            } else if (player.isComputer()) {
                                Card card = graveyardCreatures.get(0);

                                AllZone.getGameAction().moveToHand(card);
                            }
                        }
                    }
                };// Ability

                StringBuilder sb = new StringBuilder();
                sb.append("At the beginning of each player's upkeep, Oath of Ghouls returns a creature ");
                sb.append("from their graveyard to owner's hand if they have more than an opponent.");
                ability.setStackDescription(sb.toString());

                AllZone.getStack().addSimultaneousStackEntry(ability);

            }
        }
    }