diff --git a/textformatter.module b/textformatter.module
index b336978..ad5c081 100755
--- a/textformatter.module
+++ b/textformatter.module
@@ -21,6 +21,14 @@ function textformatter_field_formatter_info() {
         'textformatter_comma_tag' => 'div',
       ),
     ),
+    'textformatter_custom' => array(
+      'label' => t('Custom'),
+      'field types' => array('text', 'number_decimal', 'number_float'),
+      'settings' => array(
+        'textformatter_custom_tag' => 'span',
+        'textformatter_custom_class' => '',
+      ),
+    ),
   );
 }
 
@@ -98,6 +106,36 @@ function textformatter_field_formatter_settings_form($field, $instance, $view_mo
       '#element_validate' => array('_textformatter_validate_class'),
     );
   }
+  elseif ($display['type'] == 'textformatter_custom') {
+    $form['textformatter_custom_tag'] = array(
+      '#title' => t('Wrapper'),
+      '#type' => 'select',
+      '#options' => array(
+        'div' => 'DIV',
+        'span' => 'SPAN',
+        'h1' => 'H1',
+        'h2' => 'H2',
+        'h3' => 'H3',
+        'h4' => 'H4',
+        'h5' => 'H5',
+        'h6' => 'H6',
+        'p' => 'P',
+        'pre' => 'PRE',
+        'address' => 'ADDRESS',
+      ),
+      '#default_value' => $settings['textformatter_custom_tag'],
+      '#required' => TRUE,
+    );
+    $form['textformatter_custom_class'] = array(
+      '#title' => t('Class'),
+      '#type' => 'textfield',
+      '#size' => 40,
+      '#description' => t("A CSS class to use in the markup for the field tag."),
+      '#default_value' => $settings['textformatter_custom_class'],
+      '#required' => FALSE,
+      '#element_validate' => array('_textformatter_validate_class'),
+    );
+  }
 
   return $form;
 }
@@ -126,9 +164,9 @@ function textformatter_field_formatter_settings_summary($field, $instance, $view
   $display = $instance['display'][$view_mode];
   $settings = $display['settings'];
 
-  $summary = array();
-
   if ($display['type'] == 'textformatter_list') {
+    $summary = array();
+    
     switch ($settings['textformatter_type']) {
       case 'ul':
         $summary[] = t("Unordered HTML list");
@@ -147,6 +185,12 @@ function textformatter_field_formatter_settings_summary($field, $instance, $view
 
     $summary = theme('item_list', array('type' => 'ul', 'items' => $summary));
   }
+  elseif ($display['type'] == 'textformatter_custom') {
+    $summary = strtoupper($settings['textformatter_custom_tag']);
+    if ($settings['textformatter_custom_class']) {
+      $summary = '.' . check_plain($settings['textformatter_custom_class']);
+    }
+  }
 
   return $summary;
 }
@@ -215,6 +259,17 @@ function textformatter_field_formatter_view($entity_type, $entity, $field, $inst
       break;
     }
   }
+  elseif ($display['type'] == 'textformatter_custom') {
+    foreach ($items as $delta => $item) {
+      $prefix = '<' . $settings['textformatter_custom_tag'];
+      if ($settings['textformatter_custom_class']) {
+        $prefix .= ' class="' . $settings['textformatter_custom_class'] . '"';
+      }
+      $prefix .= '>';
+      $suffix = '</' . $settings['textformatter_custom_tag'] . '>';
+      $element[$delta] = array('#markup' => $prefix . $item['value'] . $suffix);
+    }
+  }
 
   return $element;
 }
