     (b/bind
       (apply b/funnel
         [(id :ns-cbx)
-         (id :ns-filter-tf)])
+         (id :ns-filter-tf)
+         ns-lb-refresh-atom])
       (b/transform (fn [o]
         (let [v (selection (id :ns-cbx))]
+          (when (= v "unloaded") (config! (id :doc-tf) :text "")(config! (id :doc-ta) :text ""))
           {:already-filtered false :string-seq ((get ns-cbx-value-fn-map v))})))
       (b/transform regx-tf-filter (id :ns-filter-tf))
+      (b/filter (fn [l]  ;; only refresh if the list really has changed
+        (if (= l (seesaw.meta/get-meta root :last-ns-lb))
+          false
+          (do 
+            (seesaw.meta/put-meta! root :last-ns-lb l)
+            true))))
       (b/notify-soon)
       (b/property (id :ns-lb) :model))
     ;;

                fqns? (#{"all-publics" "search-all-docs"} v)]
            (group-by-object-type symbol-str-seq fqns? n-s))
          symbol-str-seq)))
      (b/notify-soon)
      (b/property (id :vars-lb) :model))
    ;;

      (apply b/funnel
        [(b/selection (id :vars-cbx))
         (b/selection (id :ns-lb))
         (id :vars-filter-tf)
         vars-lb-refresh-atom])
      (b/transform (fn [o]
        (let [n-s (selection (id :ns-lb))
              n (and n-s (find-ns (symbol n-s)))
