diff --git a/README.md b/README.md
index 1edd35e..3bb8b81 100644
--- a/README.md
+++ b/README.md
@@ -377,7 +377,8 @@ Helm is setup according to this guide: [A Package in a league of its own: Helm](
You can learn Helm usage and key bindings following the guide. C-c h is Prelude's default prefix key for Helm.
If you don't remember any key binding, append C-h after C-c h for a list of key bindings in Helm.
-By default, Helm won't activate these global key bindings, so you can use Helm along with Ido and Prelude's default commands:
+If you love Helm and want to use Helm globally with enhanced `helm-find-files`, `helm-buffer-lists`..., you will have to also add `(require 'prelude-helm-everywhere)`.
+When `prelude-helm-everywhere` is activated, Helm enables these global key bindings:
Key binding | Description
-------------------|----------------------------------------------
@@ -385,24 +386,26 @@ Key binding | Description
M-y | Run [helm-show-kill-ring](http://tuhdo.github.io/helm-intro.html#sec-4), shows the content of `kill-ring`.
C-x b | Run [helm-mini](http://tuhdo.github.io/helm-intro.html#sec-5), an interactive version of `C-x b` with more features.
C-x C-f | Run [helm-find-files](http://tuhdo.github.io/helm-intro.html#sec-6), an interactive version of `find-file` with more features.
-C-h C-f | Run [helm-apropos](http://tuhdo.github.io/helm-intro.html#sec-13), an interactive version of `apropos-command`.
+C-h f | Run [helm-apropos](http://tuhdo.github.io/helm-intro.html#sec-13), an interactive version of `apropos-command`.
C-h r | Run [helm-info-emacs](http://tuhdo.github.io/helm-intro.html#sec-14), an interactive version of `info-emacs-manual`.
C-h C-l | Run `helm-locate-library` that can search for locations of any file loaded into Emacs.
-This key binding won't be activated in `shell-mode`:
+This key binding is activated in `shell-mode`:
Key Binding | Description
-------------------|----------------------------------------------
-M-l | Run `helm-comint-input-ring` that shows `shell` history using Helm interface.
+C-c C-l | Run `helm-comint-input-ring` that shows `shell` history using Helm interface.
-These key bindings won't be activated in `eshell-mode`:
+This key bindings is activated in `eshell-mode`:
Key Binding | Description
-------------------|----------------------------------------------
-M-l | Run `helm-eshell-history` that shows `eshell` history using Helm interface.
+C-c C-l | Run `helm-eshell-history` that shows `eshell` history using Helm interface.
+
+If you prefer Ido in everywhere, you should not add `prelude-helm-everywhere`, so you can use Helm along with Ido and Prelude's default commands.
+
+You can always reactivate Helm with `(prelude-global-helm-global-mode-on)`.
-You can use above key bindings by putting `(prelude-global-helm-global-mode +1)` right after `(require 'prelude-helm)`. If you enable
-these key bindings, you should not enable `prelude-ido`.
#### Key-chords
diff --git a/modules/prelude-helm-everywhere.el b/modules/prelude-helm-everywhere.el
new file mode 100644
index 0000000..27fc2a7
--- /dev/null
+++ b/modules/prelude-helm-everywhere.el
@@ -0,0 +1,64 @@
+;;; prelude-helm-everywhere.el --- Enable Helm everywhere
+;;
+;; Copyright © 2014 Tu, Do Hoang
+;;
+;; Author: Tu, Do Hoang (tuhdo1710@gmail.com)
+;; URL: https://github.com/bbatsov/prelude
+;; Version: 1.0.0
+;; Keywords: convenience
+
+;; This file is not part of GNU Emacs.
+
+;;; Commentary:
+
+;; Enable Helm everywhere with global key bindings to replace common
+;; global bindings and `helm-mode' is activated to replace `completing-read'
+;; with `helm-completing-read-default', so users can use Helm with every prompt.
+
+;;; License:
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 3
+;; of the License, or (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Code:
+(require 'prelude-helm)
+(require 'helm-descbinds)
+
+(global-set-key (kbd "M-x") 'helm-M-x)
+(global-set-key (kbd "M-y") 'helm-show-kill-ring)
+(global-set-key (kbd "C-x b") 'helm-mini)
+(global-set-key (kbd "C-x C-f") 'helm-find-files)
+(global-set-key (kbd "C-h f") 'helm-apropos)
+(global-set-key (kbd "C-h r") 'helm-info-emacs)
+(global-set-key (kbd "C-h C-l") 'helm-locate-library)
+(define-key prelude-mode-map (kbd "C-c f") 'helm-recentf)
+
+(define-key minibuffer-local-map (kbd "C-c C-l") 'helm-minibuffer-history)
+
+;; shell history.
+(define-key shell-mode-map (kbd "C-c C-l") 'helm-comint-input-ring)
+
+;; use helm to list eshell history
+(add-hook 'eshell-mode-hook
+ #'(lambda ()
+ (substitute-key-definition 'eshell-list-history 'helm-eshell-history eshell-mode-map)))
+
+(substitute-key-definition 'find-tag 'helm-etags-select global-map)
+(setq projectile-completion-system 'helm)
+(helm-descbinds-mode)
+(helm-mode 1)
+
+(provide 'prelude-helm-everywhere)
+;; prelude-helm-everywhere.el ends here.
diff --git a/modules/prelude-helm.el b/modules/prelude-helm.el
index 3878331..cbda5ff 100644
--- a/modules/prelude-helm.el
+++ b/modules/prelude-helm.el
@@ -84,59 +84,10 @@
;;; Save current position to mark ring
(add-hook 'helm-goto-line-before-hook 'helm-save-current-pos-to-mark-ring)
-(defvar prelude-global-helm-mode-map
- (let ((map (make-sparse-keymap)))
- (define-key map (kbd "M-x") 'helm-M-x)
- (define-key map (kbd "M-y") 'helm-show-kill-ring)
- (define-key map (kbd "C-x b") 'helm-mini)
- (define-key map (kbd "C-x C-f") 'helm-find-files)
- (define-key map (kbd "C-h C-f") 'helm-apropos)
- (define-key map (kbd "C-h r") 'helm-info-emacs)
- (define-key map (kbd "C-h C-l") 'helm-locate-library)
- map)
- "Keymap for Helm to replace standard Prelude's commands")
-
-(define-minor-mode prelude-global-helm-minor-mode
- "Minor mode to replace Prelude default commands with \\{prelude-global-helm-map}"
- :keymap prelude-global-helm-mode-map
- (progn
- ;; show minibuffer history with Helm
- (define-key minibuffer-local-map (kbd "M-l") 'helm-minibuffer-history)
- (define-key global-map [remap find-tag] 'helm-etags-select)
- (define-key global-map [remap list-buffers] 'helm-mini)
-
- ;; shell history.
- (define-key shell-mode-map (kbd "M-l") 'helm-comint-input-ring)
-
- ;; use helm to list eshell history
- (add-hook 'eshell-mode-hook
- #'(lambda ()
- (define-key eshell-mode-map (kbd "M-l") 'helm-eshell-history)))))
-
-(define-globalized-minor-mode prelude-global-helm-global-mode prelude-global-helm-minor-mode prelude-global-helm-global-mode-on)
-
-(defun prelude-global-helm-global-mode-on ()
- "Turn on `prelude-global-helm-minor-mode'"
- (prelude-global-helm-minor-mode +1)
- )
-
-(defun prelude-global-helm-global-mode-off ()
- "Turn off `prelude-global-helm-minor-mode'"
- (prelude-global-helm-minor-mode -1))
-
-(helm-mode 1)
-
;; PACKAGE: helm-projectile
-
(require 'helm-projectile)
-(setq projectile-completion-system 'helm)
-
(push "Press to navigate a project in Helm." prelude-tips)
-;; PACKAGE: helm-descbinds
-(require 'helm-descbinds)
-(helm-descbinds-mode)
-
(provide 'prelude-helm)
;;; prelude-helm.el ends here
diff --git a/sample/prelude-modules.el b/sample/prelude-modules.el
index 88a9fb9..60d410f 100644
--- a/sample/prelude-modules.el
+++ b/sample/prelude-modules.el
@@ -4,6 +4,7 @@
(require 'prelude-erc)
(require 'prelude-ido) ;; Super charges Emacs completion for C-x C-f and more
;; (require 'prelude-helm) ;; Interface for narrowing and search
+;; (require 'prelude-helm-everywhere) ;; Enable Helm everywhere
(require 'prelude-company)
;; (require 'prelude-key-chord) ;; Binds useful features to key combinations
;; (require 'prelude-mediawiki)