The protocol starts by the invocation of operation dtmcast() on an initiator object, passing it a message m and a set of protocol object references destSet. This invocation results in a reliable multicast of m to the set of participants objects. When message m reaches some participant, the protocol triggers operation dtmReceive(), passing m as argument. The participant object then computes a reply and returns it. Eventually, operation dtmInterpret() is triggered by the protocol on each non-faulty participant object, taking replySet, a subset of the participants' replies, as argument. The protocol insures that all correct participant objects get the same subset of replies, i.e., a consensus has been reached on that set.