     (dotimes [i num-edges]
       (->> (make-strand verts e-length)
            (partition 2 1)
-           (map (fn [[a b]] (connect-to! (verts a) (verts b) signal-sssp 1)))
+           (map (fn [[a b]] (add-edge! g (verts a) (verts b) signal-sssp 1)))
            (doall)))
     nil))
 
 (comment
+  (def g (compute-graph))
+  (def ctx
+    (async-context
+     {:graph     g
+      :bus-size  64
+      :processor eager-vertex-processor}))
   (def a (add-vertex! g {:val 0   ::collect-fn collect-sssp}))
   (def b (add-vertex! g {:val nil ::collect-fn collect-sssp}))
   (def c (add-vertex! g {:val nil ::collect-fn collect-sssp}))
   (def d (add-vertex! g {:val nil ::collect-fn collect-sssp}))
 
-  (connect-to! a b signal-sssp 1)
-  (connect-to! a c signal-sssp 3)
-  (connect-to! b c signal-sssp 1)
-  (connect-to! c d signal-sssp 1)
+  (add-edge! g a b signal-sssp 1)
+  (add-edge! g a c signal-sssp 3)
+  (add-edge! g b c signal-sssp 1)
+  (add-edge! g c d signal-sssp 1)
 
   (prn @(execute! ctx))
 

  (add-vertex! [_ vstate])
  (remove-vertex! [_ v])
  (vertex-for-id [_ id])
  (vertices [_]))

(defprotocol IGraphExecutor
  (execute! [_])

  [bus vertices]
  (run! close! bus)
  (run! close-input! vertices))

(def default-context-opts
  {:collect-thresh 0
   :signal-thresh  0
   :processor      eager-vertex-processor
   :bus-size       16
   :timeout        25
   :max-ops        1e6})

(defn async-context
  [opts]
