Techniques for Simplifying the Design of Distributed Systems. - Gilbert Neiger (1988)