                  (with-open [input-stream (FileInputStream. input-file)]
                    (->> (read-source :gnucash input-stream)
                         (transduce
-                          filter-record
-                          process-chunk-record
+                          (comp filter-record
+                                append-record
+                                (partial notify-record progress-chan))
+                          evaluate-output
                           {:output-paths []
                            :verbose (-> opts :options :verbose)
                            :records []

          (xf result record)
          result))))))

(defn- advance-context
  [{:keys [records max-record-count] :as context}]
  (if (>= (count records) max-record-count)
    (process-output context)
    context))

(defn- process-chunk-record
  "Processes a single record for the file chunking process"
  ([result] result)
  ([{:keys [progress-chan] :as context} record]
   (>!! progress-chan [:record record])
   (-> context
       (update-in [:records] #(conj % record))
       advance-context)))

(defn chunk-file
  "Accepts a path to a gnucash file and creates multiple, smaller files

      result)))

(defn- process-output
  "Writes the records to the next output file and resets the record buffer"
  [{:keys [verbose
           records
           output-folder
