class ResourceBudgetManager {

	public boolean reserve(final ResourceProfile reservation) {
		checkResourceProfileNotNullOrUnknown(reservation);
		if (!availableBudget.isMatching(reservation)) {
			return false;
		}

		availableBudget = availableBudget.subtract(reservation);
		return true;
	}

	public  ResourceBudgetManager(final ResourceProfile totalBudget);

}