            [java.awt.event MouseEvent]
            [java.io File])
   (:use [conexp.base :only (defvar, defmacro-, first-non-nil, illegal-argument)])
-  (:use seesaw.core))
+  (:use seesaw.core
+        [seesaw.util :only (root-cause)]))
 
 
 ;;; Swing handmade concurrency

     (catch Exception e#
       (javax.swing.JOptionPane/showMessageDialog
        ~frame
        (scrollable (text :text (apply str (get-root-cause e#) "\n"
                                       (interpose "\n" (.getStackTrace e#)))
                          :multi-line? true))
        ~title

    `(defn ~name ~doc ~params (do-swing-return ~@body))))

;;; Helper functions

(defmacro with-swing-error-msg
  "Runs given code and catches any thrown exception, which is then
