utilities for writing distributed systems