private Map<Integer, Double> getAllUsages(List<Bookmark> bookmarks, double timestamp, boolean categories) {
		Map<Integer, Double> usageMap = new LinkedHashMap<Integer, Double>();
		for (Bookmark data : bookmarks) {
			List<Integer> keys = (categories ? data.getCategories() : data.getTags());
			double targetTimestamp = Double.parseDouble(data.getTimestamp());
			Double rec = Math.pow(timestamp - targetTimestamp + 1.0, this.dValue * (-1.0));
			if (!rec.isInfinite() && !rec.isNaN()) {
				for (int key : keys) {
					Double oldVal = usageMap.get(key);
					usageMap.put(key, (oldVal != null ? oldVal + rec : rec));
				}
			} else {
				System.out.println("BLL - NAN");
			}
		}
		return usageMap;
	}