public static Disc recommendDiscForBag(Bag bag) {
		LOGGER.log(Level.INFO, "Selecting criteria for disc to complement bag. Here be dragons..");

		Map<String, Object> criteria = new HashMap<String, Object>();
		DiscType suggestDiscType = bag.getLackingDiscType();

		if (suggestDiscType != DiscType.UNKNOWN) {
			criteria.put("discType", suggestDiscType);
			criteria.put("stability", bag.getLackingStabilityForType(suggestDiscType));
		} else { // They aren't lacking a disc type
			//TODO will this even get called? At least one disc type will be selected
			Stability suggestStability = bag.getLackingStabilityForType(DiscType.MIDRANGE);
			
			if (suggestStability == Stability.UNKNOWN) { // Then check fairway drivers
				suggestStability = bag.getLackingStabilityForType(DiscType.FAIRWAYDRIVER);
				
				if (suggestStability == Stability.UNKNOWN) { // Then check distance drivers
					suggestStability = bag.getLackingStabilityForType(DiscType.DISTANCEDRIVER);
					
					if (suggestStability != Stability.UNKNOWN) {
						criteria.put("discType", DiscType.DISTANCEDRIVER);
						criteria.put("stability", suggestStability);
					} // else They have acceptable disc type and stability ratios
				} else {
					criteria.put("discType", DiscType.FAIRWAYDRIVER);
					criteria.put("stability", suggestStability);
				}
			} else {
				criteria.put("discType", DiscType.MIDRANGE);
				criteria.put("stability", suggestStability);
			}
			System.out.println("REC stability: " + suggestStability);
		}
		
		LOGGER.log(Level.INFO, "Criteria for disc recommendation: " + criteria.toString());
		return getDiscByCriteria(criteria);
	}