private static void doUnanimate(Card c, AbilityFactory af, ArrayList<String> originalTypes, String colorDesc, 
    		ArrayList<String> originalKeywords, ArrayList<SpellAbility> addedAbilities, ArrayList<Trigger> addedTriggers, 
    		long colorTimestamp, boolean givesStAbs, long timestamp) {
    	HashMap<String, String> params = af.getMapParams();
    	
    	c.removeNewPT(timestamp);

        c.clearAllTypes();
        
        //remove all static abilities
        if (givesStAbs)
        	c.setStaticAbilities(new ArrayList<StaticAbility>());
        	
        for (String type : originalTypes) {
            c.addType(type);
        }

        c.removeColor(colorDesc, c, !params.containsKey("OverwriteColors"), colorTimestamp);

        for (String k : originalKeywords) {
            if (k.startsWith("HIDDEN"))
                c.removeExtrinsicKeyword(k);
            //TODO - may want to look at saving off intrinsic and extrinsic separately and add back that way
            c.removeIntrinsicKeyword(k);
        }

        for (SpellAbility sa : addedAbilities) {
            c.removeSpellAbility(sa);
        }

        for (Trigger t : addedTriggers) {
            AllZone.getTriggerHandler().removeRegisteredTrigger(t);
            c.removeTrigger(t);
        }

        //any other unanimate cleanup
        if (!c.isCreature()) c.unEquipAllCards();
    }