 
 
 (comment
-  (disconnect! a)
-  (disconnect! b)
-  (disconnect! c)
-  (disconnect! d)
+  (close-input! a)
+  (close-input! b)
+  (close-input! c)
+  (close-input! d)
   )

            (let [signal (f state opts)]
              (if-not (nil? signal)
                (>! (input-channel v) [id signal])
                (warn (format "signal fn for %d return nil, skipping..." (:id v)))))
            (recur (next outs)))))
      _))
  (receive-signal
    [_ src sig]
    (swap! state
           (fn [state]
             (-> state
                 (update ::uncollected conj sig)
                 (assoc-in [::signal-map src] sig))))
    _))

#?(:clj

   {:id             id
    :state          (atom (merge default-vertex-state state))
    :last-sig-state (atom nil)
    :in             (atom nil)
    :outs           (atom {})}))

(defrecord Graph [state]
