   [resolve-ns service-name]
   {:pre  [(string? resolve-ns)
           (string? service-name)]
-   :post [(satisfies? s/ServiceDefinition %)]}
+   :post [(satisfies? services/ServiceDefinition %)]}
   (try (require (symbol resolve-ns))
        (catch FileNotFoundException e
          (throw (IllegalArgumentException.
                   (str "Unable to load service: " resolve-ns "/" service-name)
                   e))))
   (if-let [service-def (ns-resolve (symbol resolve-ns) (symbol service-name))]
-    (i/validate-service-graph! (var-get service-def))
+    (internal/validate-service-graph! (var-get service-def))
     (throw (IllegalArgumentException.
              (str "Unable to load service: " resolve-ns "/" service-name)))))
 

  that is the result of merging the graphs of all of the services specified in
  the configuration."
  [config]
  {:pre  [(satisfies? IOFactory config)]
   :post [(sequential? %)
          (every? #(satisfies? s/ServiceDefinition %) %)]}
  (let [lines (line-seq (reader config))]
    (when (empty? lines) (throw (Exception. "Empty bootstrap config file")))
    (for [line (map remove-comments lines)
          :when (not (empty? line))]

  [cli-data]
  {:pre  [(map? cli-data)]
   :post [(or (nil? %)
              (satisfies? io/IOFactory %))]}
  (when (contains? cli-data :bootstrap-config)
    (when-let [config-path (cli-data :bootstrap-config)]
      (let [config-file (get-config-source config-path)]
