public void parseIncidentalExpenses(Form f) throws ParseException
    {
        List<IncidentalExpense> expenses = new ArrayList<IncidentalExpense>();
        Map<String, String> inputData = f.inputData;
        if(inputData.containsKey("NUM_DAYS"))
        {
            int incidentalClaims = Integer.parseInt(inputData.get("NUM_DAYS"));
            for(int i = 1; i <= incidentalClaims; ++i)
            {
                IncidentalExpense expense = new IncidentalExpense();
                expense.day = i;
                expense.date = addToDate(f.departureDate, "yyyyMMdd HHmmss", i);

                if(inputData.containsKey(itemizeString("DAY_INCIDENTAL_CITY", i)))
                {
                    expense.city = inputData.get(itemizeString("DAY_INCIDENTAL_CITY", i));
                }
                else {

                    //TODO: how do we know if just city element is missing
                    //If no city key is present, there is no incidental expense
                    continue;
                }
                if(inputData.containsKey(itemizeString("DAY_INCIDENTAL_COUNTRY", i)))
                {
                    expense.country = inputData.get(itemizeString("DAY_INCIDENTAL_COUNTRY", i)).toLowerCase();
                    //need state field if in usa
                    if(checkAmerica(expense.country))
                    {
                        if(inputData.containsKey(itemizeString("DAY_INCIDENTAL_STATE", i)))
                        {
                            expense.state = inputData.get(itemizeString("DAY_INCIDENTAL_STATE", i)).toLowerCase();
                        }
                        else
                        {
                            throw new ParseException("Missing required field :"+ itemizeString("DAY_INCIDENTAL_STATE", i));
                        }
                    }
                }
                if(inputData.containsKey(itemizeString("DAY_INCIDENTAL_AMOUNT", i)))
                {
                    expense.amount = Float.parseFloat(inputData.get(itemizeString("DAY_INCIDENTAL_AMOUNT", i)));
                }
                else
                {
                    throw new ParseException("Missing required field :"+ itemizeString("DAY_INCIDENTAL_AMOUNT", i));
                }
                if(inputData.containsKey(itemizeString("DAY_INCIDENTAL_CURRENCY", i)))
                {
                    expense.currency = parseCurrency(inputData.get(itemizeString("DAY_INCIDENTAL_CURRENCY", i)));
                }
                else
                {
                    throw new ParseException("Missing required field :"+ itemizeString("DAY_INCIDENTAL_CURRENCY", i));
                }
                if(inputData.containsKey(itemizeString("DAY_INCIDENTAL_JUSTIFICATION", i)))
                {
                    expense.justification = inputData.get(itemizeString("DAY_INCIDENTAL_JUSTIFICATION", i));
                }
                else
                {
                    throw new ParseException("Missing required field :"+ itemizeString("DAY_INCIDENTAL_JUSTIFICATION", i));
                }
                expenses.add(expense);
                parseDestination(f, expense);
            }
        }
        else
        {
            throw new ParseException("Missing required field : NUM_DAYS");
        }

        f.incidentalExpenses = expenses;
    }