         [:h3 (h (exception-message exception))]
         ]
        ]
-      (write-exception-stack exception)
+      (exception->markup exception)
 
       [:h3 "Request"]
 

      (-> exception .getClass .getName)))

(defprotocol MarkupGeneration
  (to-markup
    [value]
    "Returns HTML markup representing the value."))

          [:div.filtered java-name])
        java-name)
      ]
     [:td.source-location file]
     [:td (or line "")]
     ]))

(defn- single-exception->markup
  "Given an analyzed exception, generate markup for it."
  [{^Throwable e :exception
    :keys        [class-name message properties root]}]
  (html
    [:div.panel.panel-default
     [:div.panel-heading
      [:h3.panel-title class-name]
      ]
     [:div.panel-body
      [:h4 message]
      ;; TODO: sorting
      (when-not (empty? properties)
        [:dl
