Source: http://www.sigada.org/conf/sigada99/Paper16.pdf