         rules (:rules dsl-expression)
         output-sym (if (.endsWith output-type *incremental-indicator-suffix*)
                      'output)
-        let-body-vec (condp (fn [^String v ^String s] (.startsWith s v)) output-type
-                       "java-map" (create-let-body-vec-java-map-out rules output-sym 0)
-                       "clj-map" (create-let-body-vec-clj-map-out rules output-sym 0)
-                       "csv-str" (create-let-body-vec-csv-str-out rules output-sym 0)
-                       "json-str" (create-let-body-vec-json-str-out rules output-sym 0)
-                       (do
-                         (println "Unknown output type:" output-type)
-                         (println "Defaulting to :java-map as output type.")
-                         (create-let-body-vec-java-map-out rules output-sym 0)))
+;        let-body-vec (condp (fn [^String v ^String s] (.startsWith s v)) output-type
+;                       "java-map" (create-let-body-vec-java-map-out rules output-sym 0)
+;                       "clj-map" (create-let-body-vec-clj-map-out rules output-sym 0)
+;                       "csv-str" (create-let-body-vec-csv-str-out rules output-sym 0)
+;                       "json-str" (create-let-body-vec-json-str-out rules output-sym 0)
+;                       (do
+;                         (println "Unknown output type:" output-type)
+;                         (println "Defaulting to :java-map as output type.")
+;                         (create-let-body-vec-java-map-out rules output-sym 0)))
+        let-body-creation-fn (condp (fn [^String v ^String s] (.startsWith s v)) output-type
+                               "java-map" create-let-body-vec-java-map-out
+                               "clj-map" create-let-body-vec-clj-map-out
+                               "csv-str" create-let-body-vec-csv-str-out
+                               "json-str" create-let-body-vec-json-str-out
+                               (do
+                                 (println "Unknown output type:" output-type)
+                                 (println "Defaulting to :java-map as output type.")
+                                 create-let-body-vec-java-map-out))
 ;        _ (println "Created data processing function vector from DSL:" fn-body-vec)
-        fn-body (create-let-expression input-sym rules let-body-vec)
+        fn-body (create-let-expression input-sym rules let-body-creation-fn output-sym 0)
 ;        _ (println "Created data processing function body:" fn-body)
         _ (pprint fn-body)
         _ (println "")

        [] data-processing-definition))))

(defn- create-bindings-vector
  [input rules nesting-level]
  (reduce
    (fn [v rule]
      (let [rule-name (first rule)

                                                  (create-bindings-vector
                                                    input
                                                    rule-expression
                                                    body-creation-fn
                                                    output
                                                    (inc nesting-level))))
          :default (println "Binding: unknown element for rule:" (str rule)))))
    []
    rules))

(defn- create-let-expression
  [input rules body-creation-fn output nesting-level]
  `(let
    ~(create-bindings-vector input rules body-creation-fn output nesting-level)
    ~(reverse (into '() (body-creation-fn rules output nesting-level)))))

(defn- create-let-body-vec-java-map-out
  [rules output nesting-level]
