       ; In case anything happens, run the error-callback handler. Agent error handlers do not work here, since
       ; they don't give us access to the votes.
       (catch Exception e
-        (error-callback vote-batches start-time (:opts' conv) e)
+        (error-callback votes start-time (:opts' conv) e)
         ; Wait a second before returning the origin, unmodified conv, to throttle retries
         (Thread/sleep 1000)
         conv))))

        (let [first-msg (<! msgbox) ; do this so we park efficiently
              msgs      (take-all! msgbox)
              msgs      (concat [first-msg] msgs)
              {:keys [votes moderation]}
                        (group-by first msgs)
              vote-batches (map second votes)]
          (swap! conv update-fn vote-batches err-handler))
        (catch Exception e
          (log/error "Excpetion not handler by err-handler:" e)
          (.printStackTrace e)))

  (add-watch (:conv conv-actor) key f))


(defn split-batches
  [messages]
  (->> messages
       (group-by first)
       (pc/map-vals
         (fn [[_ batches]]
           (->> batches
                (map second)
                (flatten))))))


(defn new-conv-actor [init-fn & opts]
  (let [msgbox (chan Long/MAX_VALUE) ; we want this to be as big as possible, since backpressure doesn't really work
        conv (atom (init-fn)) ; keep track of conv state in atom so it can be dereffed
