diff --git a/workbench_moderation/workbench_moderation.features.inc b/workbench_moderation/workbench_moderation.features.inc
new file mode 100644
index 0000000..936b9c8
--- /dev/null
+++ b/workbench_moderation/workbench_moderation.features.inc
@@ -0,0 +1,155 @@
+<?php
+
+/**
+ * Implementation of COMPONENT_features_export_options().
+ */
+function workbench_moderation_states_features_export_options() {
+  $options = array();
+  $table    = 'workbench_moderation_states';
+  $query = "SELECT * FROM {{$table}}";
+  $fields = db_query($query);
+  while ($row = $fields->fetchObject()) {
+    $options[$row->name] = $row->name;
+  }
+  
+  return $options;
+}
+
+/**
+ * Implementation of COMPONENT_features_export_options().
+ */
+function workbench_moderation_transitions_features_export_options() {
+  $transitions = array();
+  $table = 'workbench_moderation_transitions';
+  $query = "SELECT * FROM {{$table}}";
+  $fields = db_query($query);
+  while ($row = $fields->fetchObject()) {
+    $transitions[$row->from_name . ':' . $row->to_name] = $row->from_name . ' -> ' . $row->to_name;
+  }
+	
+  return $transitions;
+}
+
+/**
+ * Implementation of COMPONENT_features_export().
+ */
+function workbench_moderation_states_features_export($data, &$export, $module_name) {
+  $export['dependencies']['workbench_moderation_states'] = 'workbench_moderation';
+  foreach ($data as $component) {
+    $export['features']['workbench_moderation_states'][$component] = $component;
+  }
+  
+  return array();
+}
+
+/**
+ * Implementation of COMPONENT_features_export().
+ */
+function workbench_moderation_transitions_features_export($data, &$export, $module_name) {
+  $export['dependencies']['workbench_moderation_transitions'] = 'workbench_moderation';
+  foreach ($data as $component) {
+    $export['features']['workbench_moderation_transitions'][$component] = $component;
+  }
+  
+  return array();
+}
+
+/**
+ * Implementation of COMPONENT_features_export_render().
+ */
+function workbench_moderation_states_features_export_render($module_name, $data) {
+  $items = array();
+  $table    = 'workbench_moderation_states'; 
+  foreach ($data as $key) {
+    $field = db_query("SELECT * FROM {{$table}} WHERE name = :workbench_moderation_states", array(':workbench_moderation_states' => $key))->fetchObject();
+    $items[$key] = $field;
+  }
+  $code = "  \$items = " . features_var_export($items, '  ') . ";\n";
+  $code .= '  return $items;';
+  
+  return array('workbench_moderation_export_states' => $code);
+}
+
+/**
+ * Implementation of COMPONENT_features_export_render().
+ */
+function workbench_moderation_transitions_features_export_render($module_name, $data) {
+  $table    = 'workbench_moderation_transitions'; 
+	$items = array();
+	foreach ($data as $transition) {
+    	list($from, $to) = explode(':', $transition);
+    	$item = db_query("SELECT * FROM {{$table}} WHERE to_name = :to_name AND from_name = :from_name", array(':to_name' => $to, ':from_name' => $from))->fetchObject();;
+  		if (!empty($item)) {
+  			$items[$item->from_name . ':' . $item->to_name] = TRUE;
+  		}
+		}
+	
+  $code = "  \$items = " . features_var_export($items, '  ') . ";\n";
+  $code .= '  return $items;';
+  
+  return array('workbench_moderation_export_transitions' => $code);
+}
+
+/**
+ * Implementation of COMPONENET_features_revert().
+ */
+function workbench_moderation_states_features_revert($module) {
+  $table = 'workbench_moderation_states';
+  $defaults = features_get_default('workbench_moderation_states', $module);
+  foreach ($defaults as $object) {    
+    workbench_moderation_states_save_states($object);    
+  }
+}
+
+/**
+ * Implementation of COMPONENET_features_rebuild().
+ */
+function workbench_moderation_states_features_rebuild($module) {
+  $table = 'workbench_moderation_states';
+  $defaults = features_get_default('workbench_moderation_states', $module);
+  foreach ($defaults as $object) {    
+    workbench_moderation_states_save_states($object);    
+  }
+}
+
+/**
+ * Implementation of COMPONENET_features_revert().
+ */
+function workbench_moderation_transitions_features_revert($module) {
+  $table = 'workbench_moderation_transitions';
+  $defaults = features_get_default('workbench_moderation_transitions', $module);
+  foreach ($defaults as $machine_name => $true) {
+  	list($from, $to) = explode(':', $machine_name);
+    workbench_moderation_transitions_save_transitions($from, $to);    
+  }
+}
+
+/**
+ * Implementation of COMPONENET_features_rebuild().
+ */
+function workbench_moderation_transitions_features_rebuild($module) {
+  $table = 'workbench_moderation_transitions';
+  $defaults = features_get_default('workbench_moderation_transitions', $module);
+  foreach ($defaults as $machine_name => $true) {
+  	list($from, $to) = explode(':', $machine_name);
+    workbench_moderation_transitions_save_transitions($from, $to);     
+  }
+}
+
+function workbench_moderation_states_save_states($field_data) {
+	$table = 'workbench_moderation_states';
+ 	db_delete('workbench_moderation_states')
+ 		->condition('name', $field_data['name'])
+ 		->execute();
+	drupal_write_record($table, $field_data);
+}
+
+function workbench_moderation_transitions_save_transitions($from, $to) {
+	$table = 'workbench_moderation_transitions';
+ 	db_delete('workbench_moderation_transitions')
+ 		->condition('from_name', $from)
+ 		->condition('to_name', $to)
+ 		->execute();
+  $record = array('from_name' => $from, 'to_name' => $to);
+	drupal_write_record($table, $record);
+}
diff --git a/workbench_moderation/workbench_moderation.module b/workbench_moderation/workbench_moderation.module
index 1d3846d..facf2fa 100644
--- a/workbench_moderation/workbench_moderation.module
+++ b/workbench_moderation/workbench_moderation.module
@@ -1880,3 +1880,24 @@ function workbench_moderation_ctools_plugin_api($module, $api) {
     return array('version' => 1);
   }
 }
+
+/**
+ * Implements hook_features_api().
+ */
+function workbench_moderation_features_api() {
+  return array(
+    'workbench_moderation_states' => array(
+      'name' => t('Workbench States'),
+      'default_hook' => 'workbench_moderation_export_states',
+      'feature_source' => TRUE,
+      'default_file' => FEATURES_DEFAULTS_INCLUDED,
+    ),
+    'workbench_moderation_transitions' => array(
+      'name' => t('Workbench Transitions'),
+      'default_hook' => 'workbench_moderation_export_transitions',
+      'feature_source' => TRUE,
+      'default_file' => FEATURES_DEFAULTS_INCLUDED,
+    ),
+  );
+}
+
