diff --git a/tests/webform.test b/tests/webform.test
index 9bd7898..cd10225 100644
--- a/tests/webform.test
+++ b/tests/webform.test
@@ -925,7 +925,6 @@
         'confirmation' => 'Thanks!',
         'confirmation_format' => filter_default_format(),
         'redirect_url' => '<confirmation>',
-        'teaser' => '0',
         'allow_draft' => '1',
         'submit_text' => '',
         'submit_limit' => '-1',
diff --git a/webform.api.php b/webform.api.php
index a8e516e..48751f6 100644
--- a/webform.api.php
+++ b/webform.api.php
@@ -594,7 +594,7 @@
  * @see webform_node_defaults()
  */
 function hook_webform_node_defaults_alter(&$defaults) {
-  $defaults['teaser'] = '1';
+  $defaults['allow_draft'] = '1';
 }
 
 /**
diff --git a/webform.install b/webform.install
index 93bab1c..36ea1bd 100644
--- a/webform.install
+++ b/webform.install
@@ -51,13 +51,6 @@
          'not null' => TRUE,
          'default' => 0,
       ),
-      'teaser' => array(
-        'description' => 'Boolean value for whether the entire form should be displayed on the teaser.',
-        'type' => 'int',
-        'size' => 'tiny',
-        'not null' => TRUE,
-        'default' => 0,
-      ),
       'allow_draft' => array(
          'description' => 'Boolean value for whether submissions to this form be saved as a draft.',
          'type' => 'int',
@@ -1508,3 +1501,13 @@
     return t('New webform columns added.');
   }
 }
+
+/**
+ * Add progress bar columns to the webform table.
+ */
+function webform_update_7410() {
+  if (db_field_exists('webform', 'teaser')) {
+    db_drop_field('webform', 'teaser');
+    return t('Removed "teaser" column. All forms that had the "Show form in teaser" option disabled will now show forms in their teasers. Use view modes to hide the form if desired.');
+  }
+}
diff --git a/webform.module b/webform.module
index 00e95e6..03ee965 100644
--- a/webform.module
+++ b/webform.module
@@ -625,7 +625,7 @@
       'render element' => 'webform',
     ),
     'webform_view_messages' => array(
-      'variables' => array('node' => NULL, 'teaser' => NULL, 'page' => NULL, 'submission_count' => NULL, 'user_limit_exceeded' => NULL, 'total_limit_exceeded' => NULL, 'allowed_roles' => NULL, 'closed' => NULL, 'cached' => NULL),
+      'variables' => array('node' => NULL, 'page' => NULL, 'submission_count' => NULL, 'user_limit_exceeded' => NULL, 'total_limit_exceeded' => NULL, 'allowed_roles' => NULL, 'closed' => NULL, 'cached' => NULL),
     ),
     'webform_form' => array(
       'render element' => 'form',
@@ -1460,7 +1460,6 @@
     'confirmation' => '',
     'confirmation_format' => NULL,
     'redirect_url' => '<confirmation>',
-    'teaser' => '0',
     'block' => '0',
     'allow_draft' => '0',
     'auto_save' => '0',
@@ -1644,12 +1643,8 @@
     return;
   }
 
