Source: http://publications.csail.mit.edu/lcs/pubs/pdf/999.pdf