public void execute() {

            // remove all static effects
            for (int i = 0; i < storage.size(); i++) {
                removeStaticEffect(storage.get(i));
            }

            //clear the list
            storage = new ArrayList<StaticEffect>();

            //Gather Cards on the Battlefield with the stPump Keyword
            CardList cards = AllZoneUtil.getCardsInPlay();
            cards.getKeywordsContain("stAnimate");

            // check each card
            for (int i = 0; i < cards.size(); i++) {
                Card cardWithKeyword = cards.get(i);
                ArrayList<String> keywords = cardWithKeyword.getKeyword();

                // check each keyword of the card
                for (int j = 0; j < keywords.size(); j++) {
                    String keyword = keywords.get(j);

                    if (keyword.startsWith("stAnimate")) {
                        StaticEffect se = new StaticEffect();     //create a new StaticEffect
                        se.setSource(cardWithKeyword);
                        se.setKeywordNumber(j);


                        //get the affected cards
                        String k[] = keyword.split(":", 8);

                        if (specialConditionsMet(cardWithKeyword, k[6])) { //special conditions are isPresent, isValid

                            final String affected = k[1];
                            final String specific[] = affected.split(",");
                            CardList affectedCards = getAffectedCards(cardWithKeyword, k, specific); // options are All, Self, Enchanted etc.
                            se.setAffectedCards(affectedCards);

                            String[] pt = k[2].split("/");
                            if (!k[2].equals("no changes") && pt.length > 1) {

                                int x = 0;
                                if (pt[0].contains("X") || pt[1].contains("X"))
                                    x = CardFactoryUtil.xCount(cardWithKeyword, cardWithKeyword.getSVar("X").split("\\$")[1]);
                                se.setXValue(x);

                                int y = 0;
                                if (pt[1].contains("Y"))
                                    y = CardFactoryUtil.xCount(cardWithKeyword, cardWithKeyword.getSVar("Y").split("\\$")[1]);
                                se.setYValue(y);
                            }

                            ArrayList<String> types = new ArrayList<String>();
                            if (!k[3].equalsIgnoreCase("no types")) {
                                types.addAll(Arrays.asList(k[3].split(",")));
                                if (types.contains("Overwrite")) {
                                    types.remove("Overwrite");
                                    se.setOverwriteTypes(true);
                                }
                                if (types.contains("KeepSupertype")) {
                                    types.remove("KeepSupertype");
                                    se.setKeepSupertype(true);
                                }
                                if (types.contains("RemoveSubTypes")) {
                                    types.remove("RemoveSubTypes");
                                    se.setRemoveSubTypes(true);
                                }
                            }

                            String colors = "";
                            if (!k[4].equalsIgnoreCase("no colors")) {
                                colors = k[4];
                                if (colors.contains(",Overwrite") || colors.contains("Overwrite")) {
                                    colors = colors.replace(",Overwrite", "");
                                    colors = colors.replace("Overwrite", "");
                                    se.setOverwriteColors(true);
                                }
                                colors = CardUtil.getShortColorsString(new ArrayList<String>(Arrays.asList(k[4].split(","))));
                            }

                            if (k[2].contains("Overwrite")) {
                                se.setOverwriteKeywords(true);
                            }

                            if (k[5].contains("Overwrite")) {
                                se.setOverwriteAbilities(true);
                            }

                            addStaticEffects(se, cardWithKeyword, affectedCards, k[2], types, colors); //give the boni to the affected cards

                            storage.add(se); // store the information
                        }
                    }
                }
            }
        }