Help with crafting system. Removing used items

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Recipe : MonoBehaviour {
public string itemName;
public Dictionary<string, int> items;

public Recipe(string name, Dictionary<string, int> materials)
{
	itemName = name;
	items = materials;
	Inventory.recipes.Add(this);

}
}

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class RecipeCreator : MonoBehaviour {
public RecipeCreator() {

	Recipe plankHorizontal = new Recipe("Plank (Horizontal)", new Dictionary<string, int>() {
		{"Wood", 10}
	});

	Recipe plankVertical = new Recipe("Plank (Vertical)", new Dictionary<string, int>() {
		{"Wood", 10}
	});

	Recipe woodBlock = new Recipe("Wood Block", new Dictionary<string, int>() {
		{"Wood", 1}
	});

	Recipe WoodPlanks = new Recipe ("WoodPlanks", new Dictionary<string, int> (){
		{"Wood", 2}
	});
}
}

These are my two scripts for my crafting system. The problem is it doesnt remove items from my inventory when i craft. How could i make it to when i craft something it takes away the right amount of items.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Inventory : MonoBehaviour {

public int slotsX = 5;
public int slotsY = 5;
public GUISkin skin;
public List<Item> inventory = new List<Item>();
public bool showInventory = false;
public bool showCrafting = false;
public static List<Recipe> recipes = new List<Recipe>();

private Item swappedItem;
private bool draggingItem = false;
private Item draggedItem;
private int prevIndex;
private int spikeCount;
private Rect invRect = new Rect(200, 140, 350, 420);
private Rect imageRect = new Rect(0, 0, 50, 50);
private Rect craftRect = new Rect(0, 40, 350, 350);
private Vector2 scrollPosition = Vector2.zero;

// Use this for initialization
void Start () 
{
	invRect = new Rect(Screen.width / 2 - (invRect.width / 2), 0, invRect.width, invRect.height);
	craftRect = new Rect(Screen.width / 2 - craftRect.width - invRect.width / 2, 0, craftRect.width, craftRect.height);
	
	for(int i = 0; i < (slotsX * slotsY); i++)
	{
		inventory.Add(new Item());
	}

	new RecipeCreator();
}

// Update is called once per frame
void Update () {
	if(Input.GetKeyDown(KeyCode.I))
	{
		showInventory = !showInventory;
		showCrafting = !showCrafting;
		
		if(draggingItem)
		{
			inventory[prevIndex] = draggedItem;
			draggingItem = false;
			draggedItem = null;
		}
	}
	
	//Cheat Keys
	if(Input.GetKeyDown("1"))
	{
		AddItem("Wood");
	}
	
	if(Input.GetKeyDown("2"))
	{
		AddItem("Stone");
	}
}
void OnGUI()
{
	GUI.skin = skin;
	
	if(showInventory)
	{
		GetCraftable();
		invRect = GUI.Window(0, invRect, DrawInventory,  "");
		
		if(Event.current.type == EventType.mouseUp && draggingItem)
		{
			if(invRect.Contains(Event.current.mousePosition))
			{
				inventory[prevIndex] = draggedItem;
				draggingItem = false;
				draggedItem = null;
			} else {
				RemoveItem(prevIndex);
				draggingItem = false;
				draggedItem = null;
			}
		}
		
		if(draggingItem)
		{
			CreateDraggedItem();
		}

		if(showCrafting)
		{
			craftRect = GUI.Window(5, craftRect, DrawCraftView, "");
		}
	}
}

void AddSpikes (float winX)
{
	spikeCount = (int)Mathf.Floor (winX - 152) / 22;
	GUILayout.BeginHorizontal ();
	GUILayout.Label ("", "SpikeLeft");//-------------------------------- custom
	for (int i = 0; i < spikeCount; i++) {
		GUILayout.Label ("", "SpikeMid");//-------------------------------- custom
	}
	GUILayout.Label ("", "SpikeRight");//-------------------------------- custom
	GUILayout.EndHorizontal ();
}

void DrawInventory(int windowId)
{
	AddSpikes(windowId);
	
	GUILayout.Label ("Inventory");
	
	Event e = Event.current;
	
	int i = 0;
	
	for(int x = 0; x < slotsX; x++)
	{
		GUILayout.BeginHorizontal();
		for(int y = 0; y < slotsY; y++)
		{
			GUILayout.BeginVertical();
			GUILayout.Box (inventory*.itemIcon);*

_ if(inventory*.multiItems)_
_
{_
_ if(inventory.itemCounter > 1)
{
GUI.Box(GUILayoutUtility.GetLastRect(), inventory.itemCounter.ToString(), “ItemCounter”);
}
}*_

_ if(inventory*.itemName != null)
{
if(IsMouseOver())
{
if(e.button == 0 && e.type == EventType.mouseDown && !draggingItem)
{
draggingItem = true;
prevIndex = i;
draggedItem = inventory;
inventory = new Item();
}*_

* if(e.type == EventType.mouseUp && draggingItem)*
* {*
_ inventory[prevIndex] = inventory*;
inventory = draggedItem;
draggingItem = false;
draggedItem = null;
}
}
}
else {
if(IsMouseOver())
{
if(e.type == EventType.mouseUp && draggingItem)
{
inventory = draggedItem;
draggingItem = false;
draggedItem = null;
}
}
}
GUILayout.EndVertical();
i++;
}
GUILayout.EndHorizontal();
}
GUI.DragWindow (new Rect(0, 0, 10000, 75));
}
void DrawCraftView(int windowID)
{
AddSpikes(craftRect.width);
Event e = Event.current;
GUILayout.Space(8);
GUILayout.Label(“Crafting”);
GUILayout.Label(“”, “Divider”);
scrollPosition = GUILayout.BeginScrollView(scrollPosition);
for(int i = 0; i < GetCraftable().Count; i++)
{
if(GUILayout.Button(GetCraftable()))
{
Craft(GetCraftable());
}
}
GUILayout.EndScrollView();
GUILayout.Label(“”, “Divider”);
GUILayout.Space(8);
GUI.DragWindow(new Rect(0, 0, 10000, 75));
}*_

* bool IsMouseOver()*
* {*
* return GUILayoutUtility.GetLastRect ().Contains (Event.current.mousePosition);*
* }*

* void CreateDraggedItem()*
* {*
* Rect tempRect = new Rect (Event.current.mousePosition.x + 5, Event.current.mousePosition.y, 64, 64);*
* imageRect = GUI.Window (2, tempRect, DrawDraggedItem, “”, “DragImage”);*
* }*

* void DrawDraggedItem(int windowID)*
* {*
* GUILayout.Box (draggedItem.itemIcon, “DragImage”);*
* }*

* public void AddItem(int id)*
* {*
* if(Database.isItemMultiple(id))*
* {*
* if(InventoryContains(id))*
* {*
* AddItemToExisting(id);*
* return;*
* }*
* }*

* for(int i = 0 ; i < inventory.Count; i++)*
* {*
_ if(inventory*.itemName == null)
{
for(int j = 0; j < Database.items.Count; j++)
{
if(Database.items[j].itemID == id)
{
Database.CopyItem(inventory, Database.items[j]);
}
}
break;
}
}
}*_

* public void AddItem(string name)*
* {*
* if(Database.isItemMultiple(name))*
* {*
* if(InventoryContains(name))*
* {*
* AddItemToExisting(name);*
* return;*
* }*
* }*

* for(int i = 0 ; i < inventory.Count; i++)*
* {*
_ if(inventory*.itemName == null)
{
for(int j = 0; j < Database.items.Count; j++)
{
if(Database.items[j].itemName == name)
{
Database.CopyItem(inventory, Database.items[j]);
}
}
break;
}
}
}*_

* public void AddItem(Item item)*
* {*
* if(Database.isItemMultiple(item.itemID))*
* {*
* if(InventoryContains(item.itemID))*
* {*
* AddItemToExisting(item.itemID);*
* return;*
* }*
* }*

* for(int i = 0 ; i < inventory.Count; i++)*
* {*
_ if(inventory*.itemName == null)
{
inventory = item;
break;
}
}
}*_

* void RemoveItem(string name, int amount)*
* {*
* int removed = 0;*

* for(int i = 0; i < inventory.Count; i++)*
* {*
_ if(inventory*.itemName == name)
{
if(inventory.multiItems)
{
if(inventory.itemCounter > (amount - removed))
{
inventory.itemCounter -= (amount = removed);
break;
}
else if(inventory.itemCounter == (amount - removed)){
inventory = new Item();
break;
} else {
removed += inventory.itemCounter;
inventory = new Item();
if(removed >= amount)
{
break;
}
}
} else {
if(removed < amount)
{
removed ++;
inventory = new Item();
} else {
break;
}
}
}
}
}*_

* void RemoveItem(int index)*
* {*
* inventory[index] = new Item ();*
* }*

* bool InventoryContains(int id)*
* {*
* for(int i = 0; i < inventory.Count; i++)*
* {*
_ if(inventory*.itemID == id)
{
return true;
}
}
return false;
}*_

* bool InventoryContains(string name)*
* {*
* for(int i = 0; i < inventory.Count; i++)*
* {*
_ if(inventory*.itemName == name)
{
return true;
}
}
return false;
}*_

* bool InventoryContains(string name, int amount)*
* {*
* for (int i = 0; i < inventory.Count; i++) {*
_ if(inventory*.multiItems)
{
if(inventory.itemCounter >= amount)
{
return true;
}
} else {
return false;
}
}
return false;
}*_

* void AddItemToExisting(int id)*
* {*
* for(int i = 0; i < inventory.Count; i++)*
* {*
_ if(inventory*.itemID == id)
{
inventory.itemCounter ++;
}
}
}*_

* void AddItemToExisting(string name)*
* {*
* for(int i = 0; i < inventory.Count; i++)*
* {*
_ if(inventory*.itemName == name)
{
inventory.itemCounter ++;
}
}
}
public List GetCraftable()
{
List craftable = new List();
for(int i = 0; i < recipes.Count; i++)
{
foreach(var mat in recipes.items.Keys)
{
if(InventoryContains(mat, recipes.items[mat]))
{
craftable.Add(recipes.itemName);
}
}
}
return craftable;
}
public void Craft(string item)
{
List craftable = GetCraftable();
for(int i = 0; i < recipes.Count; i++)
{
if(recipes.itemName == item)
{
foreach(var mat in recipes.items.Keys)
{
RemoveItem(mat, recipes.items[mat]);
}
}
}
AddItem(item);
}
}*

Heres my inventory script_