-  // Set teaser and page variables a la Drupal 6.
-  $teaser = $view_mode == 'teaser';
-  $page = arg(0) == 'node' && arg(1) == $node->nid;
-
-  // If empty, a teaser, or a new node (during preview) do not display.
-  if (empty($node->webform['components']) || ($teaser && !$node->webform['teaser']) || empty($node->nid)) {
+  // If empty or a new node (during preview) do not display.
+  if (empty($node->webform['components']) || empty($node->nid)) {
     return;
   }
 
@@ -1661,6 +1656,7 @@
   $info = array();
   $submission = array();
   $submission_count = 0;
+  $page = node_is_page($node);
   $enabled = TRUE;
   $logging_in = FALSE;
   $total_limit_exceeded = FALSE;
@@ -1669,7 +1665,7 @@
   $allowed_roles = array();
 
   // If a teaser, tell the form to load subsequent pages on the node page.
-  if ($teaser && !isset($node->webform['action'])) {
+  if ($view_mode == 'teaser' && !isset($node->webform['action'])) {
     $query = array_diff_key($_GET, array('q' => ''));
     $node->webform['action'] = url('node/' . $node->nid, array('query' => $query));
   }
@@ -1755,14 +1751,13 @@
 
   // Print out messages for the webform.
   if (empty($node->in_preview) && !isset($node->webform_block) && !$logging_in) {
-    theme('webform_view_messages', array('node' => $node, 'teaser' => $teaser, 'page' => $page, 'submission_count' => $submission_count, 'user_limit_exceeded' => $user_limit_exceeded, 'total_limit_exceeded' => $total_limit_exceeded, 'allowed_roles' => $allowed_roles, 'closed' => $closed, 'cached' => $cached));
+    theme('webform_view_messages', array('node' => $node, 'page' => $page, 'submission_count' => $submission_count, 'user_limit_exceeded' => $user_limit_exceeded, 'total_limit_exceeded' => $total_limit_exceeded, 'allowed_roles' => $allowed_roles, 'closed' => $closed, 'cached' => $cached));
   }
 
   // Add the output to the node.
   $node->content['webform'] = array(
     '#theme' => 'webform_view',
     '#node' => $node,
-    '#teaser' => $teaser,
     '#page' => $page,
     '#form' => $form,
     '#enabled' => $enabled,
@@ -1775,8 +1770,6 @@
  *
  * @param $node
  *   The webform node object.
- * @param $teaser
- *   If this webform is being displayed as the teaser view of the node.
  * @param $page
  *   If this webform node is being viewed as the main content of the page.
  * @param $form
@@ -1796,8 +1789,6 @@
  *
  * @param $node
  *   The webform node object.
- * @param $teaser
- *   If this webform is being displayed as the teaser view of the node.
  * @param $page
  *   If this webform node is being viewed as the main content of the page.
  * @param $submission_count
@@ -1816,7 +1807,6 @@
   global $user;
 
   $node = $variables['node'];
-  $teaser = $variables['teaser'];
   $page = $variables['page'];
   $submission_count = $variables['submission_count'];
   $user_limit_exceeded = $variables['user_limit_exceeded'];
@@ -1976,8 +1966,7 @@
     $content = $node->content['webform'];
   }
   else {
-    $teaser = ($settings['display'] == 'teaser') ? 'teaser' : 'full';
-    $content = node_view($node, $teaser);
+    $content = node_view($node, $settings['display']);
   }
 
   // Add contextual links for the webform node if they aren't already there.
@@ -1999,32 +1988,44 @@
  * Implements hook_block_configure().
  */
 function webform_block_configure($delta = '') {
+  $nid = str_replace('client-block-', '', $delta);
+  $node = node_load($nid);
+
   // Load the block-specific configuration settings.
   $webform_blocks = variable_get('webform_blocks', array());
   $settings = isset($webform_blocks[$delta]) ? $webform_blocks[$delta] : array();
   $settings += array(
     'display' => 'form',
-    'pages_block' => 0,
+    'pages_block' => 1,
   );
+
+  // Build a list of view modes for this node.
+  $entity_info = entity_get_info('node');
+  $view_modes = array(
+    'form' => t('Form only'),
+  );
+  foreach ($entity_info['view modes'] as $view_mode_key => $view_mode_info) {
+    $view_modes[$view_mode_key] = $view_mode_info['label'];
+  }
 
   $form = array();
   $form['display'] = array(
-    '#type' => 'radios',
-    '#title' => t('Display mode'),
+    '#type' => 'select',
+    '#title' => t('View mode'),
     '#default_value' => $settings['display'],
-    '#options' => array(
-      'form' => t('Form only'),
-      'full' => t('Full node'),
-      'teaser' => t('Teaser'),
-    ),
-    '#description' => t('The display mode determines how much of the webform to show within the block.'),
+    '#options' => $view_modes,
+    '#description' => t('The view mode determines how much of the webform to show within the block. You may <a href="!view_modes">customize different view modes</a> (other than the "Form only" mode) or even create new custom view modes if either the <a href="http://drupal.org/project/entity_view_mode">Entity view modes</a> or <a href="http://drupal.org/project/ds">Display Suite</a> modules are installed.', array('!view_modes' => url('admin/structure/types/manage/' . $node->type . '/display'))),
   );
 
   $form['pages_block'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Show all webform pages in block'),
+    '#type' => 'radios',
+    '#title' => t('Multi-page handling'),
+    '#options' => array(
+      1 => t('Display all pages inside block'),
+      0 => t('Redirect to the node page after the first page'),
+    ),
     '#default_value' => $settings['pages_block'],
-    '#description' => t('By default multi-page webforms redirect to the node page for all pages after the first one. If checked, all pages will be shown in the block instead.'),
+    '#description' => t('If your webform has multiple pages, you may change the behavior of the "Next" button. This will also affect where validation messages show up after an error.'),
   );
 
   return $form;
@@ -2571,7 +2572,7 @@
 
   // Prevent submission by throwing an error.
   if ((!$allowed_role || $total_limit_exceeded || $user_limit_exceeded) && $GLOBALS['user']->uid != 1) {
-    theme('webform_view_messages', array('node' => $node, 'teaser' => 0, 'page' => 1, 'submission_count' => 0, 'user_limit_exceeded' => $user_limit_exceeded, 'total_limit_exceeded' => $total_limit_exceeded, 'allowed_roles' => $allowed_roles, 'closed' => FALSE, 'cached' => FALSE));
+    theme('webform_view_messages', array('node' => $node, 'page' => 1, 'submission_count' => 0, 'user_limit_exceeded' => $user_limit_exceeded, 'total_limit_exceeded' => $total_limit_exceeded, 'allowed_roles' => $allowed_roles, 'closed' => FALSE, 'cached' => FALSE));
     form_set_error('', NULL);
     return;
   }