             [cbfg.world.base]
             [cbfg.world.net]))
 
-(defn state-loop [actx name loop-fn initial-state]
-  (let [req-ch (achan actx)]
+(defn state-loop [actx name loop-fn initial-state & {:keys [req-ch]}]
+  (let [req-ch (or req-ch (achan actx))]
     (act-loop state-loop actx [name name state initial-state]
               (when-let [m (atake state-loop req-ch)]
                 (when-let [[state-next res] (loop-fn state-loop state m)]

    (do (msg-put actx :server-state-ch (merge m lane-state))
        [lane-state nil])))

; --------------------------------------------

(defn rq-authenticate [actx m]

        lane-buf-size 20
        make-lane (fn [actx lane-name lane-out-ch]
                    (let [lane-in-ch (achan-buf actx lane-buf-size)
                          lane-state-ch (lane-state-loop actx server-state-ch)
                          lane-state-cb (fn [is-req m lane-ext-state]
                                          (if is-req
                                            (if m
