public void useTransportableTool(State state, ObjectInstance tool, ObjectInstance container, String agent) {
		if (ToolFactory.isEmpty(tool)) {
			Set<String> contentNames = ContainerFactory.getContentNames(container);
			Set<String> includes = ToolFactory.getIncludes(tool);
			Set<String> excludes = ToolFactory.getExcludes(tool);
			
			if (!includes.isEmpty()) {
				// only add the ingredients that have the trait we're trying to includes
				for (String name : contentNames) {
					ObjectInstance ingredient = state.getObject(name);
					for (String trait : includes) {
						if (IngredientFactory.getTraits(ingredient).contains(trait)) {
							ToolFactory.addIngredientToTool(state, tool, ingredient);
							break;
						}
					}
				}
			} else {
				// Add all ingredients but those with the traits we're trying to exclude
				for (String name : contentNames) {
					ObjectInstance ingredient = state.getObject(name);
					boolean exclude = false;
					for (String trait : excludes) {
						if (IngredientFactory.getTraits(ingredient).contains(trait)) {
							exclude = true;
							break;
						}
					}
					if (!exclude) {
						ToolFactory.addIngredientToTool(state, tool, ingredient);
					}
				}	
			}
		} else {
			ToolFactory.pourIngredients(domain, state, tool, container, agent);
		}
	}