diff --git a/core/includes/module.inc b/core/includes/module.inc
index aa9eaf5..3a4b754 100644
--- a/core/includes/module.inc
+++ b/core/includes/module.inc
@@ -210,6 +210,30 @@ function system_list($type) {
       drupal_get_filename($item['type'], $item['name'], $item['filepath']);
     }
   }
+  // Register PSR-0 classes for the providers.
+  static $directories = array();
+  $types = array(
+    'module_enabled' => 'module',
+    'theme' => 'theme',
+  );
+  if ($type != 'bootstrap') {
+    $loader = drupal_classloader();
+    foreach ($lists[$type] as $provider => $data) {
+      if (!isset($directories[$provider])) {
+        $directories[$provider] = drupal_get_path($types[$type], $provider);
+        $info = drupal_parse_info_file("{$directories[$provider]}/$provider.info");
+        if (isset($info['namespaces'])) {
+          foreach ($info['namespaces'] as $namespace => $dir) {
+            drupal_set_message('<pre>' . var_export($namespace, TRUE) . '</pre>');
+            drupal_set_message('<pre>' . var_export(DRUPAL_ROOT . '/' . $directories[$provider] . $dir, TRUE) . '</pre>');
+            $loader->registerNamespaces(array(
+              $namespace => DRUPAL_ROOT . '/' . $directories[$provider] . $dir,
+            ));
+          }
+        }
+      }
+    }
+  }
 
   return $lists[$type];
 }
