coded from this tutorial https://github.com/rippinrobr/cljs-intro/tree/part-2