See http://swannodette.github.io/2013/11/07/clojurescript-101/