various utilty functions in clojure