diff --git a/semantic_fields.info b/semantic_fields.info
index dbe1606..6850dc5 100644
--- a/semantic_fields.info
+++ b/semantic_fields.info
@@ -1,7 +1,6 @@
 name = Semantic Fields
 description = "Provides semantic HTML output settings for each field type."
-configure = admin/config/content/semantic-field-formats
 package = Fields
 dependencies[] = field
-dependencies[] = field_ui
-core = 7.x
\ No newline at end of file
+dependencies[] = ctools
+core = 7.x
diff --git a/semantic_fields.install b/semantic_fields.install
index 6de0ca6..3b59b49 100644
--- a/semantic_fields.install
+++ b/semantic_fields.install
@@ -20,10 +20,26 @@ function semantic_fields_schema() {
   $schema = array();
 
   $schema['semantic_fields_preset'] = array(
+    'description' => t('Table storing preset definitions.'),
+    'export' => array(
+      'key' => 'name',
+      'key name' => 'Name',
+      'primary key' => 'id',
+      'identifier' => 'preset',
+      'default hook' => 'default_semantic_fields_preset',
+      'load callback' => 'semantic_fields_preset_load',
+      'api' => array(
+        'owner' => 'semantic_fields',
+        'api' => 'semantic_fields',
+        'minimum_version' => 1,
+        'current_version' => 1,
+      ),
+    ),
     'fields' => array(
       'id' => array(
         'type' => 'serial',
         'not null' => TRUE,
+        'no export' => TRUE, // Do not export database-only keys.
       ),
       'name' => array(
         'type' => 'varchar',
@@ -31,11 +47,10 @@ function semantic_fields_schema() {
         'not null' => TRUE,
         'default' => '',
       ),
-      'human_name' => array(
+      'admin_title' => array(
         'type' => 'varchar',
-        'length' => 255,
-        'not null' => TRUE,
-        'default' => '',
+        'length' => '32',
+        'description' => 'The administrative title.',
       ),
       'description' => array(
         'type' => 'text',
@@ -56,4 +71,13 @@ function semantic_fields_schema() {
   );
 
   return $schema;
-}
\ No newline at end of file
+}
+
+
+/**
+ * Change name of field name in database
+ */
+function semantic_fields_update_7001() {
+  db_change_field('semantic_fields_preset', 'human_name', 'admin_title', array('type' => 'varchar',
+             'length' => 255, 'not null' => TRUE,));
+}
diff --git a/semantic_fields.module b/semantic_fields.module
index 9b63ab3..ed551a3 100644
--- a/semantic_fields.module
+++ b/semantic_fields.module
@@ -1,56 +1,5 @@
 <?php
 /**
- * Implementation of hook_menu()
- */
-function semantic_fields_menu() {
-  $items = array();
-
-  $items['admin/config/content/semantic-field-formats'] = array(
-    'title' => 'Field formats',
-    'description' => 'Configure customized, semantic rich formats for use when displaying fields.',
-    'page callback' => 'semantic_fields_preset_list',
-    'access arguments' => array('administer semantic fields'),
-    'type' => MENU_NORMAL_ITEM,
-    'file' => 'semantic_fields.admin.inc',
-  );
-  $items['admin/config/content/semantic-field-formats/list'] = array(
-    'title' => 'List',
-    'page callback' => 'semantic_fields_preset_list',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'file' => 'semantic_fields.admin.inc',
-    'weight' => '-1'
-  );
-  $items['admin/config/content/semantic-field-formats/add'] = array(
-    'title' => 'Add field format',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('semantic_fields_preset_form'),
-    'access arguments' => array('administer semantic fields'),
-    'type' => MENU_LOCAL_ACTION,
-    'file' => 'semantic_fields.admin.inc',
-  );
-  foreach (semantic_fields_get_presets() as $preset) {
-    $items['admin/config/content/semantic-field-formats/' . $preset['name'] . '/edit'] = array(
-      'title' => 'Edit field format',
-      'page callback' => 'drupal_get_form',
-      'page arguments' => array('semantic_fields_preset_form', 4),
-      'access arguments' => array('administer semantic fields'),
-      'type' => MENU_CALLBACK,
-      'file' => 'semantic_fields.admin.inc',
-    );
-    $items['admin/config/content/semantic-field-formats/' . $preset['name'] . '/delete'] = array(
-      'title' => 'Delete field format',
-      'page callback' => 'drupal_get_form',
-      'page arguments' => array('semantic_fields_preset_delete_form', 4),
-      'access arguments' => array('administer semantic fields'),
-      'type' => MENU_CALLBACK,
-      'file' => 'semantic_fields.admin.inc',
-    );
-  }
-
-  return $items;
-}
-
-/**
  * Implementation of hook_permission()
  */
 function semantic_fields_permission() {
@@ -95,7 +44,6 @@ function semantic_fields_field_ui_display_overview_form_submit(&$form, &$form_st
   $entity_type = $form['#entity_type'];
   $bundle = $form['#bundle'];
   $view_mode = $form['#view_mode'];
-
   foreach ($form['#fields'] as $field_name) {
     // Retrieve the stored instance settings to merge with the incoming values.
     $instance = field_read_instance($entity_type, $field_name, $bundle);
@@ -113,47 +61,40 @@ function semantic_fields_field_formatter_info_alter(&$info) {
   }
 }
 
+/**
+ * Load all the presets, from file or database
+ */
 function semantic_fields_get_presets() {
-  $results = db_select('semantic_fields_preset', 'p', array('fetch' => PDO::FETCH_ASSOC))
-    ->fields('p')
-    ->orderBy('human_name')
-    ->execute();
-
+  ctools_include('export');
+  $results = ctools_export_load_object('semantic_fields_preset','all', array());
   $presets = array();
-  while ($preset = $results->fetchAssoc()) {
-    $preset['data'] = unserialize($preset['data']);
+  foreach ($results as $result) {
+    $preset['name'] = $result->name;
+    $preset['admin_title'] = $result->admin_title; 
+    $preset['description'] = $result->description;
+    $preset['data'] = $result->data;
     $presets[] = $preset;
   }
-
-  return $presets;
+ return $presets;
 }
 
+/**
+ * Load specific/s preset
+ */
 function semantic_fields_preset_load($name) {
-  $presets = &drupal_static(__FUNCTION__, array());
-
-  if (!isset($presets[$name])) {
-    $preset = db_select('semantic_fields_preset', 'p')
-      ->fields('p')
-      ->condition('name', $name)
-      ->execute()
-      ->fetchAssoc();
-    if ($preset) {
-      $preset['data'] = unserialize($preset['data']);
-      $presets[$name] = $preset;
-    }
+  ctools_include('export');
+  $result = ctools_export_load_object('semantic_fields_preset','names', array($name));
+  if (isset($result[$name])) {
+    return $result[$name];
   }
-
-  return (isset($presets[$name]) && !empty($presets[$name])) ? $presets[$name] : array();
 }
 
 function semantic_fields_get_preset_options() {
   $presets = semantic_fields_get_presets();
-
   $options = array();
   foreach($presets as $preset) {
-    $options[$preset['name']] = $preset['human_name'];
+    $options[$preset['name']] = $preset['admin_title'];
   }
-  
   return $options;
 }
 
@@ -211,7 +152,7 @@ function semantic_fields_preprocess_field(&$variables) {
     );
   }
   else {
-    $settings = $preset['data'];
+    $settings = $preset->data;
   }
 
   // Provide Semantic Fields field template suggestions.
@@ -352,7 +293,18 @@ function semantic_fields_theme($existing, $type, $theme, $path) {
 
 function theme_semantic_field(&$variables) {
   $output = '';
-
+  // Token support for nodes
+  if (module_exists('token') == TRUE) {
+    global $user;
+    
+    if (arg(0) == 'node') {
+      $nid = arg(1);
+    }
+    if (isset($nid)) {
+      $node = node_load($nid);
+      $data = array('node' => $node, 'user' => $user);
+    }
+  }  
   // Render the label, if it's not hidden.
   if (!$variables['label_hidden']) {
     if (!empty($variables['label_element'])) {
@@ -363,7 +315,6 @@ function theme_semantic_field(&$variables) {
       $output .= '</' . $variables['label_element'] . '>';
     }
   }
-
   // Render the items.
   if (!empty($variables['content_element'])) {
     $output .= '<' . $variables['content_element'] . ' class="' . $variables['content_classes'] . '"' . $variables['content_attributes'] . '>';
@@ -375,8 +326,7 @@ function theme_semantic_field(&$variables) {
     $output .= drupal_render($item);
     if ($variables['item_element']) {
       $output .= '</' . $variables['item_element'] . '>';
-    }
-    
+    } 
     if (!empty($variables['item_separator']) && $delta < (count($variables['items']) - 1)) {
       $output .= $variables['item_separator'];
     }
@@ -384,12 +334,10 @@ function theme_semantic_field(&$variables) {
   if (!empty($variables['content_element'])) {
     $output .= '</' . $variables['content_element'] . '>';
   }
-  
   // Render the top-level DIV.
   if (!empty($variables['field_element'])) {
     $output = '<' . $variables['field_element'] . ' class="' . $variables['classes'] . '"' . $variables['attributes'] . '>' . $output . '</' . $variables['field_element'] . '>';
   }
-  
   // Add a prefix and suffix to the field, if specified
   if (!empty($variables['field_prefix'])) {
     $output = $variables['field_prefix'] . $output;
@@ -397,6 +345,30 @@ function theme_semantic_field(&$variables) {
   if (!empty($variables['field_suffix'])) {
     $output .= $variables['field_suffix'];
   }
+  if (isset($nid)) {
+    return token_replace($output, $data);
+  }
+  else {
+    return $output; 
+  }
+}
 
-  return $output;
-}
\ No newline at end of file
+/**
+* Implementats hook_ctools_plugin_api().
+*/
+function semantic_fields_ctools_plugin_api($owner, $api) {
+  if ($owner == 'semantic_fields' && $api == 'semantic_fields') {
+    return array('version' => 1);
+  }
+}
+
+/**
+ * Implements hook_ctools_plugin_directory().
+ */
+  function semantic_fields_ctools_plugin_directory($module, $type) {
+    // Load the export_ui plugin.
+    if ($type =='export_ui') {
+      return 'plugins/export_ui';
+    }
+  }
+  
\ No newline at end of file
