public void loadBoardConfig() throws BadConfigFormatException, FileNotFoundException {
		// Create a file reader and wrap it in a scanner to read the file
		FileReader boardConfigFile = new FileReader(boardConfigFilename);
		Scanner fileScanner = new Scanner(boardConfigFile);
		
		// Initialize variables
		String[] cellInitials;
		int noColumns=0;
		int rowCounter=0;
		int currentColumn=0;
		boolean firstIteration = true;
		String tmp;
		
		// While there is something in the file, process it.
		while(fileScanner.hasNext()) {
			currentColumn=0;
			tmp = fileScanner.nextLine();
			
			// Split up the line, greedily splitting around whitespace and commas, and place it into an array
			cellInitials = tmp.split("[\\,\\s]+");
			
			// If this is the first iteration, initialize noColumns.
			if(firstIteration) {
				noColumns = cellInitials.length;
				firstIteration = false;
				
				// Otherwise, check to make sure that each row has the same number of columns as the first
			}  else if(noColumns != cellInitials.length) { 
				throw new BadConfigFormatException(boardConfigFilename, "The number of columns is not consistent across rows.");
			}
			
			
			// Go through the tokenized string and add new cells based on the character.
			for(String i : cellInitials)  {
				
				// Check to make sure that the room exists
				if(!rooms.containsKey(i.charAt(0))) {
					throw new BadConfigFormatException(boardConfigFilename, "The configuration file contains invalid room types.");
				}
				
				// Add the cell onto the board in sequential order as either a walkway or a room.
				cells.add((i.equals("W") ? new WalkwayCell() : new RoomCell(i, rowCounter, currentColumn)));
				++currentColumn;
			}
			++rowCounter;
		}
		
		// Set the board dimensions
		numColumns = noColumns;
		numRows = rowCounter;
	}