 
 Used by `@require' and `@depends-on'."
   (unless (or force-p (doom-module-loaded-p module submodule))
-    (let ((sublist (assq module doom-modules)))
-      (if sublist
-          (setcdr (last sublist) (list submodule))
-        (push (list module submodule) doom-modules)))))
-
-(defun doom--enable-modules (modules)
-  "Adds MODULES to `doom-modules'.
-
-MODULES must be in mplist format:
-  '(:feature evil :lang emacs-lisp javascript java)"
-  (let (mode)
-    (dolist (m modules)
-      (cond ((keywordp m)
-             (setq mode m))
-            ((not mode)
-             (error "No namespace specified on `@doom' for %s" m))
-            ((eq m '*)
-             (let ((mode-str (substring (symbol-name mode) 1)))
-               (doom--enable-modules
-                (cons mode
-                      (--map (intern (f-base it))
-                             (f-directories
-                              (f-expand mode-str doom-modules-dir)))))))
-            (t
-             (doom--enable-module mode m))))
-    doom-modules))
+    (puthash (cons module submodule) t doom-modules)))
 
 
 ;;

            (--map (doom-module-path (car it) (cdr it) "packages.el")
                   (doom--module-pairs))))))

(defun doom-module-path (module submodule &optional file)
  "Get the full path to a module: e.g. :lang emacs-lisp maps to
~/.emacs.d/modules/lang/emacs-lisp/ and will append FILE if non-nil."

`doom-initialize' sets this.")

(defvar doom-modules nil
  "A hash table of enabled modules.")

(defvar doom-packages nil
  "A list of enabled packages. Each element is a sublist, whose CAR is the
