diff --git a/sharethis.module b/sharethis.module
index 162f047..16332f6 100644
--- a/sharethis.module
+++ b/sharethis.module
@@ -9,9 +9,9 @@
  *
  * Displays help and module information.
  *
- * @param path 
+ * @param path
  *   Which path of the site we're using to display help
- * @param arg 
+ * @param arg
  *   Array that holds the current path as returned from arg() function
  */
 function sharethis_help($path, $arg) {
@@ -38,7 +38,7 @@ function sharethis_help($path, $arg) {
 function sharethis_permission() {
   return array(
     'administer sharethis' => array(
-      'title' => t('Administer ShareThis'), 
+      'title' => t('Administer ShareThis'),
       'description' => t('Change the settings for how ShareThis behaves on the site.'),
     ),
   );
@@ -59,7 +59,7 @@ function sharethis_configuration_form($form, &$form_state) {
   drupal_add_css($my_path . '/stlib_picker.css');
   $current_options_array = sharethis_get_options_array();
   global $base_url;
-  
+
   // Create the variables related to widget choice.
   $widget_type = $current_options_array['widget'];
   $widget_markup = "";
@@ -77,21 +77,15 @@ function sharethis_configuration_form($form, &$form_state) {
     $service_string_markup .= "\"" . $key . "\",";
   }
   $service_string_markup = substr($service_string_markup, 0, -1);
-  
-  // Create an array of node types.
-  $node_type_array = node_type_get_types();
-  $node_type_options = array();
-  foreach ($node_type_array as $k => $v) {
-    $node_type_options[$k] = $v->name;
-  }
-  // Figure out which nodeTypes are currently selected
-  $nodes_string = $current_options_array['nodeType'];
-  $nodes_selected = explode(",", $nodes_string);
+
   // Create the variables for publisher keys.
   $publisher = $current_options_array['publisherID'];
   // Create the variables for teasers.
-  $teaser = $current_options_array['viewMode'] == "1" ? TRUE : FALSE;
-  
+
+  // Get a list of content types and view modes
+  $view_modes = sharethis_get_view_mode_info();
+  $view_modes_selected = $current_options_array['viewModes'];
+
   $form = array();
   $form['options'] = array(
     '#type' => 'fieldset',
@@ -152,20 +146,15 @@ function sharethis_configuration_form($form, &$form_state) {
     '#group' => 'additional_settings',
     '#description' => t('Configure where the ShareThis widget should appear.'),
   );
-  $form['context']['sharethis_node_option'] = array(
-    '#title' => t("Node types"),
-    '#description' => t('Select which nodes the ShareThis widget should appear on.'),
-    '#required' => TRUE,
-    '#type' => 'checkboxes',
-    '#options' => $node_type_options,
-    '#default_value' => $nodes_selected
-  );
-  $form['context']['sharethis_teaser_option'] = array(
-    '#title' => t('Only full view'),
-    '#type' => 'checkbox',
-    '#default_value' => $teaser ? 1 : 0,
-    '#description' => t('When checked, will not show the widget on node teasers.'),
-  );
+  foreach($view_modes as $k => $v){
+    $form['context']['sharethis_' .$k .'_options'] = array(
+      '#title' => t($v['label']. ' View Modes'),
+      '#description' => t('Select which view modes the ShareThis widget should appear on for ' . $v['label'] . ' nodes.'),
+      '#type' => 'checkboxes',
+      '#options' => $v['modes'],
+      '#default_value' => $view_modes_selected[$k],
+    );
+  }
   $form['context']['sharethis_location'] = array(
     '#title' => t('Location'),
     '#type' => 'radios',
@@ -207,30 +196,42 @@ function sharethis_configuration_form($form, &$form_state) {
 }
 
 /**
+ * Retrieves an array containing each content type mapped to display modes.
+ */
+function sharethis_get_view_mode_info(){
+  $options = array();
+  // Get full entity information, allowing all hooks including display suite to fire
+  $info = entity_get_info('node');
+  // Clean up the array for use in the settings form
+  foreach($info['bundles'] as $bundle => $data){
+    $options[$bundle] = array();
+    foreach($info['view modes'] as $mode => $values){
+      $options[$bundle]['label'] = $data['label'];
+      $options[$bundle]['modes'][$mode] = $values['label'];
+    }
+  }
+  return $options;
+}
+
+/**
  * Form submission handler for sharethis_configuration_form().
  */
 function sharethis_configuration_form_validate($form, &$form_state) {
   //Additional filters for the service option input
-  
+
   // Sanitize the publisher ID option.  Since it's a text field, remove anything that resembles code
   $form_state['values']['sharethis_service_option'] = filter_xss($form_state['values']['sharethis_service_option'], array());
 
   //Additional filters for the option extras input
   $form_state['values']['sharethis_option_extras'] = (isset($form_state['values']['sharethis_option_extras'])) ? $form_state['values']['sharethis_option_extras'] : array();
 
-  // Implode the node options
-  $form_state['values']['sharethis_node_option'] = implode(',', $form_state['values']['sharethis_node_option']);
-
-  // Set a default value for the teaser option
-  $form_state['values']['sharethis_teaser_option'] = (isset($form_state['values']['sharethis_teaser_option'])) ? $form_state['values']['sharethis_teaser_option'] : 0;
-
   // Sanitize the publisher ID option.  Since it's a text field, remove anything that resembles code
   $form_state['values']['sharethis_publisherID'] = filter_xss($form_state['values']['sharethis_publisherID'], array());
 
   // Ensure default value for twitter suffix
   $form_state['values']['sharethis_twitter_suffix'] = (isset($form_state['values']['sharethis_twitter_suffix'])) ? $form_state['values']['sharethis_twitter_suffix'] : '';
 }
- 
+
  /**
  * Implements hook_menu.
  *
@@ -253,21 +254,22 @@ function sharethis_menu() {
  * Inserts ShareThis widget code onto each node view.
  * TODO: Want to add the option somewhere to select nodes.
  *
- * @param node 
+ * @param node
  *   The node that is being acted upon
- * @param view_mode 
+ * @param view_mode
  *   The type of view (teaser, full, etc)
  * @param langcode
  *   Information about the language
  */
 function sharethis_node_view($node, $view_mode, $langcode) {
-  // Don't display if searched
-  if ($view_mode == 'search_result' || $view_mode == 'search_index') {
-    return;
-  }
+
   // First get all of the options for the sharethis widget from the database:
   $data_options = sharethis_get_options_array();
-  
+
+  if($view_mode !== $data_options['viewModes'][$node->type][$view_mode]){
+    return;
+  }
+
   // This looks to see if the path variable has been posted by some rewrite module.
   // This is not super efficient, O(N), but N is often less than 20.
   $is_path = FALSE;
@@ -293,43 +295,35 @@ function sharethis_node_view($node, $view_mode, $langcode) {
   // Get the full path to insert into the Share Buttons.
   $mPath = $base_url . $path_module;
   $mTitle = $node->title;
-  
-  // Only display the ShareThis buttons if this node fits all the requirements
-  if (strpos($data_options['nodeType'], $node->type) !== FALSE) { // Make sure this is the right type of node.
-    if (($data_options['viewMode'] == "1") && ($view_mode == "teaser")) { // If "don't show for teaser" is enabled, and this is a teaser, don't do anything
-      // Do nothing.
-    } 
-    else {
-      // Check where we want to display the ShareThis widget.
-      switch (variable_get('sharethis_location', 'content')) {
-        case 'content':
-          $node->content['sharethis'] = array(
-            '#tag' => 'div', // Wrap it in a div.
-            '#type' => 'html_tag',
-            '#attributes' => array('class' => 'sharethis-buttons'),
-            '#value' => sharethis_get_button_HTML($data_options, $mPath, $mTitle),
-            '#weight' => intval(variable_get('sharethis_weight', 10)),
-          );
-        break;
-        case 'links':
-          $links['sharethis'] = array(
-            'html' => TRUE,
-            'title' => sharethis_get_button_HTML($data_options, $mPath, $mTitle),
-            'attributes' => array('class' => 'sharethis-buttons'),
-          );
-          $node->content['links']['sharethis'] = array(
-            '#theme' => 'links',
-            '#links' => $links,
-            '#attributes' => array(
-              'class' => array('links', 'inline'),
-            ),
-            '#tag' => 'div', // Wrap it in a div.
-            '#type' => 'html_tag',
-            '#weight' => intval(variable_get('sharethis_weight', 10)),
-          );
-        break;
-      }
-    }
+
+  // Check where we want to display the ShareThis widget.
+  switch (variable_get('sharethis_location', 'content')) {
+    case 'content':
+      $node->content['sharethis'] = array(
+        '#tag' => 'div', // Wrap it in a div.
+        '#type' => 'html_tag',
+        '#attributes' => array('class' => 'sharethis-buttons'),
+        '#value' => sharethis_get_button_HTML($data_options, $mPath, $mTitle),
+        '#weight' => intval(variable_get('sharethis_weight', 10)),
+      );
+    break;
+    case 'links':
+      $links['sharethis'] = array(
+        'html' => TRUE,
+        'title' => sharethis_get_button_HTML($data_options, $mPath, $mTitle),
+        'attributes' => array('class' => 'sharethis-buttons'),
+      );
+      $node->content['links']['sharethis'] = array(
+        '#theme' => 'links',
+        '#links' => $links,
+        '#attributes' => array(
+          'class' => array('links', 'inline'),
+        ),
+        '#tag' => 'div', // Wrap it in a div.
+        '#type' => 'html_tag',
+        '#weight' => intval(variable_get('sharethis_weight', 10)),
+      );
+    break;
   }
 }
 
@@ -341,15 +335,18 @@ function sharethis_node_view($node, $view_mode, $langcode) {
  * @TODO: Switch from this function to just straight variable_get() calls.
  */
 function sharethis_get_options_array() {
+  $view_modes = array();
+  foreach(array_keys(node_type_get_types()) as $type){
+    $view_modes[$type] = variable_get('sharethis_' . $type . '_options', array());
+  }
   return array(
     'buttons' => variable_get('sharethis_button_option', 'stbc_large'),
-    'nodeType' => variable_get('sharethis_node_option', 'page,article'),
     'publisherID' => variable_get('sharethis_publisherID', ''),
     'services' => variable_get('sharethis_service_option', '"Tweet:twitter","Facebook:facebook","ShareThis:sharethis"'),
     'option_extras' => variable_get('sharethis_option_extras', array()),
-    'viewMode' => variable_get('sharethis_teaser_option', 0),
     'widget' => variable_get('sharethis_widget_option', 'st_multi'),
     'twitter_suffix' => variable_get('sharethis_twitter_suffix', ''),
+    'viewModes' => $view_modes,
   );
 }
 
