Basic functionality is complete

I'm sure a lot of this code is terrible but I'm looking learn about the correct way to do things in Clojure.