       (let [
             input (-> (read-line) .trim .toLowerCase)
             val (try (Double/parseDouble input) (catch NumberFormatException e))
+            starts-with? (fn [a b] (.startsWith b a))
             ]
         (if val
           (.setGain player (/ val 9))

            "cancel" (do (println "cancelling save...") (reset! recorder/save? false))
            "size" (-> recorder/os .size println)
            "ls" (ls)
            (if (.startsWith input "open")
              (open input player)
              (println "command not recognized"))
            ))))))

  (list* "open" (map #(.getPath %) (get-songs))))

(defn get-song [prefix]
  (some #(if (.startsWith (.toLowerCase (.getName %)) prefix) %) (get-songs)))

(defn open [command player]
  (let [
