public void takeOrder() {
		ConsoleOutputUtility.printWelcomeMessage();
		List<IBeverage> orderList = new ArrayList<IBeverage>();
		List<KeyValuePair> beverageList = CommonUtility.getKeysAndValues(KahveciEfendi.BEVERAGE_PROPERTY);
		boolean isBeveragePartFinished = false;
		IBeverage beverage = null;
		while (!isBeveragePartFinished) {
			ConsoleOutputUtility.printIntroductionMessage(beverageList, orderList, beverage);
			String input = CommonUtility.getUserInput();
			boolean isNumeric = CommonUtility.isNumeric(input);
			logger.debug("Given bevearage input : " + input + " Is numeric : " + isNumeric);
			if (isNumeric) {
				beverage = this.prepareBeverage(beverageList, input);
				continue;
			}
			logger.info("Given branching option is " + input.toLowerCase());
			switch (input.toLowerCase().charAt(0)) {
			case ConsoleOutputUtility.QUIT:
				logger.info("Customer cancelled the program");
				ConsoleOutputUtility.printOrderCancelledMessage();
				System.exit(0);
			case ConsoleOutputUtility.COMPLETE_ORDER:
				logger.debug("Customer completed his order");
				ConsoleOutputUtility.printOrderCompletedMessage();
				isBeveragePartFinished = true;
				break;
			case ConsoleOutputUtility.ADD_CURRENT_BEVERAGE:
				logger.debug("Customer wanted to add current beverage " + beverage.getDescription()
						+ " without condiment");
				orderList.add(beverage);
				beverage = null;
				continue;
			case ConsoleOutputUtility.ADD_CONDIMENT_TO_BEVERAGE:
				logger.debug("Customer wanted to add condiment to his current beverage : " + beverage.getDescription());
				beverage = this.addCondiment(beverage);
				// Current may be cancelled so check if cancelled or not before
				// adding to order
				if (beverage != null) {
					orderList.add(beverage);
				}
				logger.debug("Current confirmed beverage size is " + orderList.size());
				beverage = null;
				continue;
			case ConsoleOutputUtility.CANCEL_LAST_BEVERAGE:
				if (orderList.isEmpty()) {
					logger.debug("Nothing to cancel!");
					ConsoleOutputUtility.printNoConfirmedOrderMessage();
				} else {
					IBeverage cancalledBeverage = orderList.remove(orderList.size() - 1);
					logger.info("Customer wanted to cancel last confirmed beverage : "
							+ cancalledBeverage.getDescription());
					ConsoleOutputUtility.printCancelLastBeverageMessage(cancalledBeverage);
					beverage = null;
				}
				continue;
			default:
				logger.info("Given branching option is not valid!" + input.toLowerCase());
				ConsoleOutputUtility.printInvalidInputMessage();
			}
		}
		ConsoleOutputUtility.printTotalOrder(orderList);
	}