Source: http://www.cas.mcmaster.ca/~downd/BCMP.pdf