       (apply b/funnel
         [(b/selection (id :vars-cbx))
          (b/selection (id :ns-lb))
-         (id :vars-filter-tf)])
+         (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)))

        prev-var (:selected-ns m)
        selected-ns (selection (id :ns-lb))
        selected-var (selection (id :vars-lb))]
    (selection! (id :vars-lb) (selection (id :vars-lb)))
    {:root root :selected-ns selected-ns :selected-var selected-var})
  )

;;seesaw.core/toggle-full-screen! (locks up computer!!! don't use)
;;(seesaw.dev/show-options) and (seesaw.dev/show-events)

    (b/bind
      (apply b/funnel
        [(id :ns-cbx)
         (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))
    ;;
