 Here a brief overview on how the parts fit together.

 Based on the content of the Request,
 Responder Factory finds and runs a Responder.
 The responder uses the Schedule to provide the answers it needs.
 The Schedule has a list of Schedule Events.
 Each ScheuleEvent has one EventGroup and one TimeExpression.
 The EventGroup provides group name.
 The TimeExpression provides details about when it happens.
 TimeExpression will become a Composite (see GOF 'Composite')
 (see also: ecal/doc/recurringCalEvents.pdf by Martin Fowler)
 TimExpression is build by the TEFactory based on a TEScript.
 The TEScript syntax is described in a comment in TEFactory.
 The class TE holds the constants for the script language.

 Domain classes like Day and Week allow the Schedule to give
 meaningful answers to the responder.

 When a Responder wants to turn something into HTML and
 add it to the response, it uses two steps.
 (1) render the parts of the answer into HTML
 using a Renderer.  These parts then get put into a Map.
 (2) it can subclass from ResponderUsingTemplate and call runTemplate.
 Which finds the correct text file for use as a template and
 substitutes the items in the Map.

 All that gets put into the response and your done.

 
 