diff --git a/README.txt b/README.txt
index 7ff9e0c..434cf8e 100644
--- a/README.txt
+++ b/README.txt
@@ -57,4 +57,4 @@ not find in the more specific site directory.
 
 When adding or removing template files, you will need to visit the Content
 Templates admin page to refresh the template list cache. You do not need to do
-this again when making changes to the content of the templates.
\ No newline at end of file
+this again when making changes to the content of the templates.
diff --git a/contemplate.module b/contemplate.module
index 8a20331..e843e96 100644
--- a/contemplate.module
+++ b/contemplate.module
@@ -279,7 +279,7 @@ function contemplate_edit_type_form(&$form_state, $type = NULL) {
   );
 
   if (empty($template['teaser-file'])) {
-    $form['teaser']['teaser-enable'] = array(
+    $form['teaser']['teaser-enabled'] = array(
       '#type'           => 'checkbox',
       '#title'          => '<strong>'. t('Affect teaser output') .'</strong>',
       '#default_value'  => CONTEMPLATE_TEASER_ENABLED & $template['flags'] ? TRUE : FALSE,
@@ -322,7 +322,7 @@ function contemplate_edit_type_form(&$form_state, $type = NULL) {
   );
 
   if (empty($template['body-file'])) {
-    $form['body']['body-enable'] = array(
+    $form['body']['body-enabled'] = array(
       '#type'           => 'checkbox',
       '#title'          => '<strong>'. t('Affect body output') .'</strong>',
       '#default_value'  => CONTEMPLATE_BODY_ENABLED & $template['flags'] ? TRUE : FALSE,
@@ -368,7 +368,7 @@ function contemplate_edit_type_form(&$form_state, $type = NULL) {
   );
 
   if (empty($template['rss-file'])) {
-    $form['rss']['rss-enable'] = array(
+    $form['rss']['rss-enabled'] = array(
       '#type'           => 'checkbox',
       '#title'          => '<strong>'. t('Affect RSS output') .'</strong>',
       '#default_value'  => CONTEMPLATE_RSS_ENABLED & $template['flags'] ? TRUE : FALSE,
@@ -534,9 +534,9 @@ function contemplate_save($edit) {
   $bodyfield    = !empty($edit['values']['bodyfield'])      ? $edit['values']['bodyfield']    : '';
   $rssfield     = !empty($edit['values']['rssfield'])       ? $edit['values']['rssfield']     : '';
   $enclosure    = !empty($edit['values']['enclosure'])      ? $edit['values']['enclosure']    : '';
-  $flags       |= !empty($edit['values']['teaser-enable'])  ? CONTEMPLATE_TEASER_ENABLED      : 0;
-  $flags       |= !empty($edit['values']['body-enable'])    ? CONTEMPLATE_BODY_ENABLED        : 0;
-  $flags       |= !empty($edit['values']['rss-enable'])     ? CONTEMPLATE_RSS_ENABLED         : 0;
+  $flags       |= !empty($edit['values']['teaser-enabled'])  ? CONTEMPLATE_TEASER_ENABLED      : 0;
+  $flags       |= !empty($edit['values']['body-enabled'])    ? CONTEMPLATE_BODY_ENABLED        : 0;
+  $flags       |= !empty($edit['values']['rss-enabled'])     ? CONTEMPLATE_RSS_ENABLED         : 0;
 
   contemplate_delete($type);
   $sql = "INSERT INTO {contemplate} (type, teaser, body, rss, enclosure, flags) VALUES ('%s', '%s', '%s', '%s', '%s', %d)";
@@ -886,6 +886,20 @@ function contemplate_theme() {
 }
 
 /**
+ * Implementation of hook_features_api().
+ */
+function contemplate_features_api() {
+  return array(
+    'contemplate' => array(
+      'name' => t('Content Templates'),
+      'default_hook' => 'contemplate_templates',
+      'default_file' => FEATURES_DEFAULTS_INCLUDED,
+      'file' => drupal_get_path('module', 'contemplate') .'/includes/contemplate.features.inc',
+    ),
+  );
+}
+
+/**
  * Rewrite of theme_field to output default CCK output into the template.
  *
  * @return unknown
@@ -907,4 +921,4 @@ function theme_contemplate_field($field) {
   $output .= '</div>' . "\n";
 
   return $output;
-}
+}
\ No newline at end of file
diff --git a/includes/contemplate.features.inc b/includes/contemplate.features.inc
new file mode 100644
index 0000000..e91f7c5
--- /dev/null
+++ b/includes/contemplate.features.inc
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * Implementation of hook_features_export_options().
+ */
+function contemplate_features_export_options() {
+  $options = array();
+  foreach(contemplate_get_templates() as $template) {
+    if(strlen($template['type'])) {
+      $options[$template['type']] = $template['type'];
+    }     
+  }
+  
+  return $options;
+}
+
+/**
+ * Implementation of hook_features_export().
+ */
+function contemplate_features_export($data, &$export, $module_name = '') {
+
+  $export['dependencies']['contemplate'] = 'contemplate';
+  
+  // Collect a module to preset map
+  $map = features_get_default_map('contemplate');
+  foreach ($data as $preset) {
+    $export['features']['contemplate'][$preset] = $preset;
+  }
+}
+
+/**
+ * Implementation of hook_features_export_render().
+ */
+function contemplate_features_export_render($module_name, $data) {
+  $items = array();
+  foreach ($data as $key) {
+    $template = contemplate_get_template($key);
+    $items[$key] = $template;
+  }
+  $code = "  \$items = ". features_var_export($items, '  ') .";\n";
+  $code .= '  return $items;';
+  return array('contemplate_templates' => $code);
+}
+
+/**
+ * Implementation of hook_features_revert().
+ */
+function contemplate_features_revert($module) {
+  contemplate_features_rebuild($module);
+}
+
+
+function contemplate_features_rebuild($module) {
+  if ($types = features_get_default('contemplate', $module)) {
+    foreach($types as $type => $template) {
+      
+      // rework into the same format contemplate_save is used to
+      $template['teaserfield'] = $template['teaser'];
+      $template['bodyfield'] = $template['body'];
+      $template['rssfield'] = $template['rss'];      
+      $edit['values'] = $template;
+      
+      contemplate_save($edit);
+    }
+  }
+}
+
+
+function hook_contemplate_default_presets() {
+  return array();
+}
