public void play( Card card) {
        System.out.println(getName() + " played " + card.getName() + ".");
        
        // Remove the card from the player's hand
        getHand().remove(card);

        // Add the values from the card to the player's total
        addRune(card.getRune());
        addBattle(card.getBattle());
        
        // Check the ability list and perform each ability
        for (Ability ability : card.getAbilities()){
        	try {
				ability.perform(this);
			} catch (SecurityException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalArgumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NoSuchMethodException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
        
        if (card.getCardType().equals(Type.CONSTRUCT)) {
            // Add card to the construct deck
            getConstructs().add(card);
        } else {
            // Add the card to the played deck
            getPlayed().add(card);
        }
        
        System.out.println("Rune: " + getRuneTotal());
        System.out.println("Battle: " + getBattleTotal());
    }