private static void upkeep_Fading() {

        final Player player = AllZone.getPhase().getPlayerTurn();
        CardList list = AllZoneUtil.getPlayerCardsInPlay(player);
        list = list.filter(new CardListFilter() {
            public boolean addCard(Card c) {
                return CardFactory.hasKeyword(c, "Fading") != -1;
            }
        });
        if (list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                final Card card = list.get(i);
                Ability ability = new Ability(card, "0") {
                    @Override
                    public void resolve() {
                        int fadeCounters = card.getCounters(Counters.FADE);
                        if (fadeCounters <= 0)
                            AllZone.getGameAction().sacrifice(card);
                        else
                            card.subtractCounter(Counters.FADE, 1);
                    }
                }; // ability

                StringBuilder sb = new StringBuilder();
                sb.append(card.getName()).append(" - Fading - remove a fade counter from it. ");
                sb.append("If you can't, sacrifice it.)");
                ability.setStackDescription(sb.toString());

                AllZone.getStack().addSimultaneousStackEntry(ability);

            }
        }
    }