                             (aput multi-get res-ch
                                   (merge res-m {:status :ok}))))
                      nil)]
-       (act multi-get-start actx
-         (aput multi-get-start state-ch
-               [(kvs-ident-check (:kvs-ident m) work-fn) nil]))))
+       (kvs-do actx state-ch m nil
+                   (kvs-checker (:kvs-ident m) work-fn))))
 
    :multi-change
    (fn [actx state-ch m]

                            (aput scan-work res-ch
                                  (merge res-m {:status :ok}))))
                     nil)]
       (act scan-start actx
         (aput scan-start state-ch
               [(kvs-ident-check (:kvs-ident m) work-fn) nil])))))

(def op-handlers
  {:kvs-open
   (fn [actx state-ch m]
     (state-work actx state-ch m
                 #(if-let [name (:name m)]
                    (if-let [kvs (get-in % [:kvss name])]
                      [% {:status :ok :status-info :reopened

        [state {:status :not-found :status-info :no-kvs}])
      [state {:status :invalid :status-info :no-kvs-ident}])))

(defn kvs-do [actx state-ch m done-ch work-fn]
  (act kvs-do actx
       (aput kvs-do state-ch [work-fn done-ch])
       (when done-ch
         (aput kvs-do (:res-ch m)
               (merge m (or (atake kvs-do done-ch)
                            {:status :error :status-info :closed-ch}))))))

(defn make-scan-fn [scan-kind result-key get-entry]
  (fn [actx state-ch m]
