A clojure finite state machine library