@Override
                public void resolve() {
                    CardList library = AllZoneUtil.getPlayerCardsInLibrary(card.getController());
                    if (library.size() == 0) return;    // maybe provide some notification that library is empty?

                    CardList revealed = new CardList();

                    Card basicGrab = null;

                    int count = 0;
                    // reveal top card until library runs out or hit a basic land
                    while (basicGrab == null) {
                        Card top = library.get(count);
                        count++;
                        revealed.add(top);

                        if (top.isBasicLand())
                            basicGrab = top;

                        if (count == library.size())
                            break;
                    }//while
                    GuiUtils.getChoiceOptional("Revealed cards:", revealed.toArray());

                    if (basicGrab != null) {
                        // put basic in hand
                        AllZone.getGameAction().moveToHand(basicGrab);
                        revealed.remove(basicGrab);
                    }
                    // place revealed cards in graveyard (TODO: player should choose order)
                    for (Card c : revealed) {
                        AllZone.getGameAction().moveToGraveyard(c);
                    }
                }