Set of methods used for transactions:

PUBLISH:
- Publish a calendar entry to one or more users.

REQUEST:
- Used to schedule a calendar entry with other users.
- Require REPLY messages from others.
- Used by Organizers to update status of entries.

REPLY:
- Attendees use this to send information back to Organizers who have sent a
  REQUEST message.

ADD:
- Add one or more instances to an existing entry.

CANCEL:
- Cancel a calendar item.

REFRESH:
- Attendee's use this to get the latest version of an item.

COUNTER:
- Used by an attendee to negotiate a change in a calendar entry.

DECLINE-COUNTER:
- Used by an organizer to decline a COUNTER message.


Transports:

Real-time vs. Store-and-forward?

Entry Status:
- Only the organizer can set the STATUS property
- Attendee's use the "partstat" parameter of the ATTENDEE property to convey
  their personal status.
- Initial value of "partstat" is set to "NEEDS-ACTION" by organizer
- Modifying this state is part of an attendee's REPLY message.

Sequence Property:
- Used to tell manage different versions of an entry
- Has specific rules so look at these

Handling messages should be done in this manner:

1. The primary key for referencing a particular iCalendar component
   is the "UID" property value. To reference an instance of a
   recurring component, the primary key is composed of the "UID" and
   the "RECURRENCE-ID" properties.
2. The secondary key for referencing a component is the "SEQUENCE"
   property value. For components where the "UID" is the same, the
   component with the highest numeric value for the "SEQUENCE"
   property obsoletes all other revisions of the component with
   lower values.
3. "Attendees" send "REPLY" messages to the "Organizer". For
   replies where the "UID" property value is the same, the value of
   the "SEQUENCE" property indicates the revision of the component
   to which the "Attendee" is replying. The reply with the highest
   numeric value for the "SEQUENCE" property obsoletes all other
   replies with lower values.
4. In situations where the "UID" and "SEQUENCE" properties match,
   the "DTSTAMP" property is used as the tie-breaker. The component
   with the latest "DTSTAMP" overrides all others. Similarly, for
   "Attendee" responses where the "UID" property values match and
   the "SEQUENCE" property values match, the response with the
   latest "DTSTAMP" overrides all others.

