the solution to 4clojure's problem