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

                  (recur (next verts))))
              (loop [colls 0 sigs 0]
                (if (<= (+ colls sigs) max-ops)
                  (let [t (timeout max-t)
                        [[evt v ex] port] (alts! (conj bus t))]
                    (if (= port t)
                      (do (stop! _)
                          (execution-result :converged result colls sigs t0))

      (go-loop [outs @outs]
        (let [[v [f opts]] (first outs)]
          (when v
            (let [signal (f _ opts)]
              (if-not (nil? signal)
                (>! (input-channel v) [id signal])
                (warn (format "signal fn for %d returned nil, skipping..." (:id v)))))
