            if (file-exists-p path)
            collect path))
 
-(defun doom-module-flags (module submodule)
+(defun doom-module-get (module submodule)
   "Returns a list of flags provided for MODULE SUBMODULE."
-  (and (hash-table-p doom-modules)
-       (gethash (cons module submodule) doom-modules)))
-
-(defun doom-module-loaded-p (module submodule)
+  (gethash (cons module submodule) doom-modules))
+
+(defun doom-module-enabled-p (module submodule)
   "Returns t if MODULE->SUBMODULE is present in `doom-modules'."
-  (and (doom-module-flags module submodule) t))
+  (and (doom-module-get module submodule) t))
 
 (defun doom-module-enable (module submodule &optional flags)
   "Adds MODULE and SUBMODULE to `doom-modules', overwriting it if it exists.

  "Loads the module specified by MODULE (a property) and SUBMODULE (a symbol).

The module is only loaded once. If RELOAD-P is non-nil, load it again."
  (when (or reload-p (not (doom-module-loaded-p module submodule)))
    (let ((module-path (doom-module-path module submodule)))
      (if (not (file-directory-p module-path))
          (lwarn 'doom-modules :warning "Couldn't find module '%s %s'"

                   (error-message-string ex))))))))

(defmacro featurep! (module &optional submodule flag)
  "A convenience macro wrapper for `doom-module-enabled-p'. It is evaluated at
compile-time/macro-expansion time."
  (unless submodule
    (let* ((path (or load-file-name byte-compile-current-file))
