http://staff.science.uva.nl/~fdevries/ioop.ai/ioop0708/voorbeeldcode/student.sol.man/jhtp7_SSM_12.pdf