blog post: open for extension?
more intro to clojure stuff