using clojure OM and core.async https://github.com/swannodette/om https://github.com/clojure/core.async