   #?(:cljs
      (all-transform [structure next-fn]
        (let [empty-structure (empty structure)]
-         (if (and (list? empty-structure) (not (queue? empty-structure)))
+         (cond
+           (and (list? empty-structure) (not (queue? empty-structure)))
            (all-transform-list structure next-fn)
+
+           (map? structure)
+           (reduce-kv
+             (fn [m k v]
+               (let [newkv (next-fn [k v])]
+                 (if (void-transformed-kv-pair? newkv)
+                  m
+                  (assoc m (nth newkv 0) (nth newkv 1)))))
+                  empty-structure
+                  structure)
+
+           :else
            (into empty-structure
                  (comp (map next-fn) (filter not-NONE?))
                  structure))))))

      (reduce-kv
        (fn [m k v]
          (let [newkv (next-fn [k v])]
            (if (identical? newkv i/NONE)
              m
              (assoc! m (nth newkv 0) (nth newkv 1)))))


             (let [k (.next k-it)
                   v (.next v-it)
                   newkv (next-fn [k v])]
               (if (void-transformed-kv-pair? newkv)
                (do
                  (i/update-cell! none-cell inc)
                  (recur (+ i 2) j))
