         (cons (dissoc file-struct :dir-ls) (specify-files (file-struct :dir-ls)))
         file-struct))
 
-(defn directory-recursion
-    [file-structs]
-    (map directory-consolidate file-structs))
-
 (defn specify-files 
     "Given a list of file names (presumably all in the same folder) goes and performs
     all the steps needed to narrow down which files we want to actually use for this

          new-seq (cons file-struct base-name-seq)]
        (assoc file-map base-name new-seq)))

(defn group-by-basename
    "Goes through file structs and groups them into a map by basename
    { <base-name> <list of structs> }"
    [file-structs]
    (reduce add-to-basename-group {} file-structs))

(defn narrow-group
    "Given a list of file-structs, returns the struct with the most specific
    specifier"

    Returns a list of file-structs"
    [file-list]
    (->> file-list
         (map explode-file)                 ; - Explode the files into their file-struct's
         (remove #(empty? (% :base-name)))  ; - Remove ones with empty base-names (shouldn't really happen)
         (reduce add-to-basename-group {})  ; - Reduce the structs by basename into a grouplist map
         (map #(narrow-group (val %)))      ; - Take all the vals in the grouplist map and narrow them down to a single file-struct
         (map directory-consolidate)))      ; - Call specify files on the file list of all directory structs

(defn specify-tree
    "Since specify-files expects simply a list of files, not a '(dir & files)
