public void removeUnit(Unit unit) {
		if (unit != null) {
			removeAllBuffs(unit.getBuffs());
			removeAllAbilities(unit.getAbilities());
			if (LOGGER.isDebugEnabled())
				LOGGER.debug("Successfully removed ALL abilities from unit: " + unit);

			if (unit instanceof Hero) {
				Hero hero = (Hero) unit;

				removeAllItems(hero.getEquipment());
				if (LOGGER.isDebugEnabled())
					LOGGER.debug("Successfully removed ALL equipments from hero: " + hero);

				removeAllItems(hero.getInventory());
				if (LOGGER.isDebugEnabled())
					LOGGER.debug("Successfully removed ALL inventory items from hero: " + hero);

				removeAllItems(hero.getPouch());
				if (LOGGER.isDebugEnabled())
					LOGGER.debug("Successfully removed ALL pouch items from hero: " + hero);
			}

			// unit was successfully removed
			// create event for gameEventController
			Map<GameEventParameter, Object> eventParams = new HashMap<GameEventParameter, Object>();
			eventParams.put(GameEventParameter.TRIGGERING_UNIT, unit);
			GameEventHandler.INSTANCE.createAndDispatchEvent(GameEventType.UNIT_REMOVED, unit, eventParams);

			removeGameObject(unit);
			if (LOGGER.isDebugEnabled())
				LOGGER.debug("Successfully removed unit: " + unit);
		}
	}