diff --git a/fieldable_panels_panes.install b/fieldable_panels_panes.install
index 3c54648..f17d3fe 100644
--- a/fieldable_panels_panes.install
+++ b/fieldable_panels_panes.install
@@ -162,6 +162,10 @@ function fieldable_panels_panes_schema() {
     ),
   );
 
+  // Optional cache table for entitycache support.
+  $schema['cache_entity_fieldable_panels_pane'] = drupal_get_schema_unprocessed('system', 'cache');
+  $schema['cache_entity_fieldable_panels_pane']['description'] = 'Cache table used to store fieldable_panels_pane entity records.';
+
   return $schema;
 }
 
@@ -233,3 +237,14 @@ function fieldable_panels_panes_update_7106() {
     ));
   }
 }
+
+/**
+ * Add cache table for optional entitycache support.
+ */
+function fieldable_panels_panes_update_7107() {
+  if (!db_table_exists('cache_entity_fieldable_panels_pane')) {
+    $schema = drupal_get_schema_unprocessed('system', 'cache');
+    $schema['description'] = 'Cache table used to store fieldable_panel_pane entity records.';
+    db_create_table('cache_entity_fieldable_panels_pane', $schema);
+  }
+}
diff --git a/fieldable_panels_panes.module b/fieldable_panels_panes.module
index 2ee4513..a29d864 100644
--- a/fieldable_panels_panes.module
+++ b/fieldable_panels_panes.module
@@ -13,84 +13,92 @@
  * Implements hook_entity_info()
  */
 function fieldable_panels_panes_entity_info() {
-  return array(
-    'fieldable_panels_pane' => array(
-      'label' => t('Fieldable panel pane'),
-      'controller class' => 'PanelsPaneController',
-      'base table' => 'fieldable_panels_panes',
-      'revision table' => 'fieldable_panels_panes_revision',
-      'fieldable' => TRUE,
-      'uuid' => TRUE,
-      'entity keys' => array(
-        'id' => 'fpid',
-        'revision' => 'vid',
-        'bundle' => 'bundle',
-        'label' => 'admin_title',
-        'language' => 'language',
-        'uuid' => 'uuid',
-        'revision uuid' => 'vuuid',
-      ),
-      'bundles' => array(
-        // @todo We need to store the possible bundles and create a UI.
-        // to allow for more bundles. For now, hook_panels_panes_entity_info_alter
-        // will work.
-        'fieldable_panels_pane' => array(
-          'label' => t('Panels pane'),
-          'admin' => array(
-            'path' => 'admin/structure/fieldable-panels-panes/manage/%fieldable_panels_panes_type',
-            'bundle argument' => 4,
-            'real path' => 'admin/structure/fieldable-panels-panes/manage/fieldable-panels-pane',
-            'access arguments' => array('administer fieldable panels panes'),
-          ),
+  $info = array();
+
+  $info['fieldable_panels_pane'] = array(
+    'label' => t('Fieldable panel pane'),
+    'controller class' => 'PanelsPaneController',
+    'base table' => 'fieldable_panels_panes',
+    'revision table' => 'fieldable_panels_panes_revision',
+    'fieldable' => TRUE,
+    'uuid' => TRUE,
+    'entity keys' => array(
+      'id' => 'fpid',
+      'revision' => 'vid',
+      'bundle' => 'bundle',
+      'label' => 'admin_title',
+      'language' => 'language',
+      'uuid' => 'uuid',
+      'revision uuid' => 'vuuid',
+    ),
+    'bundles' => array(
+      // @todo We need to store the possible bundles and create a UI.
+      // to allow for more bundles. For now, hook_panels_panes_entity_info_alter
+      // will work.
+      'fieldable_panels_pane' => array(
+        'label' => t('Panels pane'),
+        'admin' => array(
+          'path' => 'admin/structure/fieldable-panels-panes/manage/%fieldable_panels_panes_type',
+          'bundle argument' => 4,
+          'real path' => 'admin/structure/fieldable-panels-panes/manage/fieldable-panels-pane',
+          'access arguments' => array('administer fieldable panels panes'),
         ),
       ),
-      'view modes' => array(
-        // @todo we should support view modes.
-        'full' => array(
-          'label'  => t('Full'),
-          'custom settings' => FALSE,
-        ),
+    ),
+    'view modes' => array(
+      // @todo we should support view modes.
+      'full' => array(
+        'label'  => t('Full'),
+        'custom settings' => FALSE,
       ),
+    ),
 
-      // entity module callbacks
-      'view callback' => 'entity_metadata_view_single',
-      'creation callback' => 'fieldable_panels_panes_create',
-      'access callback' => 'fieldable_panels_panes_access',
-      'save callback' => 'fieldable_panels_panes_save',
-
-      // Entity translation support
-      'translation' => array(
-        'entity_translation' => array(
-          'class' => 'EntityTranslationFieldablePanelsPaneHandler',
-          'base path' =>  'admin/structure/fieldable-panels-panes/view/%fieldable_panels_panes',
-          'edit path' =>  'admin/structure/fieldable-panels-panes/view/%fieldable_panels_panes/edit',
-          'path wildcard' => '%fieldable_panels_panes',
-        ),
+    // entity module callbacks
+    'view callback' => 'entity_metadata_view_single',
+    'creation callback' => 'fieldable_panels_panes_create',
+    'access callback' => 'fieldable_panels_panes_access',
+    'save callback' => 'fieldable_panels_panes_save',
+
+    // Entity translation support
+    'translation' => array(
+      'entity_translation' => array(
+        'class' => 'EntityTranslationFieldablePanelsPaneHandler',
+        'base path' =>  'admin/structure/fieldable-panels-panes/view/%fieldable_panels_panes',
+        'edit path' =>  'admin/structure/fieldable-panels-panes/view/%fieldable_panels_panes/edit',
+        'path wildcard' => '%fieldable_panels_panes',
       ),
+    ),
 
-      // Title module support
-      'field replacement' => array(
-        'title' => array(
-          'field' => array(
-            'type' => 'text',
-            'cardinality' => 1,
-            'translatable' => TRUE,
+    // Title module support
+    'field replacement' => array(
+      'title' => array(
+        'field' => array(
+          'type' => 'text',
+          'cardinality' => 1,
+          'translatable' => TRUE,
+        ),
+        'instance' => array(
+          'label' => t('Title'),
+          'description' => t('A field replacing fieldable panel pane title.'),
+          'required' => FALSE,
+          'settings' => array(
+            'text_processing' => 0,
           ),
-          'instance' => array(
-            'label' => t('Title'),
-            'description' => t('A field replacing fieldable panel pane title.'),
-            'required' => FALSE,
-            'settings' => array(
-              'text_processing' => 0,
-            ),
-            'widget' => array(
-              'weight' => -10,
-            ),
+          'widget' => array(
+            'weight' => -10,
           ),
         ),
       ),
     ),
   );
+
+  // Optional support for the entitycache module.
+  if (module_exists('entitycache')) {
+    $info['fieldable_panels_pane']['field cache'] = FALSE;
+    $info['fieldable_panels_pane']['entity cache'] = TRUE;
+  }
+
+  return $info;
 }
 
 /**
@@ -414,6 +422,13 @@ function fieldable_panels_panes_admin_menu_map() {
 }
 
 /**
+ * Implements hook_flush_caches().
+ */
+function fieldable_panels_panes_flush_caches() {
+  return array('cache_entity_fieldable_panels_pane');
+}
+
+/**
  * Implementation of hook_panels_dashboard_blocks().
  */
 function fieldable_panels_panes_panels_dashboard_blocks(&$vars) {
diff --git a/includes/PanelsPaneController.class.php b/includes/PanelsPaneController.class.php
index 6692a8f..669d5a2 100644
--- a/includes/PanelsPaneController.class.php
+++ b/includes/PanelsPaneController.class.php
@@ -11,6 +11,31 @@
 class PanelsPaneController extends DrupalDefaultEntityController {
   public $entity;
 
+  /**
+   * Overrides DrupalDefaultEntityController::resetCache().
+   */
+  public function resetCache(array $ids = NULL) {
+    if (module_exists('entitycache')) {
+      EntityCacheControllerHelper::resetEntityCache($this, $ids);
+    }
+    parent::resetCache($ids);
+  }
+
+  /**
+   * Overrides DrupalDefaultEntityController::load().
+   */
+  public function load($ids = array(), $conditions = array()) {
+    if (module_exists('entitycache')) {
+      return EntityCacheControllerHelper::entityCacheLoad($this, $ids, $conditions);
+    }
+    else {
+      return parent::load($ids, $conditions);
+    }
+  }
+
+  /**
+   * Overrides DrupalDefaultEntityController::attachLoad().
+   */
   public function attachLoad(&$queried_entities, $revision_id = FALSE) {
     parent::attachLoad($queried_entities, $revision_id);
 
@@ -296,5 +321,4 @@ class PanelsPaneController extends DrupalDefaultEntityController {
 
     return $entity;
   }
-
 }
