diff --git vertical_tabs_example/vertical_tabs_example.info vertical_tabs_example/vertical_tabs_example.info
new file mode 100644
index 0000000..7184d20
--- /dev/null
+++ vertical_tabs_example/vertical_tabs_example.info
@@ -0,0 +1,9 @@
+; $Id$
+
+name = Vertical tabs example
+description = Show how to use vertical tabs for enhancing user experience.
+core = 7.x
+package = Example modules
+
+files[] = vertical_tabs_example.module
+files[] = vertical_tabs_example.js
diff --git vertical_tabs_example/vertical_tabs_example.js vertical_tabs_example/vertical_tabs_example.js
new file mode 100644
index 0000000..8796d30
--- /dev/null
+++ vertical_tabs_example/vertical_tabs_example.js
@@ -0,0 +1,26 @@
+// $Id$
+
+(function ($) {
+
+/**
+ * Custom summary for the module vertical tab. It will show "Not defined" untill
+ * a custom string is entered in the textfield.
+ */
+Drupal.behaviors.vertical_tabs_exampleFieldsetSummaries = {
+  attach: function (context) {
+    // Use the fieldset class to identify the vertical tab element
+    $('fieldset.vertical_tabs_example-custom-form', context).setSummary(function (context) {
+      // Depending on the checkbox status, the settings will be customized, so
+      // update the summary with the custom setting textfield string or a use a
+      // default string.
+      if ($('#edit-vertical_tabs_example-enabled', context).attr('checked')) {
+        return Drupal.checkPlain($('#edit-vertical_tabs_example-custom-setting', context).val());
+      }
+      else {
+        return Drupal.t('Using default.');
+      }
+    });
+  }
+};
+
+})(jQuery);
diff --git vertical_tabs_example/vertical_tabs_example.module vertical_tabs_example/vertical_tabs_example.module
new file mode 100644
index 0000000..0aadedd
--- /dev/null
+++ vertical_tabs_example/vertical_tabs_example.module
@@ -0,0 +1,92 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Shows how to use the vertical tabs functionality provided by Drupal 7. This
+ * example does not cover how to save / load custom setting, and only deals with
+ * elements visibility.
+ */
+
+/**
+ * Implement hook_form_alter().
+ *
+ * Adds custom fieldset to the node form, and attach ajax behaviour for vertical
+ * panels to update the settings description.
+ */
+function vertical_tabs_example_form_alter(&$form, $form_state, $form_id) {
+  if (!empty($form['#node_edit_form'])) {
+
+    $form['#submit'][] = 'menu_node_form_submit';
+
+    $form['vertical_tabs_example'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Custom vertical tab'),
+      '#collapsible' => TRUE,
+      '#collapsed' => FALSE,
+      '#group' => 'additional_settings',
+      // Attach the javascript for vertical tabs.
+      '#attached' => array(
+        'js' => array(drupal_get_path('module', 'vertical_tabs_example') . '/vertical_tabs_example.js'),
+      ),
+      '#tree' => TRUE,
+      '#weight' => -2,
+      // The class is used by jquery to identify the element and set the summary
+      // according to its values.
+      '#attributes' => array('class' => array('vertical_tabs_example-custom-form')),
+    );
+
+    // This checkbox is used to show or hide the custom settings form using
+    // javascript (altering states of a container defined later).
+    $form['vertical_tabs_example']['enabled'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Use custom configuration'),
+      '#default_value' => FALSE,
+    );
+
+    // This container will be used to store the whole form for our custom
+    // settings. This way, showing/hidding the form  using javascript is easier,
+    // as only one element should be set visible.
+    $form['vertical_tabs_example']['vertical_tabs_examplecontainer'] = array(
+      '#type' => 'container',
+      '#parents' => array('vertical_tabs_example'),
+      '#states' => array(
+        'invisible' => array(
+          // If the checkbox is not enabled, show the container.
+          'input[name="vertical_tabs_example[enabled]"]' => array('checked' => FALSE),
+        ),
+      ),
+    );
+
+    // The string of this textfield will be shown as summary in the vertical
+    // tab.
+    $form['vertical_tabs_example']['vertical_tabs_examplecontainer']['custom_setting'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Use this custom setting'),
+      '#default_value' => '',
+    );
+  }
+
+}
+
+
+
+/**
+ * Implements hook_menu for a simple explanaton page.
+ */
+function vertical_tabs_example_menu() {
+  $items['examples/vertical_tabs'] = array(
+    'title' => 'Vertical tabs example',
+    'description' => 'Shows how vertical tabs can best be supported by a custom module',
+    'page callback' => '_vertical_tabs_example_explanation',
+    'access callback' => TRUE,
+  );
+  return $items;
+}
+
+/**
+ * Simple explanation page.
+ */
+function _vertical_tabs_example_explanation() {
+  return t("The Vertical Tabs Example shows how a custom module can best support vertical tabs. To see the effects of this module, look at the <a href='!node_add'>node/add</a> form", array('!node_add' => url('node/add')));
+}
\ No newline at end of file
