This paper describes three low-level services that are useful in structuring the implementation of distributed fault-tolerant protocols. 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. 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 distributed protocols.