   (str
     (when-let [title (get-in node [::node/data :data/title])]
       (str title \newline))
-    (get-in node [::node/data :data/type] "???")
-    \newline
+    ;(get-in node [::node/data :data/type] "???") \newline
     (some-> node ::node/id multihash/base58 (subs 0 8))
     (when-let [size (::node/size node)]
       (format " (%d B)" size))))

  function will be called with the source node `:data/type` and a link, and
  should determine whether to follow the link or not. Returns a map of
  multihash ids to loaded node maps."
  [store root follow?]
  ; TODO: would be cool to save the path
  (loop [visited (hash-map (::node/id root) root)
         pending (enqueue-links (clojure.lang.PersistentQueue/EMPTY) root)]
    (if-let [[source-type link] (peek pending)]
      (if (visited (::link/target link))

        {:shape :house
         :label (node-label node)}
      :merkle-db/table
        ; idea: show short record count
        {:shape :ellipse
         :label (str (node-label node)
                     (when-let [rc (:merkle-db.data/count (::node/data node))]
                       (format "\n%d records" rc)))}
      :merkle-db/patch
        {:shape :hexagon
         :label (str (node-label node)
                     (when-let [changes (:merkle-db.patch/changes (::node/data node))]
                       (format "\n%d changes" (count changes))))}
      :merkle-db/index
        ; idea: show start/end keys
        {:shape :trapezium
         :label (node-label node)}
      :merkle-db/partition
        ; idea: show start/end keys
        ; idea: show short record count
        {:shape :rect
         :label (str (node-label node)
                     (when-let [rc (:merkle-db.data/count (::node/data node))]
                       (format "\n%d records" rc)))}
      :merkle-db/tablet
        {:shape :hexagon
         :label (node-label node)}
