      '[[toxi author fabric]
        [fabric type project]
        [toxi type person]])
-    (info :inf-vertices (get-in inf1 [:query :result :id]) (get-in inf1 [:inf :id]))
-    {:g   g
-     :ctx ctx
-     :all all
-     :toxi toxi
-     :types types
-     :knows knows
+    ;;(info :inf-vertices (get-in inf1 [:query :result :id]) (get-in inf1 [:inf :id]))
+    {:g        g
+     :ctx      ctx
+     :all      all
+     :toxi     toxi
+     :types    types
+     :knows    knows
      :projects projects
-     :pq pq
-     :jq jq
+     :pq       pq
+     :jq       jq
      :num-projects num-projects
-     :num-types num-types}))
+     :num-types num-types
+     }))

      (f/signal! pred)
      (f/signal! obj)
      (swap! queries assoc id {:acc acc :result res})
      {:acc acc :result res}))
  (query-result
    [_ id] (when-let [q (@queries id)] @@(:res q)))
  (add-rule!

                 (let [state (:state vertex)
                       a @(get-in @state [::f/signal-map (:id (:qvar-result qa))])
                       b @(get-in @state [::f/signal-map (:id (:qvar-result qb))])]
                   (info :join-sets a b)
                   (swap! state assoc :val (delay (set/join a b)))))
               ::f/score-collect-fn
               score-collect-join})]
    (info :add-join jv :a qa :b qb)
    (f/add-edge! g (:qvar-result qa) jv f/signal-forward nil)
    (f/add-edge! g (:qvar-result qb) jv f/signal-forward nil)
    {:a qa :b qb :qvar-result jv}))

(defn add-join-query!
  [g [a b & more]]
  (reduce
   (fn [acc p]
     (add-join! g acc (add-param-query! g (keyword (gensym)) p)))
   (add-join! g
             (add-param-query! g (keyword (gensym)) a)
             (add-param-query! g (keyword (gensym)) b))
   more))

(defn collect-inference
  [g production]
