A toolkit for building distributed applications