       (if (empty? cwd)
         (trie/build (cons ".." (files cwd)))
         (trie/build (files cwd))))
+    ;; Looking for a valid directory in the current working directory
+    (= :dir args-spec)
+    (let [everything (seq (:files (cwd)))
+          dirs (filter #(= :dir (:type (second %))) everything)
+          names (map first dirs)]
+      (if (empty? (:cwd @(fs-cursor)))
+        (trie/build names)
+        (trie/build (cons ".." names))))
     ;; Looking for a valid command
     (= :cmd args-spec)
     (trie/build (keys (command-map)))

                                          :fn touch-cmd
                                          :args [:alpha]
                                          :help "`touch` creates an empty file."}}}
                   "usr" {:mod #{:r}
                          :type :dir
                          :files {}}}}
    :cwd []

    (apply concat 
           ;; Flattened list of lists of command structures
           (map #(cond
                   ;;; directory
                   (= :dir (:type (second %)))
                   (commands (second %))
                   ;;; executable files
                   (and (= :file (:type (second %)))
                        (contains? (:mod (second %)) :x))
                   [(assoc (second %) :name (first %))]
                   ;;; nothing
                   :default [])
                files))))

