See the blog post
Function order has been rearranged here and there to appease Clojure's single-pass compiler.