public void removeAbility(Unit owner, Ability ability) {
		if (owner != null && ability != null && owner.equals(ability.getOwner())) {
			// remove ability from the unit
			Set<Ability> currentAbilities = owner.getAbilities();
			currentAbilities.remove(ability);

			// ability was successfully removed from 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.removeEventListener(ability);
			GameEventHandler.INSTANCE.createAndDispatchEvent(GameEventType.UNIT_REMOVE_ABILITY, owner, eventParams);

			ability.setOwner(null);
			removeGameObject(ability);
			if (LOGGER.isDebugEnabled())
				LOGGER.debug("Successfully removed ability '" + ability + "' from unit '" + owner + "'");
		}
	}