 (defun lusty-select-entry ()
   "Select the highlighted entry in *Lusty-Matches*"
   (interactive)
-  (ecase lusty--active-mode
-    ;; STEVE basically at TAB we should set minibuffer to be name of the
-    ;;       selected entry, then lusty-update-matches-buffer
-    (:file-explorer (lusty-file-explorer-minibuffer-tab-complete))
-    (:buffer-explorer (lusty-buffer-explorer-minibuffer-tab-complete))))
-
-; STEVE rename?
-(defun lusty-file-explorer-minibuffer-tab-complete ()
-  ;; STEVE remove this function?
+  ; STEVE what if lusty--previous-printed-matches is nil?
+  (assert lusty--previous-printed-matches) ; STEVE remove
+  (let ((selected-entry (nth lusty--highlighted-index
+                             lusty--previous-printed-matches)))
+    (ecase lusty--active-mode
+      (:file-explorer (lusty--file-explorer-select selected-entry))
+      (:buffer-explorer (lusty--buffer-explorer-select selected-entry)))))
+
+(defun lusty--file-explorer-select (entry)
   (let* ((path (minibuffer-contents-no-properties))
          (var-completed-path (lusty-complete-env-variable path)))
     (if var-completed-path

           (string= (directory-file-name str) "."))
         (ignored-p (name)
           (some (lambda (ext) (string-match ext name))
                 lusty--completion-ignored-extensions)))
    (remove-if 'ignored-p
               (if (hidden-p file-portion)
                   (remove-if 'pwd-p files)

      (let* ((dir (file-name-directory path))
             (file-portion (file-name-nondirectory path))
             (normalized-dir (lusty-normalize-dir dir)))
        ;; Clean up the path when selecting in case we recurse
        (lusty-set-minibuffer-text normalized-dir entry)
        (if (file-directory-p (concat normalized-dir entry))
            (lusty-update-matches-buffer)
          (minibuffer-complete-and-exit))))))

(defun lusty--buffer-explorer-select (entry)
  (lusty-set-minibuffer-text entry)
  (minibuffer-complete-and-exit))

;; This may seem overkill, but it's the only way I've found to update the
;; matches list for every edit to the minibuffer.  Wrapping the keymap can't
