                :else
                (->> structure
                     (r/map next-fn)
-                    (r/filter #(-> % (identical? i/NONE) not))
+                    (r/filter not-NONE?)
                     (into empty-structure))))))
 
 
   #?(:cljs default)
   #?(:cljs
      (all-transform [structure next-fn]
-       ;;TODO: need to handle NONE here
        (let [empty-structure (empty structure)]
          (if (and (list? empty-structure) (not (queue? empty-structure)))
-        ;; this is done to maintain order, otherwise lists get reversed
-           (doall (map next-fn structure))
-           (into empty-structure (map #(next-fn %)) structure))))))
+           (all-transform-list structure next-fn)
+           (into empty-structure
+                 (comp (map next-fn) (filter not-NONE?))
+                 structure))))))
 
 
 

    empty-map
    structure))


(extend-protocol AllTransformProtocol
  nil

  (all-transform [structure next-fn]
    (into []
      (comp (map next-fn)
            (filter not-NONE?))
      structure))

  #?(:clj clojure.lang.PersistentArrayMap)
