final version presented at Atlanta Clojure meetup