This paper describes three low-level services that are useful in structuring the implementation of fault-tolerant group communication services. These low level services are event mapping, vector timestamp, and event history. The event-mapping service provides support for creating and manipulating lists of related distributed events, the vector-timestamp service allows servers to infer precedence relations among distributed events, and the event-history service enables one to record, access, and manipulate distributed events that are causally related. In our experience, we have found that these low-level services are simple to use and general enough to simplify the design and implementation of many fault-tolerant group communication services. For each service, we briefly describe its functionality and the set of operations exported by it, outline the algorithms and data structures used to implement it, and give concrete examples of how it is used in implementing some real fault-tolerant group communication services.