diff --git a/feeds.module b/feeds.module
index cba702d..3ef589f 100644
--- a/feeds.module
+++ b/feeds.module
@@ -43,6 +43,33 @@ function feeds_hook_info() {
 }
 
 /**
+ * Implements hook_init().
+ */
+function feeds_init() {
+
+  // We need to get and cache the entity_info to work with the CTools plugins.
+  feeds_get_cached_entity_info(entity_get_info());
+}
+
+/**
+ * Create a static cache of the entity info so that the CTools plugins
+ * works when a module is installed.
+ *
+ * @param null $set_cache
+ *   The entity information.
+ *
+ * @return array
+ *   The entity information.
+ */
+function feeds_get_cached_entity_info($set_cache = NULL) {
+  static $cached_entity_info = NULL;
+  if ($set_cache) {
+    $cached_entity_info = $set_cache;
+  }
+  return $cached_entity_info;
+}
+
+/**
  * Implements hook_cron().
  */
 function feeds_cron() {
diff --git a/feeds.plugins.inc b/feeds.plugins.inc
index fa45137..56623d6 100644
--- a/feeds.plugins.inc
+++ b/feeds.plugins.inc
@@ -167,25 +167,28 @@ function _feeds_feeds_plugins() {
     );
   }
   if (module_exists('entity')) {
-    foreach (entity_get_info() as $type => $entity_info) {
-      // @todo: Test for saving and whatever else necessary?
-      if (entity_type_supports($type, 'create')) {
-        $info['FeedsEntityProcessor' . drupal_ucfirst($type)] = array(
-          'name' => $entity_info['label'] . ' entity processor - EXPERIMENTAL',
-          // @todo: Use plural label if there.
-          'description' => 'Create and update ' . drupal_strtolower($entity_info['label']) . 's.',
-          'help' => 'Create and update ' . drupal_strtolower($entity_info['label']) . 's from parsed content.',
-          'plugin_key' => 'FeedsEntityProcessor',
-          'handler' => array(
-            'parent' => 'FeedsProcessor',
-            'class' => 'FeedsEntityProcessor',
-            'file' => 'FeedsEntityProcessor.inc',
-            'path' => $path,
-          ),
-          // Add in the entity type used.
-          // @see FeedsEntityProcessor::entityType()
-         'type' => $type,
-        );
+    $cached_entity_info = feeds_get_cached_entity_info();
+    if (!empty($cached_entity_info)) {
+      foreach ($cached_entity_info as $type => $entity_info) {
+        // @todo: Test for saving and whatever else necessary?
+        if (entity_type_supports($type, 'create')) {
+          $info['FeedsEntityProcessor' . drupal_ucfirst($type)] = array(
+            'name' => $entity_info['label'] . ' entity processor - EXPERIMENTAL',
+            // @todo: Use plural label if there.
+            'description' => 'Create and update ' . drupal_strtolower($entity_info['label']) . 's.',
+            'help' => 'Create and update ' . drupal_strtolower($entity_info['label']) . 's from parsed content.',
+            'plugin_key' => 'FeedsEntityProcessor',
+            'handler' => array(
+              'parent' => 'FeedsProcessor',
+              'class' => 'FeedsEntityProcessor',
+              'file' => 'FeedsEntityProcessor.inc',
+              'path' => $path,
+            ),
+            // Add in the entity type used.
+            // @see FeedsEntityProcessor::entityType()
+           'type' => $type,
+          );
+        }
       }
     }
   }
