add pure clojure impl