   (let [program (if (map? (:program config))
                   (:program config)
                   (try
-                    (resolve-program (:data-connector config) (evaluate (:program config) config))
+                    (resolve-program (:data-connector config)
+                                     (evaluate (:program config) config))
                     (catch Exception e
                       (die
-                        "The configuration must have a program property, which must resolve to a valid yaml document:"
+                        (str "The configuration must have a program property, "
+                             "which must resolve to a valid yaml document:")
                         (.getMessage e)))))
         config (assoc config :env (evaluate (:env config) config))
         exit (try

              (-> config :node-manager (invoke checkpoint :local) (assert-checkpoint config {})))))
    ))


(defn run-module
  [m c]

    ;; use the built-in FileDataConnector.
    (let [data-connector (if (:data-connector config)
                           (let [dc-ctor (do (-> config :data-connector symbol require)
                                             (-> config
                                               :data-connector
                                               (str "/connector")
                                               symbol
                                               resolve))]
                             (if-not dc-ctor
                               ;; we can't proceed without any way of resolving the
                               ;; location of the program
                               (die
                                 (format
                                   "Constructor for data connector `%s` not found"
                                   (:data-connector config)))
                               (dc-ctor)))
                           (FileDataConnector.))
          effective (let [effective (java.util.Date.
