Added clojure protocols