disclaimer overlook my horrible clojure style