              after
              state
              add-all?
+             disable-unload
+             disable-load
              refresher]
       :as closed-settings
       :or
       {source-dirs ["src"]}}]
-  (let [refresher (atom refresher)]
+  (let [refresher (atom refresher)
+        tracker (atom (track/tracker))
+        disable-unload (atom (into #{} disable-unload))
+        disable-load (atom (into #{'cljs.core
+                                   'clojure.browser.repl
+                                   'clojure.browser.net}
+                                 disable-load))]
     {'refresh
      (wrap (fn [repl-env analyzer-env [_ & opts] repl-opts]
              (let [{:keys [source-dirs

                           state
                           add-all?] :as passed-settings} (apply hash-map opts)]
               (if-let [r @refresher]
                 (refresh* @refresher
                           (merge closed-settings
                                  passed-settings
                                  {:repl-env repl-env
                                   :analyzer-env analyzer-env
                                   :repl-opts repl-opts}))
                 (throw (ex-info "tire-iron not initialized"
                                 {}))))))

     'init
     (wrap (fn [repl-env analyzer-env _ repl-opts]

            [cljs.env :as env]
            [cljs.repl :as repl]
            [clojure.string :as str]))

(defprotocol IRefresh
  (-initialize [this opts])
