Distributed algorithms (Elsevier, 1996)