public void removeItem(Hero owner, Item item) {
		if (owner != null && item != null && owner.equals(item.getOwner())) {
			switch (item.getCategory()) {
				case CONSUMABLE: {
					// remove item from pouch
					owner.getPouch().remove(item);
					if (LOGGER.isDebugEnabled())
						LOGGER.debug("Successfully removed consumable item '" + item + "' from hero " + owner);
					break;
				}
				case QUEST: {
					// remove item from inventory
					owner.getInventory().remove(item);
					if (LOGGER.isDebugEnabled())
						LOGGER.debug("Successfully removed QUEST item '" + item + "' from inventory of hero " + owner);
					break;
				}
				default: {
					// remove item from current equipment or inventory of owner
					owner.getEquipment().remove(item);
					owner.getInventory().remove(item);
					if (LOGGER.isDebugEnabled())
						LOGGER.debug("Successfully removed inventory item '" + item + "' from hero " + owner);
					break;
				}
			}

			// create event for gameEventController
			Map<GameEventParameter, Object> eventParams = new HashMap<GameEventParameter, Object>();
			eventParams.put(GameEventParameter.TRIGGERING_UNIT, owner);
			eventParams.put(GameEventParameter.TRIGGERING_ITEM, item);
			GameEventHandler.INSTANCE.createAndDispatchEvent(GameEventType.UNIT_REMOVE_ITEM, owner, eventParams);

			item.setOwner(null);
			removeGameObject(item);
		}
	}