                 true
                 false)))
             (b/property (id :ns-require-btn) :enabled?))
-        (b/bind
-          (b/transform (fn [ns]
-            (if (and ns (find-ns (symbol ns)))
-              (fqname ns)
-              "")))
-          (b/tee
-            (b/property (id :doc-tf) :text)))))
+          (b/bind
+            (b/transform (fn [ns-str]
+              (if (and ns-str (find-ns (symbol ns-str)))
+                true
+                false)))
+            (b/property (id :ns-trace-btn-action) :enabled?))
+          (b/bind
+            (b/transform (fn [ns-str]
+              (if (and ns-str (find-ns (symbol ns-str)))
+                true
+                false)))
+            (b/property (id :ns-untrace-btn-action) :enabled?))
+          (b/bind
+            (b/transform (fn [ns]
+              (if (and ns (find-ns (symbol ns)))
+                (fqname ns)
+                "")))
+            (b/property (id :doc-tf) :text))))
     ;; require-btn pressed =>
     ;; (require ns), update (un-)loaded atoms, select loaded, select ns.
     (b/bind

                               (.start (seesaw.meta/get-meta root :auto-refresh-browser-timer))
                               (.stop (seesaw.meta/get-meta root :auto-refresh-browser-timer)))))))


;; Init functions called during construction of a frame with its widget hierarchy


      (config! ns-lb-popup :items [(id :new-browser-action) :separator (id :copy-fqn-action) 
                                    (id :fqn-from-clipboard-action) (id :fqn-from-selection-action)
                                    (id :open-url-from-selection-action) :separator
                                    "Load" :separator 
                                    (id :ns-trace-btn-action) (id :ns-untrace-btn-action) 
                                    ;;:separator auto-refresh-browser-cb
                                    ])
                                    
