private static void chooseColorResolve(final AbilityFactory af, final SpellAbility sa) {
        HashMap<String, String> params = af.getMapParams();
        Card card = af.getHostCard();

        ArrayList<Player> tgtPlayers;

        Target tgt = af.getAbTgt();
        if (tgt != null)
            tgtPlayers = tgt.getTargetPlayers();
        else
            tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa);

        for (Player p : tgtPlayers) {
            if (tgt == null || p.canTarget(af.getHostCard())) {
                if (sa.getActivatingPlayer().isHuman()) {
                    Object o = GuiUtils.getChoice("Choose a color", Constant.Color.onlyColors);
                    if (null == o) return;
                    String choice = (String) o;
                    card.setChosenColor(choice);
                } else {
                	//TODO - needs improvement
                    card.setChosenColor(Constant.Color.Black);
                    JOptionPane.showMessageDialog(null, "Computer chooses "+Constant.Color.Black, ""+card, JOptionPane.PLAIN_MESSAGE); 
                }
            }
        }
    }