1. A method of determining an event instance in an event driven communications system, the method comprising the steps of: receiving an event stream, the event stream comprising a plurality of events; retrieving metadata and an event class name for each event of the received event stream; instantiating an event instance for each event of the received event stream based on the retrieved metadata and an event class name; and reading event data of each event of the received event stream into the instantiated event instance, wherein the step of retrieving metadata and an event class name for each event comprises the steps of: retrieving an identifier of each event of the received event stream; retrieving metadata from an event metadata library associated with the retrieved identifier of each event of the received event stream; and retrieving an event class name from an event class library associated with the retrieved identifier of each event of the received event stream.