 ;;------------------------------------------------------------
 
 (defmulti parse-ns
-  (fn [ns-]
-    (cond
-      (custom-parsed-ns?   ns-) ns-
-      (normally-parsed-ns? ns-) :default-lib
-      (cljs-compiler-namespaces ns-) :default-compiler
-      :else nil)))
-
-(defmethod parse-ns "cljs.core" [ns-]
+  (fn [ns- api]
+    (if (= :custom (get-in namespaces [api ns-]))
+      [ns- api]
+      [:default api])))
+
+(defmethod parse-ns ["cljs.core" :library] [ns- api]
   ;; NOTE: Concatenation order is important here
   ;; so previously defined macros/functions are overwritten
   ;; by subsequent ones.

        extras (map make ["catch" "finally"])]
    (concat parsed extras)))

(defn parse-all
  []
  (let [syntax-parsed (parse-ns "syntax")
        lib-parsed (binding [*cur-api* "library"]
                     (->> cljs-lib-namespaces
                          (mapcat parse-ns)
                          doall
                          add-catch-finally))
        compiler-parsed (binding [*cur-api* "compiler"]
                          (->> cljs-compiler-namespaces
                               (mapcat parse-ns)
                               doall))]
    {:syntax syntax-parsed
     :library lib-parsed
     :compiler compiler-parsed}))


                   (first (keep #(parse-repl-specials % docs) forms)))]
    specials))

(defmethod parse-ns ["syntax" :syntax] [ns- api]
  (binding [*cur-ns* ns-]
    (let [tagged-literals (parse-tagged-literals)
          syntax-items (parse-syntax-forms)
