diff --git a/prelude/prelude-packages.el b/prelude/prelude-packages.el
index ff176bb..21278a3 100644
--- a/prelude/prelude-packages.el
+++ b/prelude/prelude-packages.el
@@ -64,27 +64,31 @@
 
 (prelude-install-packages)
 
-(defmacro prelude-auto-install (ext mode)
+(defmacro prelude-auto-install (extension package mode)
   `(add-to-list 'auto-mode-alist
-                `(,ext . (lambda ()
-                           (package-install ',mode)
-                           (,mode)))))
+                `(,extension . (lambda ()
+                                 (package-install ',package)
+                                 (,mode)))))
 
 (defvar prelude-auto-install-alist
-  '(("\\.markdown\\'" . markdown-mode)
-    ("\\.md\\'" . markdown-mode)
-    ("\\.haml\\'" . haml-mode)
-    ("\\.scss\\'" . scss-mode)
-    ("\\.sass\\'" . sass-mode)
-    ("\\.groovy\\'" . groovy-mode)
-    ("\\.yml\\'" . yaml-mode)
-    ("\\.php\\'" . php-mode)
-    ("\\.hs\\'" . haskell-mode)
-    ("\\.less\\'" . less-css-mode)
-    ("\\.lua\\'" . lua-mode)
-    ("\\.coffee\\'" . coffee-mode)
-    ("\\.erl\\'" . erlang)
-    ("\\.feature\\'" . feature-mode)))
+  '(("\\.markdown\\'" markdown-mode markdown-mode)
+    ("\\.md\\'" markdown-mode markdown-mode)
+    ("\\.haml\\'" haml-mode haml-mode)
+    ("\\.scss\\'" prelude-scss scss-mode)
+    ("\\.sass\\'" sass-mode sass-mode)
+    ("\\.groovy\\'" groovy-mode groovy-mode)
+    ("\\.yml\\'" yaml-mode yaml-mode)
+    ("\\.php\\'" php-mode php-mode)
+    ("\\.hs\\'" prelude-haskell haskell-mode)
+    ("\\.less\\'" less-css-mode less-css-mode)
+    ("\\.lua\\'" lua-mode lua-mode)
+    ("\\.coffee\\'" prelude-coffe coffee-mode)
+    ("\\.erl\\'" erlang erlang-mode)
+    ("\\.feature\\'" feature-mode feature-mode)
+    ("\\.css\\'" prelude-css css-mode)
+    ("\\.rb\\'" prelude-ruby ruby-mode)
+    ("\\.pl\\'" prelude-perl cperl-mode)
+    ("\\.clj\\'" prelude-clojure clojure-mode)))
 
 ;; markdown-mode doesn't have autoloads for the auto-mode-alist
 ;; so we add them manually if it's already installed
@@ -93,10 +97,11 @@
   (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)))
 
 (dolist (entry prelude-auto-install-alist)
-  (let ((ext (car entry))
-        (mode (cdr entry)))
-    (unless (package-installed-p mode)
-      (prelude-auto-install ext mode))))
+  (let ((extension (first entry))
+        (package (second entry))
+        (mode (third entry)))
+    (unless (package-installed-p package)
+      (prelude-auto-install extension package mode))))
 
 (provide 'prelude-packages)
 ;;; prelude-packages.el ends here