diff --git a/eck.api.php b/eck.api.php
new file mode 100644
index 0000000..3f6be55
--- /dev/null
+++ b/eck.api.php
@@ -0,0 +1,32 @@
+<?php
+
+
+/**
+ * Respond to the creation of a new ECK entity type.
+ *
+ * @param EntityType $entity_type
+ *   The entity type is being created.
+ */
+function hook_eck_entity_type_insert(EntityType $entity_type) {
+
+}
+
+/**
+ * Respond to the updating of a new ECK entity type.
+ *
+ * @param EntityType $entity_type
+ *   The entity type is being update.
+ */
+function hook_eck_entity_type_update(EntityType $entity_type) {
+
+}
+
+/**
+ * Respond to the deletion of a new ECK entity type.
+ *
+ * @param EntityType $entity_type
+ *   The entity type is being deleted.
+ */
+function hook_eck_entity_type_delete(EntityType $entity_type) {
+
+}
\ No newline at end of file
diff --git a/eck.classes.inc b/eck.classes.inc
index 91fa890..5e5173d 100644
--- a/eck.classes.inc
+++ b/eck.classes.inc
@@ -260,7 +260,10 @@ class EntityType extends DBObject{
       module_load_include('inc', 'eck', 'eck.entity_type');
       $schema = eck__entity_type__schema($this);
       db_create_table("eck_{$this->name}", $schema);
-      
+
+      // Allow other modules to respond to the creation of entity types.
+      module_invoke_all('eck_entity_type_insert', $this);
+
     }else{
       //modify the already existing table in accordance with the recorded changes
       if(array_key_exists('add', $this->changes)){
@@ -272,7 +275,6 @@ class EntityType extends DBObject{
           //it is not custom so lets get the schema and add the field
           $schema = eck_property_type_schema($property['type']);
           db_add_field("eck_{$this->name}", $name, $schema);
-          
         }
       }
       if(array_key_exists('remove', $this->changes)){
@@ -280,6 +282,9 @@ class EntityType extends DBObject{
           db_drop_field("eck_{$this->name}", $name);
         }
       }
+
+      // Allow other modules to respond to the change of entity types.
+      module_invoke_all('eck_entity_type_update', $this);
     }
     
     parent::save();
@@ -289,6 +294,10 @@ class EntityType extends DBObject{
   public function delete(){
     parent::delete();
     db_drop_table('eck_'.$this->name);
+
+    // Allow other modules to respond to the deletion of entity types.
+    module_invoke_all('eck_entity_type_delete', $this);
+
     drupal_flush_all_caches();
   }
   
diff --git a/modules/eck_entitycache/eck_entitycache.info b/modules/eck_entitycache/eck_entitycache.info
new file mode 100644
index 0000000..04e129d
--- /dev/null
+++ b/modules/eck_entitycache/eck_entitycache.info
@@ -0,0 +1,8 @@
+name = "ECK - Entitycache"
+description = "Integrates the ECK module with the Entitycache module"
+
+package = Performance and scalability
+core = 7.x
+
+dependencies[] = eck
+dependencies[] = entitycache
diff --git a/modules/eck_entitycache/eck_entitycache.install b/modules/eck_entitycache/eck_entitycache.install
new file mode 100644
index 0000000..f87bb8a
--- /dev/null
+++ b/modules/eck_entitycache/eck_entitycache.install
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @file
+ *   Install functions for the ECK Entity cache module.
+ */
+
+/**
+ * Implements hook_schema().
+ */
+function eck_entitycache_schema() {
+  $schema = array();
+
+  $cache_schema = drupal_get_schema_unprocessed('system', 'cache');
+
+  foreach (EntityType::loadAll() as $entity_type) {
+    $schema["cache_entity_{$entity_type->name}"] = $cache_schema;
+    $schema["cache_entity_{$entity_type->name}"]['description'] = "Cache table used to store {$entity_type->name} entity records.";
+  }
+
+  return $schema;
+}
diff --git a/modules/eck_entitycache/eck_entitycache.module b/modules/eck_entitycache/eck_entitycache.module
new file mode 100644
index 0000000..e8eee97
--- /dev/null
+++ b/modules/eck_entitycache/eck_entitycache.module
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @file
+ *   The ECK Entity cache module.
+ */
+
+/**
+ * Implements hook_entity_info_alter().
+ */
+function eck_entitycache_entity_info_alter(&$info){
+ 
+  foreach(EntityType::loadAll() as $entity_type){
+    // Enable Entity Cache for this entity.
+    $info[$entity_type->name]['entity cache'] = TRUE;
+    // But disable the field cache.
+    $info[$entity_type->name]['field cache'] = FALSE;
+  }
+}
+
+/**
+ * Implements hook_eck_entity_type_insert().
+ */
+function eck_entitycache_eck_entity_type_insert(EntityType $entity_type) {
+  // Create the new entity cache table for this entity.
+  $schema = drupal_get_schema_unprocessed('system', 'cache');
+  $schema['description'] = "Cache table used to store {$entity_type->name} entity records.";
+  db_create_table("cache_entity_{$entity_type->name}", $schema);
+}
+
+/**
+ * Implements hook_eck_entity_type_delete().
+ */
+function eck_entitycache_eck_entity_type_delete(EntityType $entity_type) {
+  // Delete the entity cache table for this entity.
+  db_drop_table("cache_entity_{$entity_type->name}");
+}
+
+/**
+ * Implements hook_flush_caches().
+ */
+function eck_entitycache_flush_caches() {
+  $bins = array();
+  foreach (EntityType::loadAll() as $entity_type) {
+    $bins[] = "cache_entity_{$entity_type->name}";
+  }
+  return $bins;
+}
