private void Cook(Order order) {
		cookGui.setLabelText("Picking up order");
		cookGui.DoGoToPlating();
		try {
			isAnimating.acquire();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		cookGui.setLabelText("Going to Fridge");
		cookGui.DoGoToFridge();
		try {
			isAnimating.acquire();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		cookGui.setFood();
		Random rand = new Random();
		int randomNum = rand.nextInt(4) + 1;
		cookGui.setLabelText("Going to Grill " + randomNum);
		cookGui.DoGoToGrill(randomNum);
		try {
			isAnimating.acquire();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		final String thischoice = order.choice;
		if (mRole.mItemInventory.get(Item.stringToEnum(thischoice)) == 0) {
			order.waiter.msgOutOfFood(thischoice);
			pendingOrders.remove(order);
			return;
		}
		cookGui.setLabelText("Cooking");
		cookTimer.schedule(new TimerTask() {
			public void run() {
				try {
					isAnimating.acquire();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				cookGui.setLabelText("Going to Plating");
				cookGui.DoGoToPlating();
				try {
					isAnimating.acquire();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				pendingOrders.get(0).status = OrderState.Finished;
				mRole.mItemInventory.put(Item.stringToEnum(thischoice), mRole.mItemInventory.get(Item.stringToEnum(thischoice))-1);
				if (mRole.mItemInventory.get(Item.stringToEnum(thischoice)) < orderThreshold) {
					mRole.mItemsDesired.put(Item.stringToEnum(thischoice), 5);
				}
				cookGui.setLabelText("");
				cookGui.removeFood();
				cookGui.DoGoToHome();
				try {
					isAnimating.acquire();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				if (isAnimating.availablePermits() == 0) {
					isAnimating.release();
				}
			}
		}, cooktime);

	}