     (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))
 

(defprotocol IVertex
  (connect-to! [_ v sig-fn edge-opts])
  (disconnect-vertex! [_ v])
  (close-input! [_])
  (input-channel [_])
  (collect! [_])
  (score-collect [_])
  (signal! [_])

    [_ v sig-fn opts]
    (debug (format "%d connecting to %d (%s)" id (:id v) (pr-str opts)))
    (swap! outs assoc v [sig-fn opts]) _)
  (connected-vertices
    [_] (keys @outs))
  (disconnect-vertex!
    [_ v]
    (debug (format "%d disconnecting from %d" id (:id v)))
    (swap! outs dissoc v)
    _)
  (disconnect-all!
    [_] (run! #(disconnect-vertex! _ %) (keys @outs)) _)
  (close-input! [_]
    (if @in
      (do #_(debug (str id " closing..."))
