Added hierarchical ClojureScript protocols