public static Collection<Restaurant> parse(String fileName) {
		BufferedReader br = null;
		Map<Integer, Restaurant> restaurantMap = new HashMap<Integer, Restaurant>();
		try {
			String line;
			br = new BufferedReader(new FileReader(fileName));
			while ((line = br.readLine()) != null) {
				String[] values = line.split(TOKEN);
				Integer restaurantId = Integer.parseInt(values[RESTAURANT_ID_INDEX]);
				Restaurant restaraunt;
				if (!restaurantMap.containsKey(restaurantId)) {
					restaurantMap.put(restaurantId, new Restaurant(restaurantId));
				}
				restaraunt = restaurantMap.get(restaurantId);
				float price = Float.parseFloat(values[PRICE_INDEX]);
				// find the set of food items on this line. there should only be one unless this is a value meal
				Set<FoodItem> foodItems = new HashSet<FoodItem>();
				for (int i = FOOD_ITEMS_INDEX; i < values.length; i++) {
					foodItems.add(FoodItem.getInstance(values[i].trim()));
				}
				PricedFoodItem pricedItem = new PricedFoodItem(price, foodItems);
				restaraunt.addItemToMenu(pricedItem);
			}
		}
		catch (FileNotFoundException e) {
			System.out.println("File " + fileName + " not found");
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println("Exception connecting to file " + fileName );
			e.printStackTrace();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return restaurantMap.values(); 
	}