              (setq merlin-imenu--value-list (cons marker merlin-imenu--value-list)))
             ((string= kind "Type")
              (setq merlin-imenu--type-list (cons marker merlin-imenu--type-list)))
+            ((string= kind "Module")
+             (setq merlin-imenu--module-list (cons marker merlin-imenu--module-list)))
+            ((string= kind "Signature")
+             (setq merlin-imenu--signature-list (cons marker merlin-imenu--signature-list)))
+            ((string= kind "Class")
+             (setq merlin-imenu--class-list (cons marker merlin-imenu--class-list)))
             ((string= kind "Exn")
              (setq merlin-imenu--exception-list (cons marker merlin-imenu--exception-list))))
       (when sub-trees

  ;; Reset local vars
  (setq merlin-imenu--value-list nil
        merlin-imenu--type-list nil
        merlin-imenu--exception-list nil)
  ;; Read outline tree
  (merlin-imenu-parse-outline "" (merlin-call "outline"))

(defvar-local merlin-imenu--value-list nil)
(defvar-local merlin-imenu--type-list nil)
(defvar-local merlin-imenu--exception-list nil)
(defvar-local merlin-imenu--module-list nil)
(defvar-local merlin-imenu--signature-list nil)
(defvar-local merlin-imenu--class-list nil)

(defun merlin-imenu-compute-position (line col)
  "Get location of the item."
