           (let [{:keys [edge/type edge/hidden]} edge]
             (when (keyword-identical? type :aggregation)
               (st/plans-merge-edge
-                (assoc edge
+                (assoc
+                  (dissoc edge :plans/ui-opts :edge/from :edge/to)
                   :edge/state rollup
                   :edge/hidden (not aggregated?)))
               (if aggregated?

              (println "EDGE BOUND FROM" from-x from-y "TO" to-x to-y)
              (swap! bounds (fn [{:keys [xbounds ybounds]}]
                              {:xbounds (min-max-fn xbounds
                                          [(min from-x to-x) (max from-x to-x)])
                               :ybounds (min-max-fn ybounds
                                          [(min from-y to-y) (max from-y to-y)])}))
              (if hidden
                (st/plans-merge-edge
                  (assoc (dissoc edge :edge/from :edge/to :edge/ui-opts)
                    :edge/hidden false)))
              (st/plans-merge-node (assoc from :node/hidden false))
              (st/plans-merge-node (assoc to :node/hidden false)))))
        (zoom-to-bounds @bounds false)
        ))))


        (doseq [edge edges]
          (if (activity? edge)
            (st/plans-merge-edge
              (assoc (dissoc edge :plan/ui-opts :edge/from :edge/to)
                :edge/state :normal
                :edge/hidden
                (keyword-identical? (:edge/type edge) :aggregation)
