   "Returns a new browser root frame with an embedded browser form.
   Add new frame to atom-list browser-root-frms"
   []
-  (let [root (frame :title "Clojure Namespace Browser")
-        b-form (identify (clj_ns_browser.BrowserForm.))]
-    (config! root :content b-form)
-    (init-before-bind root)
-    (bind-all root)
-    (init-after-bind root)
-    (swap! browser-root-frms (fn [a] (conj @browser-root-frms root)))
-    (refresh-clj-ns-browser root)
-    root))
+  (invoke-soon
+    (let [root (frame :title "Clojure Namespace Browser")
+          b-form (identify (clj_ns_browser.BrowserForm.))]
+      (config! root :content b-form)
+      (init-before-bind root)
+      (bind-all root)
+      (init-after-bind root)
+      (swap! browser-root-frms (fn [a] (conj @browser-root-frms root)))
+      (refresh-clj-ns-browser root)
+      root)))
 
 
 (defn get-clj-ns-browser

                vars-header-lbl vars-lb]}
          (group-by-id root)
        {:keys [ns-require-btn-atom browse-btn-atom edit-btn-atom]}
          (get @instance-atom-map root)]
    ;; # of entries in ns-lb => ns-entries-lbl
    (b/bind
      (b/property ns-lb :model)

(def all-ns-unloaded-atom (atom nil))
(defn ns-loaded [] @all-ns-loaded-atom)
(defn ns-unloaded [] @all-ns-unloaded-atom)
(swap! all-ns-unloaded-atom (fn [& a] (all-ns-unloaded)))
(swap! all-ns-loaded-atom (fn [& a] (all-ns-loaded)))

