           (if service
             (comp
              (builtin/pom)
-             (builtin/jar)
-             (target :verbose verbose)
-             #_(builtin/sift :include #{(re-pattern (str mod ".*jar"))})
-             #_(builtin/install))
-            (target :verbose verbose))
+             (builtin/jar))
+            identity)
+          (target :service service :verbose verbose)
+          #_(builtin/sift :include #{(re-pattern (str mod ".*jar"))})
+          #_(builtin/install)
+          #_(target :verbose verbose)
           ;; (builtin/sift :move {#"(^.*)" (str mod "/$1")})
           ;; FIXME: use cache instead?
           ;; (builtin/target :dir #{(str "target/" mod)})
           )))
 
-#_(boot/deftask install
-  "install service jar.  run after build task"
-  [s service bool "build a service"
-   v verbose bool "verbose"]
-  (let [verbose (or verbose false)
-        e (boot/get-env)
-        mod (str (-> e :gae :module :name))]
-    #_(builtin/install )))
-
 (boot/deftask target
   "target, using module name"
   [C no-clean bool "Don't clean target before writing project files"
-   s service bool "service"
+   m monitor bool "monitoring - target service assembly"
+   s service bool "building as service"
    v verbose bool "verbose"]
   (let [mod      (-> (boot/get-env) :gae :module :name)
-        app-dir  (-> (boot/get-env) :gae :module :app-dir)]
+        app-dir  (-> (boot/get-env) :gae :module :app-dir)
+        dir      (if monitor
+                   (str app-dir "/target/" mod)
+                   (if service (str "target/" mod)
+                       "target"))]
     (if service
       (if (not (and mod app-dir))
         (throw (Exception. "For service targets, both :name and :app-dir must be specified in :gae map of build.boot"))))
-    (let [dir (str (if service (str app-dir "/")) "target/" mod)]
-      (println "TARGET DIR:" dir)
-      (builtin/target :dir #{dir}
-                      :no-clean (or no-clean false)))))
+    (println "TARGET DIR: " dir)
+    (builtin/target :dir #{dir}
+                    :no-clean (or no-clean false))))
 
 (boot/deftask cache
   "control cache: retrieve, save, clean"

   s service bool "build a service"
   v verbose bool "verbose"]
  (let [keep (or keep false)
        verbose (or verbose false)
        mod (str (-> (boot/get-env) :gae :module :name))]
    ;; (println "MODULE: " mod)
    (comp (install-sdk)
          (libs :verbose verbose)
          (appstats :verbose verbose)
          (builtin/javac)
          (if prod identity (reloader :keep keep :verbose verbose))
          (filters :keep keep :verbose verbose)
          (servlets :keep keep :verbose verbose)
          (logging :verbose verbose)

          ;; _ (println "ARGS: " args)
          ;; jargs (into-array String (conj jargs "build/exploded-app"))

          target-dir (if service (str (-> (boot/get-env) :gae :module :app-dir)
                                      "/target/"
                                      (-> (boot/get-env) :gae :module :name))
                         "target")

          checkout-vec (-> (boot/get-env) :checkouts)
          cos (map #(assoc (apply hash-map %) :coords [(first %) (second %)]) checkout-vec)
          default-mod (filter #(or (:default %) (not (:module %))) cos)
