 (defn header-set-template [v]
   (let [arr (build-template "span" "" "#{")]
     (doseq [x (take MAX_SET_ELEMENTS v)]
-      (.push arr (render-embedded-header-value x) (spacer-template x)))
+      (.push arr (container-value-template x) (spacer-template x)))
     (.pop arr)
     (if (> (count v) MAX_SET_ELEMENTS)
       (.push arr "…"))
     (.push arr "}")
     arr))
 
-(defn render-atomic-template [x]
+(defn generic-template [v]
+  (build-template "span" "" (build-placeholder v) "Object"))
+
+(defn atomic-template [x]
   (cond
     (nil? x) (nil-template x)
     (string? x) (string-template x)

    (fn? x) (fn-template x)
    ))

(defn render-embedded-header-value [x]
  (or (render-atomic-template x)
      (generic-template x)))

(defn render-header-template [x]
  (or (render-atomic-template x)
      (cond
        (nil? x) (nil-template x)
        (keyword? x) (keyword-template x)
        (symbol? x) (symbol-template x)
        (map? x) (header-map-template x)
        (set? x) (header-set-template x)
        (coll? x) (header-collection-template x)
        :else (pr-str x))))

(defn build-header [value]
  (build-template "span" "background-color: #eff" (render-header-template value)))

(defn header-hook [value]
  (if (cljs-value? value)

        v (seq m)]
    (doseq [[k v] (take MAX_MAP_ELEMENTS v)]
      (.push arr
             (container-value-template k) (spacer-template k)
             (container-value-template v) (spacer-template v)))
    (.pop arr)
    (if (> (count v) MAX_MAP_ELEMENTS)
      (.push arr "…"))
