Source: http://herhut.eu/files/herhut-oopsla-2013-preprint.pdf