Isn't the loop necessary to make sure that the rules are all met? E.g. <code>siteEndDate</code> needs to happen after <code>startDate</code>, <code>siteStartDate</code>, and <code>endDate</code>. I'm also willing to accept I may be missing something obvious.