                                         libs))))
                 {} args)]
     (set! *cljs-ns* name)
-    (require 'cljs.core)
+    (clojure.core/require 'cljs.core)
     (doseq [nsym (vals requires-macros)]
-      (require nsym))
+      (clojure.core/require nsym))
     (swap! namespaces #(-> %
                            (assoc-in [name :name] name)
                            (assoc-in [name :requires] requires)

        (cond
         lb (:name lb)
         
         ;;todo - resolve ns aliases when we have them
         (namespace sym)
         (symbol (str (namespace sym) "." (munge (name sym))))

         (.contains s ".")
         (munge (let [idx (.indexOf s ".")

  [{:keys [name requires requires-macros env]}]
  (println (str "goog.provide('" name "');"))
  (when-not (= name 'cljs.core)
    (println (str "goog.require('cljs.core');")))
  (doseq [lib (vals requires)]
    (println (str "goog.require('" lib "');"))))

(defmethod emit :deftype*
  [{:keys [t fields]}]
