diff --git a/bean_admin_ui/bean_admin_ui.admin.inc b/bean_admin_ui/bean_admin_ui.admin.inc
index fb028d6..7a98c13 100644
--- a/bean_admin_ui/bean_admin_ui.admin.inc
+++ b/bean_admin_ui/bean_admin_ui.admin.inc
@@ -17,11 +17,24 @@ function bean_admin_ui_admin_page() {
   foreach (bean_get_types() as $bean_type) {
     $row = array();
     $row[] = array('data' => $bean_type->getLabel());
-
+    if (method_exists($bean_type, 'getExportStatus')) {
+      $export_status = $bean_type->getExportStatus();
+    }
+    else {
+      $export_status = 'Normal';
+    }
+    $row[] = array('data' => $export_status);
     // Edit and delete buttons
     if ($bean_type->isEditable()) {
       $row[] = array('data' => l(t('Edit'), 'admin/structure/block/types/manage/' . $bean_type->buildURL() . '/edit'));
-      $row[] = array('data' => l(t('Delete'), 'admin/structure/block/types/manage/' . $bean_type->buildURL() . '/delete'));
+      switch ($export_status) {
+        case 'Normal':
+          $row[] = array('data' => l(t('Delete'), 'admin/structure/block/types/manage/' . $bean_type->buildURL() . '/delete'));
+          break;
+        case 'Overridden':
+          $row[] = array('data' => l(t('Revert'), 'admin/structure/block/types/manage/' . $bean_type->buildURL() . '/delete'));
+          break;
+      }
     }
 
     if ($field_ui) {
@@ -34,7 +47,7 @@ function bean_admin_ui_admin_page() {
     $rows[] = $row;
   }
 
-  $header = array(t('Name'), array('data' => t('Operations'), 'colspan' => $field_ui ? '6' : '4'));
+  $header = array(t('Name'), t('Status'), array('data' => t('Operations'), 'colspan' => $field_ui ? '6' : '4'));
 
   $build['bean_table'] = array(
     '#theme' => 'table',
@@ -49,19 +62,18 @@ function bean_admin_ui_admin_page() {
  * Generates the bean type editing form.
  */
 function bean_admin_ui_type_form($form, &$form_state, $bean_type = NULL) {
+  $form['new'] = array(
+    '#type' => 'value',
+    '#value' => TRUE,
+  );
   // If bean_type is null then load an empty one
   if (is_null($bean_type)) {
     $plugin_info = _bean_admin_default_plugin();
     $plugin_info['name'] = '';
 
     $bean_type = new bean_custom($plugin_info);
-
-    $form['new'] = array(
-      '#type' => 'value',
-      '#value' => TRUE,
-    );
   }
-  else {
+  elseif (!method_exists($bean_type, 'getExportStatus') || $bean_type->getExportStatus() == 'Normal') {
     $form['new'] = array(
       '#type' => 'value',
       '#value' => FALSE,
@@ -73,9 +85,6 @@ function bean_admin_ui_type_form($form, &$form_state, $bean_type = NULL) {
   if ($disabled) {
     drupal_set_message(t('This Block Type can not be edited'));
   }
-
-
-
   $form['bean_type'] = array(
     '#type' => 'value',
     '#value' => $bean_type
@@ -92,7 +101,7 @@ function bean_admin_ui_type_form($form, &$form_state, $bean_type = NULL) {
   );
 
   // Machine-readable type name.
-  $form['type'] = array(
+  $form['name'] = array(
     '#type' => 'machine_name',
     '#default_value' => isset($bean_type->type) ? $bean_type->type : '',
     '#maxlength' => 32,
@@ -131,10 +140,11 @@ function bean_admin_ui_type_form($form, &$form_state, $bean_type = NULL) {
  */
 function bean_admin_ui_type_form_submit(&$form, &$form_state) {
   $bean_type = $form_state['values']['bean_type'];
-  $bean_type->type = $form_state['values']['type'];
+  $bean_type->type = $form_state['values']['name'];
   $bean_type->setLabel($form_state['values']['label']);
   $bean_type->save($form_state['values']['new']);
   $form_state['redirect'] = 'admin/structure/block/types';
+  ctools_include('export');
 }
 
 /**
@@ -150,18 +160,22 @@ function bean_admin_ui_type_form_submit_delete(&$form, &$form_state) {
 function bean_admin_ui_type_delete_confirm($form, &$form_state, $type) {
   $form['type'] = array('#type' => 'value', '#value' => $type);
   $form['name'] = array('#type' => 'value', '#value' => $type->getLabel());
-
-  $message = t('Are you sure you want to delete the block type %type?', array('%type' => $type->getLabel()));
   $caption = '';
-
-  $num_beans = db_query("SELECT COUNT(*) FROM {bean} WHERE type = :type", array(':type' => $type->type))->fetchField();
-  if ($num_beans) {
-    $caption .= '<p>' . format_plural($num_beans, '%type is used by 1 block on your site. If you remove this block type, you will not be able to edit the %type blocks and it may not display correctly.', '%type is used by @count pieces of content on your site. If you remove %type, you will not be able to edit the %type content and it may not display correctly.', array('%type' => $type->getLabel())) . '</p>';
+  if (!method_exists($type, 'getExportStatus') || $type->getExportStatus() == 'Normal') {
+    $message = t('Are you sure you want to delete the block type %type?', array('%type' => $type->getLabel()));
+    $num_beans = db_query("SELECT COUNT(*) FROM {bean} WHERE type = :type", array(':type' => $type->type))->fetchField();
+    if ($num_beans) {
+      $caption .= '<p>' . format_plural($num_beans, '%type is used by 1 block on your site. If you remove this block type, you will not be able to edit the %type blocks and it may not display correctly.', '%type is used by @count pieces of content on your site. If you remove %type, you will not be able to edit the %type content and it may not display correctly.', array('%type' => $type->getLabel())) . '</p>';
+    }
+    $action = t('Delete');
+  }
+  else {
+    $message = t('Are you sure you want to revert the block type %type?', array('%type' => $type->getLabel()));
+    $action = t('Revert');
   }
-
   $caption .= '<p>' . t('This action cannot be undone.') . '</p>';
 
-  return confirm_form($form, $message, 'admin/structure/block/types', $caption, t('Delete'));
+  return confirm_form($form, $message, 'admin/structure/block/types', $caption, $action);
 }
 
 function bean_admin_ui_type_delete_confirm_submit($form, &$form_state) {
diff --git a/bean_admin_ui/bean_admin_ui.install b/bean_admin_ui/bean_admin_ui.install
index 0d9831a..509c450 100644
--- a/bean_admin_ui/bean_admin_ui.install
+++ b/bean_admin_ui/bean_admin_ui.install
@@ -11,8 +11,27 @@
 function bean_admin_ui_schema() {
   $schema['bean_type'] = array(
     'description' => 'Stores information about all defined bean types.',
+    'export' => array(
+      'key' => 'name',
+      'identifier' => 'bean_type',
+      'default hook' => 'bean_admin_ui_types',
+      'admin_title' => 'label',
+      'api' => array(
+        'owner' => 'bean_admin_ui',
+        'api' => 'bean',
+        'minimum_version' => 1,
+        'current_version' => 1,
+      ),
+    ),
     'fields' => array(
-      'type' => array(
+      'type_id' => array(
+        'description' => 'The Type ID of this block. Only used internally by CTools',
+        'type' => 'serial',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'no export' => TRUE,
+      ),
+      'name' => array(
         'description' => 'The machine-readable name of this bean type.',
         'type' => 'varchar',
         'length' => 32,
@@ -25,9 +44,16 @@ function bean_admin_ui_schema() {
         'not null' => TRUE,
         'default' => '',
       ),
+      'options' => array(
+        'description' => 'Block content configuration.',
+        'type' => 'text',
+        'size' => 'big',
+      ),
+    ),
+    'primary key' => array('type_id'),
+    'unique keys' => array(
+      'name' => array('name'),
     ),
-    'primary key' => array('type'),
   );
-
   return $schema;
 }
\ No newline at end of file
diff --git a/bean_admin_ui/bean_admin_ui.module b/bean_admin_ui/bean_admin_ui.module
index 51d4ea6..64af14c 100644
--- a/bean_admin_ui/bean_admin_ui.module
+++ b/bean_admin_ui/bean_admin_ui.module
@@ -85,12 +85,13 @@ function bean_admin_ui_bean_types() {
   $bean_types = bean_admin_ui_get_types();
 
   foreach ($bean_types as $bean_type) {
-    $plugins[$bean_type->type] = array(
+    $plugins[$bean_type->name] = array(
       'label' => $bean_type->label,
-      'type' => $bean_type->type,
+      'type' => $bean_type->name,
+      'export_status' => $bean_type->type,
     );
 
-    $plugins[$bean_type->type] += _bean_admin_default_plugin();
+    $plugins[$bean_type->name] += _bean_admin_default_plugin();
   }
 
   return $plugins;
@@ -105,7 +106,8 @@ function bean_admin_ui_get_types() {
   if (empty($bean_types)) {
     $cache = cache_get('bean_types');
     if (empty($cache->data)) {
-      $bean_types = db_query('SELECT * FROM {bean_type}')->fetchAllAssoc('type');
+      ctools_include('export');
+      $bean_types = ctools_export_load_object('bean_type');
       cache_set('bean_types', $bean_types);
     }
     else {
diff --git a/bean_admin_ui/plugins/custom.inc b/bean_admin_ui/plugins/custom.inc
index 8998153..5af4ebd 100644
--- a/bean_admin_ui/plugins/custom.inc
+++ b/bean_admin_ui/plugins/custom.inc
@@ -9,22 +9,21 @@
  * DO NOT USE THIS BEAN.  ONLY USED FOR THE UI PLUGINS
  */
 class bean_custom extends bean_plugin {
-
   /**
    * Delete the record from the database.
    */
   public function delete() {
-    db_delete('bean')
+    // Delete all beans belonging to this bean type if we are removing
+    // the actual bean.
+    if ($this->getExportStatus() == 'Normal') {
+      db_delete('bean')
       ->condition('type', $this->type)
       ->execute();
-
-    // Delete all fo the beans
+    } 
     db_delete('bean_type')
-      ->condition('type', $this->type)
-      ->execute();
-
+    ->condition('name', $this->type)
+    ->execute();
     field_attach_delete_bundle('bean', $this->type);
-
     drupal_flush_all_caches();
   }
 
@@ -33,16 +32,20 @@ class bean_custom extends bean_plugin {
    */
   public function save($new = FALSE) {
     $bean_type = array(
-      'type' => $this->type,
+      'name' => $this->type,
       'label' => $this->getLabel(),
     );
 
-    $primary_key = $new == FALSE ? 'type' : array();
+    $primary_key = $new == FALSE ? 'name' : array();
     drupal_write_record('bean_type', $bean_type, $primary_key);
     drupal_static_reset('bean_admin_ui_get_types');
 
     bean_reset();
   }
+  
+  public function getExportStatus() {
+    return $this->plugin_info['export_status'];
+  }
 
   /**
    * Set the label
