http://www.cs.ucsd.edu/groups/csl/pubs/conf/sosp95.html