Distributed computing : principles and applications (Pearson, 2004)