http://www.dna.caltech.edu/courses/cs191/paperscs191/turing.pdf