public void removeBuff(Unit target, Buff buff) {
		if (target != null && buff != null && target.equals(buff.getTarget())) {
			// remove buff from the unit
			Set<Buff> currentBuffs = target.getBuffs();
			currentBuffs.remove(buff);

			// buff was successfully removed from the unit
			// create event for gameEventController
			Map<GameEventParameter, Object> eventParams = new HashMap<GameEventParameter, Object>();
			eventParams.put(GameEventParameter.TRIGGERING_UNIT, buff.getOwner());
			eventParams.put(GameEventParameter.TARGET_UNIT, target);
			eventParams.put(GameEventParameter.TRIGGERING_BUFF, buff);
			GameEventHandler.INSTANCE.removeEventListener(buff);
			GameEventHandler.INSTANCE.createAndDispatchEvent(GameEventType.UNIT_REMOVE_BUFF, buff.getOwner(), eventParams);

			buff.setOwner(null);
			buff.setTarget(null);
			removeGameObject(buff);
			if (LOGGER.isDebugEnabled())
				LOGGER.debug("Successfully removed buff '" + buff + "' from target unit '" + target + "'");
		}
	}