 (defnail NamespaceInfo
   "Usage: ng de.kotka.vimclojure.nails.NamespaceInfo"
   []
-  (println (clj->vim (map #(-> % symbol find-ns ns-info)
-                          (line-seq (BufferedReader. *in*))))))
+  (println (util/clj->vim (map #(-> % symbol find-ns backend/ns-info)
+                               (line-seq (BufferedReader. *in*))))))
 
 (defnail MacroExpand
   "Usage: ng de.kotka.vimclojure.nails.MacroExpand [options]"
   [[nspace n "Lookup the symbols in the given namespace." "user"]
    [one?   o "Expand only the first macro."]]
-  (let [nspace (resolve-and-load-namespace nspace)
+  (let [nspace (util/resolve-and-load-namespace nspace)
         expand (if one
                  #(macroexpand-1 %)
                  #(macroexpand %))]
     (binding [*ns* nspace]
-      (doseq [expr (stream->seq *in*)]
-        (-> expr expand pretty-print-code)))))
+      (doseq [expr (util/stream->seq *in*)]
+        (-> expr expand util/pretty-print-code)))))
 
 (defnail Repl
   "Usage: ng de.kotka.vimclojure.nails.Repl [options]"

                           LineNumberingPushbackReader.)
                 ~'*out* (-> ~'nailContext .out OutputStreamWriter.)
                 ~'*err* (-> ~'nailContext .err PrintWriter.)]
         (with-command-line (.getArgs ~'nailContext)
           ~usage
           ~arguments
           ~@body)

    (-> (hash-map "Func"     (map first fns)
                  "Macro"    (map first macros)
                  "Variable" (map first vars))
      util/clj->vim
      println)))

(defnail NamespaceOfFile
  "Usage: ng de.kotka.vimclojure.nails.NamespaceOfFile"
  []
  (let [of-interest '#{in-ns ns clojure.core/in-ns clojure.core/ns}
        in-seq      (util/stream->seq *in*)
        candidate   (first
                      (drop-while #(or (not (instance? clojure.lang.ISeq %))
                                       (not (contains? of-interest (first %))))
