diff --git a/empty_page.features.inc b/empty_page.features.inc
new file mode 100644
index 0000000..167090c
--- /dev/null
+++ b/empty_page.features.inc
@@ -0,0 +1,103 @@
+<?php
+
+/**
+ * @file Features integration for empty_page module
+ */
+
+/**
+ * Implements hook_features_export_options().
+ */
+function empty_page_features_export_options() {
+  $options = array();
+
+  $callbacks = db_select('empty_page', 'ep')
+          ->addTag('translatable')
+          ->fields('ep', array('cid', 'path'))
+          ->execute()
+          ->fetchAllKeyed();
+  foreach ($callbacks as $cid => $path) {
+    $options[$path] = $path;
+  }
+
+  return $options;
+}
+
+/**
+ * Implements hook_features_export().
+ */
+function empty_page_features_export($data, &$export, $module_name = '') {
+  $pipe = array();
+  
+  $export['dependencies']['empty_page'] = 'empty_page';
+
+  foreach ($data as $cid => $path) {
+    $export['features']['empty_page'][$path] = $path;
+  }
+
+  return $pipe;
+}
+
+/**
+ * Implements hook_features_export_render().
+ */
+function empty_page_features_export_render($module = 'contact', $data) {
+  $translatables = $code = array();
+
+  $code[] = '  $empty_page = array();';
+  $code[] = '';
+  foreach ($data as $path) {
+    $empty_page = (object) db_select('empty_page', 'ep')
+                    ->addTag('translatable')
+                    ->fields('ep')
+                    ->condition('path', $path)
+                    ->execute()
+                    ->fetchAssoc();
+    
+    if(isset($empty_page->cid)) {
+      $export = array('cid' => $empty_page->cid);
+
+      // Whitelist of empty_pages fields.
+      $props = array('cid', 'path', 'page_title', 'data', 'changed', 'created');
+      foreach ($props as $key) {
+        if (isset($empty_page->$key)) {
+          $export[$key] = $empty_page->$key;
+        }
+      }
+
+      $code[] = '  $empty_page[' . $empty_page->cid . '] = ' . features_var_export($export, '  ') . ';';
+    }
+  }
+
+
+  $code[] = '  return $empty_page;';
+  $code = implode("\n", $code);
+  return array('empty_page_default_content' => $code);
+}
+
+/**
+ * Implements hook_features_revert().
+ */
+function empty_page_features_revert($module) {
+  empty_page_features_rebuild($module);
+}
+
+/**
+ * Implements hook_features_rebuild().
+ * 
+ */
+function empty_page_features_rebuild($module) {
+  $empty_page = module_invoke($module, 'empty_page_default_content');
+
+  if (!empty($empty_page)) {
+    foreach ($empty_page as $data) {
+      $callback = (object) empty_page_get_callback($data['cid']);
+      $values   = (object)$data;      
+      if (!($callback) || !property_exists($callback, 'cid')) {             
+        drupal_write_record('empty_page', $values);
+      } 
+      else {
+        drupal_write_record('empty_page', $values, array('cid'));
+      }      
+    }
+  }
+}
diff --git a/empty_page.module b/empty_page.module
index 8b50850..fce1a5a 100644
--- a/empty_page.module
+++ b/empty_page.module
@@ -198,3 +198,21 @@ function empty_page_clear_menu_cache() {
   // Rebuild menu.
   menu_rebuild();
 }
+
+/**
+ * Implements hook_features_api().
+ */
+function empty_page_features_api() {
+  $components = array();
+
+  $components['empty_page'] = array(
+      'name' => t('Empty pages'),
+      'features_source' => TRUE,
+      'duplicates' => FEATURES_DUPLICATES_ALLOWED,
+      'default_file' => FEATURES_DEFAULTS_INCLUDED_COMMON,
+      'default_hook' => 'empty_page_default_content', 
+      'file' => drupal_get_path('module', 'empty_page') . '/empty_page.features.inc',
+  );  
+  
+  return $components;
+}
