 (defn make-smallest-error-function-from-cases
   [train-cases test-cases]
   (fn the-actual-smallest-error-function
-    ([program]
-      (the-actual-smallest-error-function program :train))
-    ([program data-cases] ;; data-cases should be :train or :test
-                          (the-actual-smallest-error-function program data-cases false))
-    ([program data-cases print-outputs]
+    ([individual]
+     (the-actual-smallest-error-function individual :train))
+    ([individual data-cases] ;; data-cases should be :train or :test
+     (the-actual-smallest-error-function individual data-cases false))
+    ([individual data-cases print-outputs]
       (let [behavior (atom '())
             errors (doall
                      (for [[[input1 input2 input3 input4] out-int] (case data-cases
                                                                      :train train-cases
                                                                      :test test-cases
                                                                      [])]
-                       (let [final-state (run-push program
+                       (let [final-state (run-push (:program individual)
                                                    (->> (make-push-state)
                                                      (push-item input4 :input)
                                                      (push-item input3 :input)

   :uniform-mutation-rate 0.01
   :problem-specific-report smallest-report
   :problem-specific-initial-report smallest-initial-report
   :print-behavioral-diversity true
   :report-simplifications 0
   :final-report-simplifications 5000
   :max-error 1

        (println (format "Test Case  %3d | Error: %s" i (str error)))))
    (println ";;------------------------------")
    (println "Outputs of best individual on training cases:")
    (error-function best :train true)
    (println ";;******************************")
    )) ;; To do validation, could have this function return an altered best individual
       ;; with total-error > 0 if it had error of zero on train but not on validation
