            ~@(doall 
                (mapcat 
                  (fn [[flag [f1 f2]]] 
-                   [flag `(if (and ~f2 (= ~t "--file")) 
-                            (bench-file-hash-function (first ~args) ~f2)
-                            (bench-hash-function ~f1))])
+                   [flag `(case ~t
+                            "--file" (bench-file-hash-function (first ~args) ~f2)
+                            "--text" (bench-hash-function (first ~args) ~f1)
+                            (bench-hash-function "Hello, World!" ~f1))])
                  (partition 2 hash-fn-map)))
            (println "Unknown Algorithm: " algorithm#))
-         (catch Exception _# nil)))))
+         (catch NullPointerException e# nil)
+         (catch Exception e#
+           (.printStackTrace e#))))))


;; ## String Hashing

(def ^:const ^String HELLO_WORLD "Hello, World!")

(defmacro bench-hash-function
  [& fs]
  `(do
     ~@(for [f fs]
         `((println "----------------------------------------------------") 
           (println ~(str "Benchmarking: " f)) 
           (println "----------------------------------------------------") 
           (println ~(str "Hashing \"" HELLO_WORLD "\"")) 
           (quick-bench (~f ~HELLO_WORLD)) 
           (println "----------------------------------------------------")))))

;; ## File Hashing

         `((println "----------------------------------------------------") 
           (println ~(str "Benchmarking: " f)) 
           (println "----------------------------------------------------") 
           (println (str "Hashing File: " ~file " (" (~f ~file) ")"))
           (quick-bench (~f ~file)) 
           (println "----------------------------------------------------")))))

