 
       (config! ns-menu :items ["Load" "Trace"])
 
-      (config! vars-menu :items ["Trace" "Unmap"])
+      (config! vars-menu :items ["Trace" "Unmap" :separator vars-categorized-cb])
 
       
-      (config! auto-refresh-browser-cb :listen [:action 
-        (fn [e] (if (config auto-refresh-browser-cb :selected?) (.start auto-refresh-browser-timer) (.stop auto-refresh-browser-timer)))] :selected? false)
+      (config! auto-refresh-browser-cb
+        :listen [:action (fn [e] (if (config auto-refresh-browser-cb :selected?) 
+                                   (.start auto-refresh-browser-timer) 
+                                   (.stop auto-refresh-browser-timer)))]
+        :selected? false)
         
+      (config! vars-categorized-cb 
+         :listen [:action (fn [e] (swap! group-vars-by-object-type-atom (fn [_] (config vars-categorized-cb :selected?))))]
+        :selected? false)
+      
       (config! color-coding-cb :selected? true)
 
       (config! font-Monospaced-rb :listen [:action (fn [e] (set-font-handler! root "Monospaced"))] :selected? true)

            {:already-filtered false :string-seq []}))))
      (b/transform regx-tf-filter (id :vars-filter-tf))
      (b/transform (fn [symbol-str-seq]
        (if @group-vars-by-object-type
          (let [n-s (selection (id :ns-lb))
                n (and n-s (find-ns (symbol n-s)))
                v (selection (id :vars-cbx))
                fqns? (#{"all-publics" "search-all-docs"} v)]
            (group-by-object-type symbol-str-seq fqns? n-s))
          symbol-str-seq)))
      (b/filter (fn [l]  ;; only refresh if the list really has changed
        (if (= l (seesaw.meta/get-meta root :last-vars-lb))
          false

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