   (something-abbreviated? (js->clj template)))
 
 (defn want-value? [value]
-  (cljs-value? value))
+  (or (cljs-value? value)
+      (surrogate? value)))
 
 (defn header-hook [value]
-  (build-header value))
+  (if (surrogate? value)
+    (.-header value)
+    (build-header value)))
 
 (defn has-body-hook [value]
-  (abbreviated? (build-header value)))
+  (if (surrogate? value)
+    true
+    (abbreviated? (build-header value))))
+
+(defn build-surrogate-body [value]
+  (let [target (.-target value)]
+    (template "ol"
+              "list-style-type:none; padding-left:0px; margin-top:0px; margin-bottom:0px; margin-left:12px"
+              (template "li" "margin-left:12px" (reference target (pr-str target))))))
 
 (defn body-hook [value]
-  (build-body value))
+  (if (surrogate? value)
+    (build-surrogate-body value)
+    (build-body value)))
 
 (defn sanitize
   "wraps our hook in try-catch block to prevent leaking of exceptions if something goes wrong"

      (.push arr o))
    arr))

(defn spacer [& _] " ")

(defn nil-template [_]

  (template "span" "color:#C41A16" (str dq value dq)))

(defn fn-template [value]
  (template "span" "color:#f0f" (reference (surrogate value "λ"))))

(defn header-inlined-templates [value renderer max]
  (let [rendered-items (apply concat (interpose [(spacer)] (map renderer (take max value))))]
