   (evil-next-line)
   (evil-collection-emms-playlist-mode-paste-before))
 
+(defun evil-collection-emms-browser-setup ()
+  ;; TODO: Why doesn't evil-set-initial-state work with emms-browser-mode?
+  (add-hook 'emms-browser-mode-hook 'evil-motion-state)
+
+  (evil-define-key 'motion emms-browser-mode-map
+    ;; playback controls
+    "x" 'emms-pause
+    "X" 'emms-stop
+    "r" 'emms-random
+    "<" 'emms-seek-backward
+    ">" 'emms-seek-forward
+    (kbd "<return>") 'emms-browser-add-tracks
+    (kbd "C-<return>") 'emms-browser-add-tracks-and-play
+
+    ;; volume controls
+    "+" 'emms-volume-raise
+    "=" 'emms-volume-raise
+    "-" 'emms-volume-lower
+
+    "u" 'emms-playlist-mode-undo
+
+    ;; motion
+    "[" 'emms-browser-prev-non-track
+    "]" 'emms-browser-next-non-track
+    "gj" 'emms-browser-prev-non-track
+    "gk" 'emms-browser-next-non-track
+
+    (kbd "<tab>") 'emms-browser-toggle-subitems
+    (kbd "SPC") 'emms-browser-toggle-subitems
+    ;; TODO: Use S-<tab>?
+    "g1" 'emms-browser-collapse-all
+    "g2" 'emms-browser-expand-to-level-2
+    "g3" 'emms-browser-expand-to-level-3
+    "g4" 'emms-browser-expand-to-level-4
+    "g0" 'emms-browser-expand-all
+    "ga" 'emms-browse-by-artist
+    "gA" 'emms-browse-by-album
+    "gb" 'emms-browse-by-genre
+    "gy" 'emms-browse-by-year
+    "gc" 'emms-browse-by-composer
+    "gp" 'emms-browse-by-performer
+
+    "/" 'emms-isearch-buffer ; This shows hidden items during search.
+
+    ;; filter
+    ;; "" 'emms-browser-previous-filter ; TODO: What does this do?
+    ;; "" 'emms-browser-next-filter
+
+    "s" (lookup-key emms-browser-mode-map (kbd "s"))
+    "g" (lookup-key emms-browser-mode-map (kbd "W")) ;; TODO: This overrides other "g-" prefixed keys.
+
+    "C" 'emms-browser-clear-playlist
+    "D" 'emms-browser-delete-files
+    "d" 'emms-browser-view-in-dired
+    "gd" 'emms-playlist-mode-goto-dired-at-point)) ; "d" does the same, keep "gd" for consistency.
+
 (defun evil-collection-emms-setup ()
   "Set up `evil' bindings for `emms'."
-  (advice-add 'emms-browser :after 'evil-collection-emms-browser)
+  (with-eval-after-load 'emms-browser
+    (evil-collection-emms-browser-setup))
   (evil-set-initial-state 'emms-playlist-mode 'motion)
-
-  (with-eval-after-load 'emms-browser
-    (dolist (map (list emms-browser-mode-map emms-playlist-mode-map))
-      (evil-define-key* 'motion map
-                        "+" 'emms-volume-raise
-                        "=" 'emms-volume-raise
-                        "-" 'emms-volume-lower
-                        "u" 'emms-playlist-mode-undo))
-
-    ;; TODO: Why do we need to define emms-browser-mode-map after load and not emms-playlist-mode-map?
-    (evil-define-key 'motion emms-browser-mode-map
-      ;; playback controls
-      "x" 'emms-pause
-      "X" 'emms-stop
-      "r" 'emms-random
-      "<" 'emms-seek-backward
-      ">" 'emms-seek-forward
-      (kbd "<return>") 'emms-browser-add-tracks
-      (kbd "C-<return>") 'emms-browser-add-tracks-and-play
-
-      ;; motion
-      "[" 'emms-browser-prev-non-track
-      "]" 'emms-browser-next-non-track
-      "gj" 'emms-browser-prev-non-track
-      "gk" 'emms-browser-next-non-track
-
-      (kbd "<tab>") 'emms-browser-toggle-subitems
-      (kbd "SPC") 'emms-browser-toggle-subitems
-      ;; TODO: Use S-<tab>?
-      "g1" 'emms-browser-collapse-all
-      "g2" 'emms-browser-expand-to-level-2
-      "g3" 'emms-browser-expand-to-level-3
-      "g4" 'emms-browser-expand-to-level-4
-      "g0" 'emms-browser-expand-all
-      "ga" 'emms-browse-by-artist
-      "gA" 'emms-browse-by-album
-      "gb" 'emms-browse-by-genre
-      "gy" 'emms-browse-by-year
-      "gc" 'emms-browse-by-composer
-      "gp" 'emms-browse-by-performer
-
-      "/" 'emms-isearch-buffer ; This shows hidden items during search.
-
-      ;; filter
-      ;; "" 'emms-browser-previous-filter ; TODO: What does this do?
-      ;; "" 'emms-browser-next-filter
-
-      "s" (lookup-key emms-browser-mode-map (kbd "s"))
-      "g" (lookup-key emms-browser-mode-map (kbd "W")) ;; TODO: This overrides other "g-" prefixed keys.
-
-      "C" 'emms-browser-clear-playlist
-      "D" 'emms-browser-delete-files
-      "d" 'emms-browser-view-in-dired
-      "gd" 'emms-playlist-mode-goto-dired-at-point)) ; "d" does the same, keep "gd" for consistency.
 
   (evil-define-key 'motion emms-playlist-mode-map
     ;; playback controls

;;; - next/previous
;;; - fast-forward/backward

;;; TODO: Add bindings to emms-browser-search-mode-map.

;;; emms-browser does not run any mode hook.  As such the default state is 'normal.
;;; TODO: Report upstream.
(defun evil-collection-emms-browser ()
  "Default `emms-browser' to motion state."
  (evil-motion-state))

(defun evil-collection-emms-playlist-mode-insert-newline-above ()
  "Insert a newline above point."

    "gk" 'emms-previous
    (kbd "<return>") 'emms-playlist-mode-play-smart

    ;; volume controls
    "+" 'emms-volume-raise
    "=" 'emms-volume-raise
    "-" 'emms-volume-lower

    "u" 'emms-playlist-mode-undo

    ;; motion
    "gg" 'emms-playlist-mode-first
    "G" 'emms-playlist-mode-last
    "]" 'emms-playlist-mode-next
    "[" 'emms-playlist-mode-previous

    "D" 'emms-playlist-mode-kill-track ; emms-browser uses "D"
    "C" 'emms-playlist-mode-clear
