diff --git a/lib/Drupal/configuration/Config/EntityApiConfiguration.php b/lib/Drupal/configuration/Config/EntityApiConfiguration.php
new file mode 100644
index 0000000..91916d5
--- /dev/null
+++ b/lib/Drupal/configuration/Config/EntityApiConfiguration.php
@@ -0,0 +1,146 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\configuration\Config\EntityApiConfiguration.
+ */
+
+namespace Drupal\configuration\Config;
+
+use Drupal\configuration\Config\Configuration;
+use Drupal\configuration\Utils\ConfigIteratorSettings;
+
+class EntityApiConfiguration extends Configuration {
+
+  /**
+   * The component of the current configuration.
+   *
+   * Usually this component is the entity type.
+   *
+   * @var string
+   */
+  protected $component;
+
+  /**
+   * Overrides Drupal\configuration\Config\Configuration::__construct().
+   */
+  public function __construct($identifier, $component = '') {
+    // Because Entity API can handle multiple types of configurations we need to
+    // know what is the current handled configuration. Usually this component is
+    // the entity type.
+    $this->component = $component;
+    parent::__construct($identifier, $component);
+  }
+
+  /**
+   * Overrides Drupal\configuration\Config\Configuration::getStorageInstance().
+   */
+  static protected function getStorageInstance($component) {
+    $storage = static::getStorageSystem($component);
+    return new $storage($component);
+  }
+
+  /**
+   * Overrides Drupal\configuration\Config\Configuration::isActive().
+   */
+  public static function isActive() {
+    if (module_exists('entity')) {
+      return TRUE;
+    }
+    return FALSE;
+  }
+
+  /**
+   * Overrides Drupal\configuration\Config\Configuration::getComponentHumanName().
+   */
+  static public function getComponentHumanName($component, $plural = FALSE) {
+    module_load_include('inc', 'entity', 'entity.features');
+    $components = entity_features_api();
+    return $components[$component]['name'];
+  }
+
+  /**
+   * Overrides Drupal\configuration\Config\Configuration::getComponent().
+   */
+  public function getComponent() {
+    return $this->component;
+  }
+
+  /**
+   * Overrides Drupal\configuration\Config\Configuration::supportedComponents().
+   */
+  static public function supportedComponents() {
+    if (!static::isActive()) {
+      return array();
+    }
+
+    module_load_include('inc', 'entity', 'entity.features');
+    $components = entity_features_api();
+
+    $supported = array();
+    foreach ($components as $component => $info) {
+      $supported[] = $component;
+    }
+
+    return $supported;
+  }
+
+  /**
+   * Overrides Drupal\configuration\Config\Configuration::getAllIdentifiers().
+   */
+  public static function getAllIdentifiers($component) {
+    $identifiers = array();
+    $items = entity_features_export_options($component);
+    foreach ($items as $key => $label) {
+      $identifiers[$key] = $label;
+    }
+    return $identifiers;
+  }
+
+  /**
+   * Overrides Drupal\configuration\Config\Configuration::getStorageSystem().
+   */
+  static protected function getStorageSystem($component) {
+    return '\Drupal\configuration\Storage\StorageEntityApi';
+  }
+
+  /**
+   * Overrides Drupal\configuration\Config\Configuration::findRequiredModules().
+   */
+  public function findRequiredModules() {
+    $this->addToModules('entity');
+    $entity_info = entity_get_info($this->getComponent());
+    if ($entity_info) {
+      $this->addToModules($entity_info['module']);
+    }
+  }
+
+  /**
+   * Implements Drupal\configuration\Config\Configuration::prepareBuild().
+   */
+  public function prepareBuild() {
+    module_load_include('inc', 'entity', 'entity.features');
+    $components = entity_features_api();
+    $default_hook = $components[$this->getComponent()]['default_hook'];
+    $export = array();
+    $info = entity_features_export_render('configuration', array($this->getIdentifier()), $export, $this->getComponent());
+    $code = $info[$default_hook];
+    $this->data = array('function' => $this->getIdentifier(), 'code' => $code);
+    return $this->data;
+  }
+
+  /**
+   * Implements Drupal\configuration\Config\Configuration::saveToActiveStore().
+   */
+  public function saveToActiveStore(ConfigIteratorSettings &$settings) {
+    /*ctools_include('export');
+    $object = ctools_export_crud_load($this->getComponent(), $this->getIdentifier());
+    if ($object) {
+      ctools_export_crud_delete($this->getComponent(), $object);
+    }
+    $data = $this->getData();
+    $data->export_type = NULL;
+    ctools_export_crud_save($this->getComponent(), $data);
+    $settings->addInfo('imported', $this->getUniqueId());*/
+  }
+}
diff --git a/lib/Drupal/configuration/Storage/StorageEntityApi.php b/lib/Drupal/configuration/Storage/StorageEntityApi.php
new file mode 100644
index 0000000..d54abe9
--- /dev/null
+++ b/lib/Drupal/configuration/Storage/StorageEntityApi.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\configuration\Storage\StorageEntityApi.
+ */
+
+namespace Drupal\configuration\Storage;
+
+use Drupal\configuration\Storage\StoragePhp;
+
+class StorageEntityApi extends StoragePHP {
+
+  /**
+   * Saves the configuration object into the DataStore.
+   */
+  public function getDataToSave() {
+    $filename = $this->filename;
+
+    $export = '$api = ' . $this->export($this->api_version) . ";\n\n";
+    $export .= 'function ' . $this->data['function'] . '() {' . "\n" .  $this->data['code'] . "\n}\n\n";
+    $export .= '$dependencies = ' . $this->export($this->dependencies) . ";\n\n";
+    $export .= '$optional = ' . $this->export($this->optional_configurations) . ";\n\n";
+    $export .= '$modules = ' . $this->export($this->required_modules) . ";";
+
+    $file_contents = "<?php\n/**\n * @file\n * {$filename}\n */\n\n" . $export . "\n";
+
+    $this->hash = sha1($file_contents);
+
+    return $file_contents;
+  }
+
+}
