Source: http://www.lingref.com/cpp/acal/35/paper1301.pdf