      )))
 
 (boot/deftask build
-  "assemble, configure, and build app"
+  "Configure and build servlet or service app"
   [k keep bool "keep intermediate .clj and .edn files"
    p prod bool "production build, without reloader"
    s service bool "build a service"

             ;; (boot/by-name [boot-config-edn]))
             boot-config-edn-f (condp = (count boot-config-edn-files)
                                 0 (do (util/info (str "Creating " boot-config-edn "\n"))
                                       ;; this creates a java.io.File
                                       (io/file boot-config-edn))
                                 1 ;; this is a boot.tmpdir.TmpFile
                                 (first boot-config-edn-files)
                                 (throw (Exception. "only one _boot_config.edn file allowed")))
             ;; _ (println "boot-config-edn-f: " boot-config-edn-f)
             boot-config-edn-map (if (instance? boot.tmpdir.TmpFile boot-config-edn-f)
                                   (-> (boot/tmp-file boot-config-edn-f) slurp read-string)
                                   {})]
         ;; (println "boot-config-edn-map: " boot-config-edn-map)
         (if (:appstats boot-config-edn-map)
           fileset
           (do
             (let [appstats-fs (->> (boot/input-files fileset)
                                    (boot/by-name [appstats-edn]))]
               (if (= (count appstats-fs) 0)

        ]
    (comp
     (boot/with-pre-wrap [fileset]
       (let [
             ;; webapp-edn-files (->> (boot/fileset-diff @prev-pre fileset)
             ;;                       boot/input-files
             ;;                       (boot/by-name [webapp-edn]))
             ;; webapp-edn-f (condp = (count webapp-edn-files)
             ;;                0 nil
             ;;                1 (first webapp-edn-files)
             ;;                (throw (Exception. "only one webapp.edn file allowed")))
             ;; webapp-edn-map (if webapp-edn-f (-> (boot/tmp-file webapp-edn-f) slurp read-string) {})
             boot-config-edn-files (->> (boot/fileset-diff @prev-pre fileset)
                                    boot/input-files
                                    (boot/by-re [(re-pattern (str boot-config-edn "$"))]))
                                    ;; (boot/by-name [boot-config-edn]))
             boot-config-edn-f (condp = (count boot-config-edn-files)
                             0 (do (util/info (str "Creating " boot-config-edn "\n"))
                                   (io/file boot-config-edn)) ;; this creates a java.io.File
                             1 (first boot-config-edn-files)  ;; this is a boot.tmpdir.TmpFile
                             (throw (Exception.
                                     (str "only one _boot_config.edn file allowed, found "
                                          (count boot-config-edn-files)))))
             boot-config-edn-map (if (instance? boot.tmpdir.TmpFile boot-config-edn-f)
                                   (-> (boot/tmp-file boot-config-edn-f) slurp read-string)
                                   {})
             ;; boot-config-edn-map (merge boot-config-edn-map webapp-edn-map)
             ]
         (println "boot-config-edn-map: " boot-config-edn-map)

         (if (:reloader boot-config-edn-map)
           fileset
           (do
             ;; (add-reloader! reloader-impl-ns urls in-file out-file)
             ;; step 1: create config map for reloader, inject into master config file
             (let [urls (flatten (concat (map #(% :urls) (:servlets boot-config-edn-map))))
                   m (-> boot-config-edn-map (assoc-in [:reloader]
                                                 {:ns reloader-impl-ns
