Source: https://www.cs.ubc.ca/labs/edapt/papers/findlater2008.pdf