   (interactive "<!>")
   (if (and (not bang) (projectile-project-p))
       (projectile-kill-buffers)
-    (mapc 'kill-buffer (buffer-list)))
+    (mapc 'kill-buffer (narf/get-buffers)))
   (delete-other-windows)
   (unless (narf/real-buffer-p)
     (narf/previous-real-buffer)))

                              (string-match-p it (buffer-name buffer))
                            (eq (buffer-local-value 'major-mode buffer) it))
                          narf-unreal-buffers)))
            (or buffer-list (buffer-list))))

;;;###autoload
(defun narf:kill-unreal-buffers ()
  "Kill all buried, unreal buffers in current frame. See `narf-unreal-buffers'"
  (interactive)
  (let* ((real-buffers (narf/get-real-buffers))
         (kill-list (--filter (not (memq it real-buffers)) (narf/get-buried-buffers))))
    (message "Cleaned up %s buffers" (length kill-list))
    (mapc 'kill-buffer kill-list)
    (narf:kill-process-buffers)))

    (narf/previous-real-buffer)))

;;;###autoload
(defun narf/get-all-buffers ()
  "Get all buffers across all workgroups. Depends on
`wg-mess-with-buffer-list'."
  (wg-buffer-list-emacs))

;;;###autoload
(defun narf/get-buffers ()
  "Get all buffers in the current workgroup. Depends on
`wg-mess-with-buffer-list'."
  (buffer-list))

;;;###autoload
(defun narf/get-visible-buffers (&optional buffer-list)
  "Get a list of buffers that are not buried (i.e. visible)"
  (-remove #'get-buffer-window (or buffer-list (narf/get-buffers))))

;;;###autoload
(defun narf/get-buried-buffers (&optional buffer-list)
  "Get a list of buffers that are buried (i.e. not visible)"
  (-filter #'get-buffer-window (or buffer-list (narf/get-buffers))))

;;;###autoload
(defun narf/get-matching-buffers (pattern &optional buffer-list)
  "Get a list of buffers that match the pattern"
  (--filter (string-match-p pattern (buffer-name it))
            (or buffer-list (narf/get-buffers))))

;;;###autoload
(defun narf/get-real-buffers(&optional buffer-list)
