Source: http://educ.jmu.edu/~drakepp/principles/module3/tvm.pdf