private void processDay(HSSFWorkbook workbook, Day day) {
		System.out.println("Processing " + day);
		block = null;
        HSSFSheet sheet = workbook.getSheet(day.name());
        int maxRows = sheet.getPhysicalNumberOfRows();
        int rowIndex = 0;
        HSSFRow row = sheet.getRow(rowIndex++);
        workingDay = new WorkingDay(stringFromCell(row, 0));
        masterDocument.workingDays.add(workingDay);
        boolean firstBlock = true;
        int maxTeamCell = -1;
        
        while (rowIndex < maxRows) {
            row = sheet.getRow(rowIndex);
            if (row != null) {
            	String entry = stringFromCell(row, 0);
            	if (StringUtils.isNotEmpty(entry)) {
                    if (block == null) {
                    	block = DayBlock.fromLabel(stringFromCell(row, 0));
                    	if (firstBlock) {
                    		maxTeamCell = calculateMaximumTeamCell(row);
                        	firstBlock = false;
                    	}
                    } else if (DayBlock.fromLabel(entry) != null) {
                    	block = DayBlock.fromLabel(entry);
                    } else {
                    	if (block == DayBlock.OutdoorDisplays) {
                    		processOutdoorDisplayRow(row, maxTeamCell);
                    	} else if (block == DayBlock.Workshops) {
                    		processWorkshopRow(row, maxTeamCell);
                    	} else if (block == DayBlock.Other) {
                    		processOther(row, maxTeamCell);
                    	}
                    }
            	}
            }
            rowIndex++;
        }
	}