Source: https://www.sfu.ca/~akaraiva/profmax.pdf