private void addCraftable(Craftable c)
	{
		DebugLogger.log("Adding Craftable: "+c.getName(), logging);
		
		if (itemMap.containsKey(c.name)) //it exists as material
		{
			Material oldMaterial = (Material) itemMap.get(c.name); //hold old data
			
			itemMap.put(c.name, c); //replace data
			
			//update the items the material was used in
			for (int i = 0; i < oldMaterial.getCraftsIntoLength(); i++)
			{
				oldMaterial.getCraftsInto(i).remapRecipe(itemMap);
				c.addCraftsInto(oldMaterial.getCraftsInto(i));
			}
			
			materials.remove(oldMaterial); //clean up materials array
		}
		else //it doesnt exist as material
		{
			itemMap.put(c.name, c);
		}
		
		RecipeIterator ri = c.getRecipeIterator();
		
		while (ri.hasNextItem())
		{
			//adds this craftable into the craftsInto
			//list of the items it is crafted from
			ri.nextItem().addCraftsInto(c);
		}
		
		currentList.add(c);
	}