       
       :ul { :class :c-exception-report } [
         (template-for [m (expand-exception-stack (-> env :cascade :exception))]
-          :li [ (render-exception-map m) ])
+          :li { :class (if (nil? (m :stack-trace)) :c-omitted) } [ (render-exception-map m) ])
       ]
       ;; TODO request details, session details? etc.
     ]

(defn render-exception-map
  "Renders an individual exception map. "
  [{:keys [class-name message properties stack-trace]}]
  (template 
    :span { :class :c-exception-class-name } [ class-name ]
    (if-not (nil? message)
      (template :div { :class :c-exception-message } [ message ]))
    (when-not (and (nil? properties) (nil? stack-trace))
      (template 
        :dl [
          (template-for [k (sort (keys properties))]
            :dt [ (name k)]
            ;; TODO: Expand here to do more than just .toString!
            :dd [ (.toString (get properties k)) ])
          (when-not (nil? stack-trace)
            (template
              :dt [ "Stack Trace" ]
              :ul { :class :c-stack-trace } [
                (template-for [frame stack-trace]
                  :li {:class (frame :class-name) } [ (frame :method-name) ])
              ]))
        ]))))
(defn include-js-library
  [env path]
  (template       

  { 
  	:element element
  	:method-name
	  	(let [file-name (.getFileName element)
	  			  line-number (.getLineNumber element)
	  			  class-name (.getClassName element)
	  			  method-name (.getMethodName element)]
	  		(template
	  		  (or
	  		  	(convert-clojure-frame class-name method-name)
	  		  	(str class-name "." method-name))
	  		  " "	
	  		  (cond
	  		    (.isNativeMethod element) (template :em [ "(Native Method)" ])
	  		    (and (not (nil? file-name)) (< 0 line-number)) (str "(" file-name ":" line-number ")")
	  		    (not (nil? file-name)) (str "(" file-name ")") 
	  		    true (template :em [ "(Unknown Source)" ]))))
	  	:class-name (class-name-for-element element)
  })  
  
(defn transform-stack-trace
