@Override
	public Item createItem(String readLine) throws ReadItemLineException {
		Scanner itemScanner = new Scanner(readLine);
		Item item = null;
		BigDecimal price = null;
	    StringBuilder name = null;
		int quantity;
		Set<TaxRateType> taxRateType = null;
		if (StringUtils.isBlank(readLine)) {
			throw new ReadItemLineException("Line is empty");
		}

		if (itemScanner.hasNextInt()) {
			quantity = itemScanner.nextInt();
		} else {
			throw new IllegalStateException("This token is not quanitity");
		}

		name = lookUpItemAt(itemScanner);

		if (itemScanner.hasNext("at")) {
			itemScanner.next("at");
		} else {
			throw new IllegalStateException("at token cannot be found ");
		}

		if (itemScanner.hasNextBigDecimal()) {
			price = itemScanner.nextBigDecimal();
		}
		taxRateType = determineTaxRateType(name.toString());
		item = new ConcreteItem(name.toString(), quantity, price, taxRateType);

		return item;
	}