http://bblum.net/thesis-draft.pdf