public static CardList sortPotentialAttackers(Combat combat) {
        CardList[] attackerLists = combat.sortAttackerByDefender();
        CardList sortedAttackers = new CardList();

        ArrayList<Object> defenders = combat.getDefenders();

        //Begin with the attackers that pose the biggest threat
        CardListUtil.sortByEvaluateCreature(attackerLists[0]);
        CardListUtil.sortAttack(attackerLists[0]);

        // If I don't have any planeswalkers than sorting doesn't really matter
        if (defenders.size() == 1)
            return attackerLists[0];

        boolean bLifeInDanger = CombatUtil.lifeInDanger(combat);

        // TODO: Add creatures attacking Planeswalkers in order of which we want to protect
        // defend planeswalkers with more loyalty before planeswalkers with less loyalty
        // if planeswalker will be too difficult to defend don't even bother
        for (int i = 1; i < attackerLists.length; i++) {
            //Begin with the attackers that pose the biggest threat
            CardListUtil.sortAttack(attackerLists[i]);
            for (Card c : attackerLists[i])
                sortedAttackers.add(c);
        }

        if (bLifeInDanger) {
            // add creatures attacking the Player to the front of the list
            for (Card c : attackerLists[0])
                sortedAttackers.add(0, c);

        } else {
            // add creatures attacking the Player to the back of the list
            for (Card c : attackerLists[0])
                sortedAttackers.add(c);
        }

        return sortedAttackers;
    }