       (spacemacs/gtags-define-keys-for-mode 'shell-script-mode)
       (spacemacs/gtags-define-keys-for-mode 'awk-mode)
       (spacemacs/gtags-define-keys-for-mode 'asm-mode)
-      (spacemacs/gtags-define-keys-for-mode 'dired-mode))))
+      (spacemacs/gtags-define-keys-for-mode 'dired-mode)
+      )
+    :config
+    (progn
+      ;; if anyone uses helm-gtags, they would want to use these key bindings
+      (define-key helm-gtags-mode-map (kbd "M-.") 'helm-gtags-dwim)
+      (define-key helm-gtags-mode-map (kbd "C-x 4 .") 'helm-gtags-find-tag-other-window)
+      (define-key helm-gtags-mode-map (kbd "M-,") 'helm-gtags-pop-stack)
+      (define-key helm-gtags-mode-map (kbd "M-*") 'helm-gtags-pop-stack))))


;; For each package, define a function gtags/init-<package-gtags>
;;
(defun gtags/init-ggtags ()
  "Initialize my package"
  (use-package ggtags
    :defer t
    :init
    (progn
      (add-hook 'prog-mode-hook
                (lambda ()
                  ;; these modes have better eldoc integration
                  (unless (derived-mode-p 'c-mode
                                          'c++-mode
                                          'lisp-mode
                                          'emacs-lisp-mode
                                          'python-mode
                                          'ruby-mode)
                    (ggtags-mode 1)
                    (eldoc-mode 1)
                    (setq-local eldoc-documentation-function #'ggtags-eldoc-function)))))))

(defun gtags/init-helm-gtags ()
  (use-package helm-gtags

            helm-gtags-auto-update t
            helm-gtags-use-input-at-cursor t
            helm-gtags-pulse-at-cursor t)
      ;; modes that do not have a layer, define here
      (spacemacs/gtags-define-keys-for-mode 'tcl-mode)
      (spacemacs/gtags-define-keys-for-mode 'java-mode)
