@Override
	public boolean take(int amnt, final boolean note, final Map<Integer, Integer> items,
			final Map<Integer, Integer> used) {
		if (note && canNote()) {
			for (int id : sortedIds) {
				ItemInformation info = this.items.get(id);
				int amntToUse = Math.min(amnt, get(items, info.getNotedId()) - get(used, info.getNotedId()));
				amnt -= amntToUse;
				update(used, info.getNotedId(), amntToUse);
				if (amnt <= 0)
					break;
			}
		}
		for (int id : sortedIds) {
			ItemInformation info = this.items.get(id);
			int dif = get(items, info.getItemId()) - get(used, info.getItemId());
			int amntToUse = Math.min(amnt, dif);
			amnt -= amntToUse;
			update(used, info.getItemId(), amntToUse);
			if (amnt <= 0)
				break;
		}
		return amnt <= 0;
	}