public static void addAbility(Unit owner, Ability ability) {
		if (owner != null && ability != null) {
			// check if ability already has an owner -> if so then remove the ability from the current unit
			if (ability.getOwner() != null)
				GameLogic.INSTANCE.removeAbility(ability.getOwner(), ability);

			// add ability to the unit
			ability.setOwner(owner);
			Set<Ability> currentAbilities = owner.getAbilities();

			if (currentAbilities == null) {
				// unit does not have an ability yet
				currentAbilities = new HashSet<Ability>();
				owner.setAbilities(currentAbilities);
			}

			currentAbilities.add(ability);
			// ability was successfully added to the unit
			// create event for gameEventController
			Map<GameEventParameter, Object> eventParams = new HashMap<GameEventParameter, Object>();
			eventParams.put(GameEventParameter.TRIGGERING_UNIT, owner);
			eventParams.put(GameEventParameter.TRIGGERING_ABILITY, ability);
			GameEventHandler.INSTANCE.createAndDispatchEvent(GameEventType.UNIT_ADD_ABILITY, owner, eventParams);
			if (LOGGER.isDebugEnabled())
				LOGGER.debug("Successfully added ability '" + ability + "' to unit '" + owner + "'");
		}
	}