diff --git a/action_example/CHANGELOG.txt b/action_example/CHANGELOG.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/action_example/CHANGELOG.txt
@@ -0,0 +1 @@
+
diff --git a/action_example/action_example.module b/action_example/action_example.module
index 06ccec6..20638cd 100644
--- a/action_example/action_example.module
+++ b/action_example/action_example.module
@@ -3,18 +3,10 @@
 /**
  * @file
  * Action definition example module.
- */
- 
-/**
- * @defgroup action_example Example: Action
- * @ingroup examples
- * @{
- * Creating actions in Drupal 7
  *
  * Triggers and actions are a matched pair of Drupal features allowing some
  * Drupal programming without using PHP. Using the appropriate action in a
  * specific event, a site administrator can add new functionality.
- *
  * Examples are:
  *  - Send an email after a node is published or edited.
  *  - Display a message after a user has logged in.
@@ -61,10 +53,17 @@
  * - An action which extends the capabilities of node triggers, but limited
  *   to certain events only, and using a customizable option.
  *
- * @see trigger_example
+ * See:
+ *
+ * @todo this is a drupal 6 link
+ * @link http://drupal.org/node/172152 Writing Actions @endlink
+ *
+ * @todo this is a drupal 6 link
+ * @link http://drupal.org/node/199254 Triggers and Actions in Drupal 7 @endlink
+ *
  * @see hook_action_info()
- * @see @link http://drupal.org/node/172152 Writing Actions in Drupal 6 @endlink
- * @see @link http://drupal.org/node/199254 Triggers and Actions in Drupal 6 @endlink
+ * In addition, the @link trigger_example.module Trigger Example @endlink
+ * provides detailed information on how to create a trigger.
  */
 
 /**
@@ -138,7 +137,7 @@
  *       special care in the "presave" hook, in which case a dependent "save"
  *       action should NOT be invoked.
  *
- * @see hook_action_info()
+ * See hook_action_info().
  */
 function action_example_action_info() {
   return array(
@@ -169,7 +168,7 @@ function action_example_action_info() {
 /**
  * Implements hook_menu().
  *
- * Provides a menu entry which explains what the module does.
+ * Simply provide a menu entry which explains what the module does.
  */
 function action_example_menu() {
   $items['examples/action_example'] = array(
@@ -189,37 +188,45 @@ function _action_example_page() {
   return t("The Action Example provides three example actions which can be configured on the <a href='@actions_url'>Actions configuration page</a> and assigned to triggers on the <a href='@triggers_url'>Triggers configuration page</a>.", array('@actions_url' => url('admin/config/system/actions'), '@triggers_url' => url('admin/structure/trigger/node')));
 }
 
-/**
- * Action function for action_example_basic_action.
+/*
+ * Most basic action.
  *
  * This action is not expecting any type of entity object, and can be used with
  * any trigger type or any event.
+ */
+
+/**
+ * Basic example action.
  *
  * @param $entity
  *   An optional entity object.
- * @param $context
+ * @param array $context
  *   Array with parameters for this action: depends on the trigger.
  *
- * @see action_example_action_info()
+ * @ingroup actions
  */
 function action_example_basic_action(&$entity, $context = array()) {
   //
   // In this case we are ignoring the entity and the context. This case of
   // action is useful when your action does not depend on the context, and
   // the function must do something regardless the scope of the trigger.
-  // Simply announces that the action was executed using a message.
+  // Simply announces that the action was executed using a messages.
 
   drupal_set_message(t('action_example_basic_action fired'));
   watchdog('action_example', 'action_example_basic_action fired.');
 }
 
-/**
- * Action function for action_example_unblock_user_action.
+// ---------------------------------------------------------------------------
+/*
+ * A complex action for different trigger types.
  *
  * This action is expecting an entity object user, node or comment. If none of
  * the above is provided (because it was not called from an user/node/comment
  * trigger event, then the action will be taken on the current logged in user.
  *
+ */
+
+/**
  * Unblock an user. This action can be fired from different trigger types:
  * - User trigger: this user will be unblocked.
  * - Node/Comment trigger: the author of the node or comment will be unblocked.
@@ -229,9 +236,11 @@ function action_example_basic_action(&$entity, $context = array()) {
  * @param $entity
  *   An optional user object (could be a user, or an author if context is
  *   node or comment)
- * @param $context
+ * @param array $context
  *   Array with parameters for this action: depends on the trigger. The context
  *   is not used in this example.
+ *
+ * @ingroup actions
  */
 function action_example_unblock_user_action(&$entity, $context = array()) {
 
@@ -253,29 +262,29 @@ function action_example_unblock_user_action(&$entity, $context = array()) {
   drupal_set_message(t('Unblocked user %name', array('%name' => $account->name)));
 }
 
-/**
- * Form function for action_example_node_sticky_action.
+// ---------------------------------------------------------------------------
+/*
+ * A complex action using customization.
  *
- * Since we defined action_example_node_sticky_action as 'configurable' => TRUE,
- * this action requires a configuration form to create/configure the action.
- * In this circumstance, Drupal will attempt to call a function named by
- * combining the action name (action_example_node_sticky_action) and _form, in
- * this case yielding action_example_node_sticky_action_form.
- *
- * In Drupal, actions requiring creation and configuration are called 'advanced
- * actions', because they must be customized to define their functionality.
+ * The next action requires a configuration form to create/configure the action.
+ * In Drupal these are called 'advanced actions', because they must be
+ * customized to define their functionality.
  *
  * The 'action_example_node_sticky_action' allows creating rules to promote and
  * set sticky content created by selected users on certain events. A form is
  * used to configure which user is affected by this action, and this form
  * includes the stanard _validate and _submit hooks.
+ */
+
+
+/**
+ * Generates settings form for action_example_node_sticky_action().
  *
- * @param $context
+ * @param array $context
  *   An array of options of this action (in case it is being edited)
  *
  * @return array $form
  *
- * @see action_example_action_info()
  */
 function action_example_node_sticky_action_form($context) {
   /*
@@ -323,11 +332,8 @@ function action_example_node_sticky_action_submit($form, $form_state) {
 }
 
 /**
- * Action function for action_example_node_sticky_action.
- *
- * Promote and set sticky flag. This is the special action that has been
- * customized using the configuration form, validated with the validation
- * function, and submitted with the submit function.
+ * Promote and set sticky flag action. This is the special action that has been
+ * customized using the configuration form.
  *
  * @param $node
  *   A node object provided by the associated trigger.
@@ -335,6 +341,8 @@ function action_example_node_sticky_action_submit($form, $form_state) {
  *   Array with the following elements:
  *   - 'author': username of the author's content this function will promote and
  *     set as sticky.
+ *
+ * @ingroup actions
  */
 function action_example_node_sticky_action($node, $context) {
   if (function_exists('dsm')) {
@@ -351,6 +359,3 @@ function action_example_node_sticky_action($node, $context) {
     drupal_set_message(t('Set @type %title to sticky and promoted by special action for user %username.', array('@type' => node_type_get_name($node), '%title' => $node->title, '%username' => $account->name)));
   }
 }
-/**
- * @} End of "defgroup action_example".
- */
diff --git a/ajax_example/ajax_example.css b/ajax_example/ajax_example.css
index e1cdc69..68bf370 100644
--- a/ajax_example/ajax_example.css
+++ b/ajax_example/ajax_example.css
@@ -1,17 +1,19 @@
 /*
- * @file
- * CSS for ajax_example.
+ * @file ajax_example.css
+ *   CSS for ajax_example.
  *
  * See @link ajax_example_dependent_dropdown_degrades @endlink for
  * details on what this file does. It is not used in any other example.
  */
  
-/* Hides the next button when not degrading to non-javascript browser */
+/* hide the next button when not degrading to non-javascript browser */
 html.js .next-button { 
   display: none; 
 }
 
-/* Makes the next/choose button align to the right of the select control */
+/* Make the next/choose button align to the right of the select control */
 .form-item-dropdown-first, .form-item-question-type-select {
   display: inline-block;
 }
+
+
diff --git a/ajax_example/ajax_example.js b/ajax_example/ajax_example.js
index 2d06038..2f64d12 100644
--- a/ajax_example/ajax_example.js
+++ b/ajax_example/ajax_example.js
@@ -1,9 +1,10 @@
 /*
- * @file
- * JavaScript for ajax_example.
+ * @file ajax_example.js
+ *   JavaScript for ajax_example.
  *
  * See @link ajax_example_dependent_dropdown_degrades @endlink for
  * details on what this file does. It is not used in any other example.
+ * 
  */
 
 (function($) {
diff --git a/ajax_example/ajax_example.module b/ajax_example/ajax_example.module
index 3c4c197..ca842d3 100644
--- a/ajax_example/ajax_example.module
+++ b/ajax_example/ajax_example.module
@@ -6,8 +6,7 @@
  */
 
 /**
- * @defgroup ajax_example Example: AJAX
- * @ingroup examples
+ * @defgroup ajax_examples AJAX Examples
  * @{
  * These examples show basic AJAX concepts.
  *
@@ -16,14 +15,16 @@
  * @link http://drupal.org/node/752056 AJAX Forms handbook page @endlink.
  *
  * The several examples here demonstrate basic AJAX usage.
- */
+ * @}
+*/
 
 /**
  * Implements hook_menu().
  *
  * Sets up calls to drupal_get_form() for all our example cases.
  *
- * @see menu_example.module for more details on hook_menu().
+ * See @link menu_example.module Menu Example @endlink for more details on
+ * hook_menu().
  */
 function ajax_example_menu() {
   $items = array();
@@ -203,6 +204,11 @@ function ajax_example_intro() {
 }
 
 /**
+ * @ingroup ajax_examples
+ * @{
+ */
+
+/**
  * Simple form whose ajax-enabled 'changethis' member causes a text change
  * in the description of the 'replace_textfield' member.
  * See @link http://drupal.org/node/262422 Form API Tutorial @endlink
@@ -522,8 +528,7 @@ function _ajax_example_get_first_dropdown_options() {
  * Helper function to populate the second dropdown. This would normally be
  * pulling data from the database.
  *
- * @param $key
- *   This will determine which set of options is returned.
+ * @param key. This will determine which set of options is returned.
  *
  * @return array of options
  */
@@ -541,6 +546,4 @@ function _ajax_example_get_second_dropdown_options($key = '') {
     return array();
   }
 }
-/**
- * @} End of "defgroup ajax_example".
- */
+
diff --git a/ajax_example/ajax_example_advanced.inc b/ajax_example/ajax_example_advanced.inc
index 57e6079..182465d 100644
--- a/ajax_example/ajax_example_advanced.inc
+++ b/ajax_example/ajax_example_advanced.inc
@@ -8,7 +8,8 @@
  * new AJAX commands. This is consolidated into a dense page because
  * it's advanced material and because it would spread itself all over creation
  * otherwise.
- */
+ *
+*/
 
 /**
  * Form to display the AJAX Commands.
@@ -227,7 +228,6 @@ function ajax_example_advanced_commands($form, &$form_state) {
 
 /**
  * 'after' callback.
- *
  * @see ajax_command_after()
  */
 function ajax_example_advanced_commands_after_callback($form, $form_state) {
@@ -241,7 +241,6 @@ function ajax_example_advanced_commands_after_callback($form, $form_state) {
 
 /**
  * 'alert' callback.
- *
  * @see ajax_command_alert()
  */
 function ajax_example_advanced_commands_alert_callback($form, $form_state) {
@@ -252,7 +251,6 @@ function ajax_example_advanced_commands_alert_callback($form, $form_state) {
 
 /**
  * 'append' callback.
- *
  * @see ajax_command_append()
  */
 function ajax_example_advanced_commands_append_callback($form, $form_state) {
@@ -266,7 +264,6 @@ function ajax_example_advanced_commands_append_callback($form, $form_state) {
 
 /**
  * 'before' callback.
- *
  * @see ajax_command_before()
  */
 function ajax_example_advanced_commands_before_callback($form, $form_state) {
@@ -280,7 +277,6 @@ function ajax_example_advanced_commands_before_callback($form, $form_state) {
 
 /**
  * 'changed' callback.
- *
  * @see ajax_command_changed()
  */
 function ajax_example_advanced_commands_changed_callback($form, $form_state) {
@@ -299,7 +295,6 @@ function ajax_example_advanced_commands_changed_callback($form, $form_state) {
 
 /**
  * 'css' callback.
- *
  * @see ajax_command_css()
  */
 function ajax_example_advanced_commands_css_callback($form, $form_state) {
@@ -314,7 +309,6 @@ function ajax_example_advanced_commands_css_callback($form, $form_state) {
 
 /**
  * 'data' callback.
- *
  * @see ajax_command_data()
  */
 function ajax_example_advanced_commands_data_callback($form, $form_state) {
@@ -330,7 +324,6 @@ function ajax_example_advanced_commands_data_callback($form, $form_state) {
 
 /**
  * 'html' callback.
- *
  * @see ajax_command_html()
  */
 function ajax_example_advanced_commands_html_callback($form, $form_state) {
@@ -344,7 +337,6 @@ function ajax_example_advanced_commands_html_callback($form, $form_state) {
 
 /**
  * 'prepend' callback.
- *
  * @see ajax_command_prepend()
  */
 function ajax_example_advanced_commands_prepend_callback($form, $form_state) {
@@ -356,7 +348,6 @@ function ajax_example_advanced_commands_prepend_callback($form, $form_state) {
 
 /**
  * 'remove' callback.
- *
  * @see ajax_command_remove()
  */
 function ajax_example_advanced_commands_remove_callback($form, $form_state) {
@@ -375,7 +366,6 @@ function ajax_example_advanced_commands_remove_callback($form, $form_state) {
 
 /**
  * 'restripe' rows callback.
- *
  * Rebuilds the table with the selected number of rows.
  */
 function ajax_example_advanced_commands_restripe_num_rows($form, $form_state) {
@@ -390,7 +380,6 @@ function ajax_example_advanced_commands_restripe_num_rows($form, $form_state) {
 
 /**
  * 'restripe' callback.
- *
  * @see ajax_command_restripe()
  */
 function ajax_example_advanced_commands_restripe_callback($form, $form_state) {
diff --git a/ajax_example/ajax_example_graceful_degradation.inc b/ajax_example/ajax_example_graceful_degradation.inc
index ce83e98..aa2a9ee 100644
--- a/ajax_example/ajax_example_graceful_degradation.inc
+++ b/ajax_example/ajax_example_graceful_degradation.inc
@@ -6,8 +6,7 @@
  */
 
 /**
- * @defgroup ajax_degradation_example Example: AJAX Graceful Degradation
- * @ingroup examples
+ * @defgroup ajax_degradation_examples AJAX Degradation Examples
  * @{
  * These examples show AJAX with graceful degradation when Javascript is not
  * available.
@@ -15,8 +14,14 @@
  * In each of these the key idea is that the form is rebuilt different ways
  * depending on form input. In order to accomplish that, the formbuilder function
  * is in charge of almost all logic.
+ *
+ * @see ajax
+ *
+ * @}
  */
 
+
+
 /**
  * A form with a dropdown whose options are dependent on a
  * choice made in a previous dropdown.
@@ -34,6 +39,9 @@
  * form as if Javascript were not enabled. ajax_example_menu() provides two
  * ways to call this form, one normal ($no_js_use = FALSE) and one simulating
  * Javascript disabled ($no_js_use = TRUE).
+ *
+ * @ingroup ajax_examples
+ * @ingroup ajax_degradation_examples
  */
 function ajax_example_dependent_dropdown_degrades($form, &$form_state, $no_js_use = FALSE) {
   // Get the list of options to populate the first dropdown.
@@ -139,10 +147,9 @@ function ajax_example_dependent_dropdown_degrades_submit($form, &$form_state) {
 }
 
 /**
- * Selects just the second dropdown to be returned for re-rendering.
+ * Selects just the second dropdown to be returned for re-rendering
  *
- * @return
- *   Renderable array (the second dropdown).
+ * @return renderable array (the second dropdown)
  */
 function ajax_example_dependent_dropdown_degrades_first_callback($form, $form_state) {
   return $form['dropdown_second_fieldset']['dropdown_second'];
@@ -159,7 +166,11 @@ function ajax_example_dependent_dropdown_degrades_first_callback($form, $form_st
  *
  * The third $no_js_use argument is strictly for demonstrating operation
  * without javascript, without making the user/developer turn off javascript.
+ *
+ * @ingroup ajax_examples
+ * @ingroup ajax_degradation_examples
  */
+
 function ajax_example_dynamic_sections($form, &$form_state, $no_js_use = FALSE) {
 
   // Attach the CSS and JS we need to show this with and without javascript.
@@ -326,6 +337,10 @@ function ajax_example_dynamic_sections_select_callback($form, $form_state) {
  *   Used for this demonstration only. If true means that the form should be
  *   built using a simulated no-javascript approach (ajax.js will not be
  *   loaded.)
+ *
+ * @ingroup ajax_examples
+ * @ingroup ajax_degradation_examples
+ *
  */
 function ajax_example_wizard($form, &$form_state, $no_js_use = FALSE) {
 
@@ -443,6 +458,7 @@ function ajax_example_wizard_callback($form, $form_state) {
  * In AJAX this is only submitted when the final submit button is clicked,
  * but in the non-javascript situation, it is submitted with every
  * button click.
+ *
  */
 function ajax_example_wizard_submit($form, &$form_state) {
 
@@ -475,7 +491,7 @@ function ajax_example_wizard_submit($form, &$form_state) {
     foreach ($form_state['storage']['values'] as $step => $values) {
       $value_message .= "$step: ";
       foreach ($values as $key => $value) {
-        $value_message .= "$key=$value, ";
+       $value_message .= "$key=$value, ";
       }
     }
     drupal_set_message($value_message);
@@ -503,7 +519,11 @@ function ajax_example_wizard_submit($form, &$form_state) {
  * The $no_js_use argument is simply for demonstration: When set, it prevents
  * '#ajax' from being set, thus making the example behave as if javascript
  * were disabled in the browser.
+ *
+ * @ingroup ajax_examples
+ * @ingroup ajax_degradation_examples
  */
+
 function ajax_example_add_more($form, &$form_state, $no_js_use = FALSE) {
   $form['description'] = array(
     '#markup' => '<div>' . t('This example shows an add-more and a remove-last button. The <a href="!ajax">AJAX version</a> does it without page reloads; the <a href="!multistep">non-js version</a> is the same code but simulates a non-javascript environment, showing it with page reloads.',
@@ -579,7 +599,7 @@ function ajax_example_add_more($form, &$form_state, $no_js_use = FALSE) {
 /**
  * Callback for both ajax-enabled buttons.
  *
- * Selects and returns the fieldset with the names in it.
+ * This simply selects and returns the fieldset with the names in it.
  */
 function ajax_example_add_more_callback($form, $form_state) {
   return $form['names_fieldset'];
@@ -588,7 +608,7 @@ function ajax_example_add_more_callback($form, $form_state) {
 /**
  * Submit handler for the "add-one-more" button.
  *
- * Increments the max counter and causes a rebuild.
+ * It just increments the max counter and causes a rebuild.
  */
 function ajax_example_add_more_add_one($form, &$form_state) {
   $form_state['num_names']++;
@@ -617,6 +637,3 @@ function ajax_example_add_more_submit($form, &$form_state) {
     array('@names' => implode(', ', $form_state['values']['names_fieldset']['name'])) );
   drupal_set_message($output);
 }
-/**
- * @} End of "defgroup ajax_degradation_example".
- */
diff --git a/ajax_example/ajax_example_misc.inc b/ajax_example/ajax_example_misc.inc
index 4cb099e..d7d1b16 100644
--- a/ajax_example/ajax_example_misc.inc
+++ b/ajax_example/ajax_example_misc.inc
@@ -13,10 +13,7 @@
  *
  * When using the AJAX framework outside the context of a form or a renderable
  * array of type 'link', you have to include ajax.js explicitly.
- *
- * @return
- *
- * @ingroup ajax_example
+ * @return unknown_type
  */
 function ajax_example_render_link() {
   // drupal_add_library is invoked automatically when a form element has the
@@ -43,16 +40,14 @@ URL whether JS was enabled or not, letting it do different things based on that.
  * #ajax property.
  *
  * A link that is constructed as a renderable array can have the #ajax property,
- * which ensures that the link submission is done without a page refresh. The
- * href of the link is used as the ajax callback, but it degrades gracefully
- * without JavaScript because if the 'nojs' portion of the href is not stripped
- * out by js, the callback will return content as required for a full page
- * reload.
+ * which ensures that the link submission is done without a page refresh. The href
+ * of the link is used as the ajax callback, but it degrades gracefully without
+ * JavaScript because if the 'nojs' portion of the href is not stripped out by js,
+ * the callback will return content as required for a full page reload.
  *
  * The necessary JavaScript file, ajax.js, will be included on the page
  * automatically.
- *
- * @return
+ * @return unknown_type
  */
 function ajax_example_render_link_ra() {
   $explanation = "
@@ -76,6 +71,7 @@ URL whether JS was enabled or not, letting it do different things based on that.
       'method' => 'html',
     ),
   );
+  
   return $build;
 }
 
@@ -85,15 +81,13 @@ URL whether JS was enabled or not, letting it do different things based on that.
  * Takes different logic paths based on whether Javascript was enabled.
  * If $type == 'ajax', it tells this function that ajax.js has rewritten
  * the URL and thus we are doing an AJAX and can return an array of commands.
- *
  * @param $type
- *   Either 'ajax' or 'nojs. Type is simply the normal URL argument to this URL.
- *
+ *   Either 'ajax' or 'nojs. Type is simply the normal URL argument to this
+ *   URL.
  * @return
  *   If $type == 'ajax', returns an array of AJAX Commands.
  *   Otherwise, just returns the content, which will end up being a page.
- *
- * @ingroup ajax_example
+ * @see ajax
  */
 function ajax_link_response($type = 'ajax') {
   if ($type == 'ajax') {
diff --git a/batch_example/batch_example.install b/batch_example/batch_example.install
index 20ca484..af015be 100644
--- a/batch_example/batch_example.install
+++ b/batch_example/batch_example.install
@@ -21,8 +21,6 @@
  * To make this update function run again and again, execute the query
  * "update system set schema_version = 0 where name = 'batch_example';"
  * and then run /update.php.
- *
- * @ingroup batch_example
  */
 function batch_example_update_7100(&$sandbox) {
   $ret = array();
diff --git a/batch_example/batch_example.module b/batch_example/batch_example.module
index 8a20a19..e44169d 100644
--- a/batch_example/batch_example.module
+++ b/batch_example/batch_example.module
@@ -3,13 +3,6 @@
 /**
  * @file
  * Outlines how a module can use the Batch API.
- */
-
-/**
- * @defgroup batch_example Example: Batch API
- * @ingroup examples
- * @{
- * Outlines how a module can use the Batch API.
  *
  * Batches allow heavy processing to be spread out over several page
  * requests, ensuring that the processing does not get interrupted
@@ -20,11 +13,14 @@
  * The @link batch_example.install .install file @endlink also shows how the
  * Batch API can be used to handle long-running hook_update_N() functions.
  *
+ * @see batch
+ */
+
+/**
  * Two harmless batches are defined:
  * - batch 1: Load the node with the lowest nid 100 times.
  * - batch 2: Load all nodes, 20 times and uses a progressive op, loading nodes
  *   by groups of 5.
- * @see batch
  */
 
 /**
@@ -86,6 +82,12 @@ function batch_example_simple_form_submit($form, &$form_state) {
 
 
 /**
+ * @defgroup batch_definitions Example batch definitions
+ * @{
+ * Definitions of the batches used in this module.
+ */
+
+/**
  * Batch 1 definition: Load the node with the lowest nid 1000 times.
  * This creates an operations array defining what batch 1 should do, including
  * what it should do when it's finished. In this case, each operation is the
@@ -260,6 +262,3 @@ function _batch_example_update_http_requests() {
 function _batch_example_get_http_requests() {
   return !empty($_SESSION['http_request_count']) ? $_SESSION['http_request_count'] : 0;
 }
-/**
- * @} End of "defgroup batch_example".
- */
diff --git a/batch_example/batch_example.test b/batch_example/batch_example.test
index 3431998..70198fd 100644
--- a/batch_example/batch_example.test
+++ b/batch_example/batch_example.test
@@ -6,6 +6,7 @@
  *
  * This file contains the test cases to check if module is performing as
  * expected.
+ *
  */
 class BatchExampleTestCase extends DrupalWebTestCase {
   protected $web_user;
diff --git a/block_example/block_example.install b/block_example/block_example.install
index 6a23a64..13a9df8 100644
--- a/block_example/block_example.install
+++ b/block_example/block_example.install
@@ -7,8 +7,6 @@
 
 /**
  * Implements hook_uninstall().
- *
- * @ingroup block_example
  */
 function block_example_uninstall() {
   variable_del('block_example_string');
diff --git a/block_example/block_example.module b/block_example/block_example.module
index 18c67ff..e5d5464 100755
--- a/block_example/block_example.module
+++ b/block_example/block_example.module
@@ -2,15 +2,6 @@
 
 /**
  * @file
- * Module file for block_example.
- */
-
-/**
- * @defgroup block_example Example: Block
- * @ingroup examples
- * @{
- * Demonstrates code creation of blocks.
- *
  * This is an example outlining how a module can define blocks that can be
  * displayed on various pages of a site, or how to alter blocks provided by
  * other modules.
@@ -224,6 +215,3 @@ function block_example_block_view_alter(&$data, $block) {
     $data['subject'] = isset($data['subject']) ? drupal_strtoupper($data['subject']) : '';
   }
 }
-/**
- * @} End of "defgroup block_example".
- */
diff --git a/dbtng_example/dbtng_example.install b/dbtng_example/dbtng_example.install
index 43f634e..588b0bd 100644
--- a/dbtng_example/dbtng_example.install
+++ b/dbtng_example/dbtng_example.install
@@ -14,7 +14,6 @@
  * We will create a default entry in the database.
  *
  * @see hook_install()
- * @ingroup dbtng_example
  */
 function dbtng_example_install() {
   // Outside of the .install file we would use drupal_write_record() to
@@ -51,22 +50,20 @@ function dbtng_example_install() {
  * for us.
  *
  * @see hook_uninstall()
- * @ingroup dbtng_example
  */
 function dbtng_example_uninstall() {
-  // nothing.
 }
 
 
 /**
  * Implements hook_schema().
  *
- * Defines the database tables used by this module.
+ * Define the database tables used by this module.
  * Remember that the easiest way to create the code for hook_schema is with
- * the @link http://drupal.org/project/schema schema module @endlink
+ * the schema module:
+ * @link http://drupal.org/project/schema @endlink
  *
  * @see hook_schema()
- * @ingroup dbtng_example
  */
 function dbtng_example_schema() {
 
diff --git a/dbtng_example/dbtng_example.module b/dbtng_example/dbtng_example.module
index 5dad999..352d2d6 100644
--- a/dbtng_example/dbtng_example.module
+++ b/dbtng_example/dbtng_example.module
@@ -13,16 +13,13 @@
  */
 
 /**
- * @defgroup dbtng_example Example: Database (DBTNG)
- * @ingroup examples
+ * @defgroup database_examples Database Examples
  * @{
- * Database examples, including DBTNG.
- *
- * 'DBTNG' means 'Database: The Next Generation.' Yes, Drupallers are nerds.
+ * These examples show basic database examples, including DBTNG.
  *
  * General documentation is available at
- * @link database.inc database abstraction layer documentation @endlink and
- * at @link http://drupal.org/node/310069 Database API @endlink.
+ * @link database Database abstraction layer documentation @endlink and
+ * at @link http://drupal.org/node/310069 @endlink.
  *
  * The several examples here demonstrate basic database usage.
  *
@@ -65,6 +62,7 @@
  * @see db_update()
  * @see db_delete()
  * @see drupal_write_record()
+ * @}
 */
 
 /**
@@ -91,6 +89,7 @@
  * @param $entry
  *   An array containing all the fields of the database record.
  *
+ * @ingroup database_examples
  * @see db_insert()
  */
 function dbtng_example_entry_insert($entry) {
@@ -127,6 +126,7 @@ function dbtng_example_entry_insert($entry) {
  * @param $entry
  *   An array containing all the fields of the item to be updated.
  *
+ * @ingroup database_examples
  * @see db_update()
  */
 function dbtng_example_entry_update($entry) {
@@ -157,6 +157,7 @@ function dbtng_example_entry_update($entry) {
  *   An array containing at least the person identifier 'pid' element of the
  *   entry to delete.
  *
+ * @ingroup database_examples
  * @see db_delete()
  */
 function dbtng_example_entry_delete($entry) {
@@ -238,6 +239,7 @@ function dbtng_example_entry_delete($entry) {
  * @return
  *   An object containing the loaded entries if found.
  *
+ * @ingroup database_examples
  * @see db_select()
  * @see db_query()
  * @see http://drupal.org/node/310072
@@ -566,6 +568,3 @@ function dbtng_example_form_update_submit($form, $form_state) {
   $count = dbtng_example_entry_update($entry);
   drupal_set_message(t("Updated entry @entry (@count row updated)", array('@count' => $count, '@entry' => print_r($entry, TRUE))));
 }
-/**
- * @} End of "defgroup dbtng_example".
- */
diff --git a/dbtng_example/dbtng_example.test b/dbtng_example/dbtng_example.test
index 6d16e7e..ab732d3 100644
--- a/dbtng_example/dbtng_example.test
+++ b/dbtng_example/dbtng_example.test
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * SimpleTests for dbtng_example module.
+ * test file for dbtng_example module.
  */
 
 /**
@@ -178,3 +178,4 @@ class DBTNGExampleUnitTestCase extends DrupalWebTestCase {
     );
   }
 }
+
diff --git a/email_example/email_example.module b/email_example/email_example.module
index c88abb7..e5ab92a 100644
--- a/email_example/email_example.module
+++ b/email_example/email_example.module
@@ -3,18 +3,11 @@
 /**
  * @file
  * Example of how to use Drupal's mail API.
- */
-
-/**
- * @defgroup email_example Example: Email
- * @ingroup examples
- * @{
- * Example of how to use Drupal's mail API.
  *
- * This example module provides two different examples of the Drupal email API:
- *  - Defines a simple contact form and shows how to use drupal_mail()
+ * This example module provides two different examples of the Drupal email API.
+ *  - defines a simple contact form and shows how to use drupal_mail()
  *    to send an e-mail (defined in hook_mail()) when the form is submitted.
- *  - Shows how modules can alter emails defined by other Drupal modules or
+ *  - shows how modules can alter emails defined by other Drupal modules or
  *    Core using hook_mail_alter by attaching a custom signature before
  *    they are sent.
  */
@@ -67,7 +60,7 @@ function email_example_mail($key, &$message, $params) {
 }
 
 /**
- * Sends an e-mail.
+ * Send an e-mail.
  *
  * @param $form_values
  *   An array of values from the contact form fields that were submitted.
@@ -206,6 +199,3 @@ function email_example_form_validate($form, &$form_state) {
 function email_example_form_submit($form, &$form_state) {
   email_example_mail_send($form_state['values']);
 }
-/**
- * @} End of "defgroup email_example".
- */
diff --git a/email_example/email_example.test b/email_example/email_example.test
index aa70ea1..b673670 100644
--- a/email_example/email_example.test
+++ b/email_example/email_example.test
@@ -95,3 +95,4 @@ class EmailExampleTestCase extends DrupalWebTestCase {
     );
   }
 }
+
diff --git a/examples.index.php b/examples.index.php
new file mode 100644
index 0000000..beab81a
--- /dev/null
+++ b/examples.index.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @file
+ * Example modules
+ *
+ * - @link action_example.module Creating actions @endlink
+ * - @link ajax_example.module Using AJAX forms @endlink
+ * - @link batch_example.module Using the batch API @endlink
+ * - @link block_example.module Defining blocks @endlink
+ * - @link dbtng_example.module Database examples (DBTNG) @endlink
+ * - @link email_example.module Sending e-mail @endlink
+ * - @link field_example.module Defining fields in the field API @endlink
+ * - @link file_example.module Demonstrates file handling @endlink
+ * - @link filter_example.module Defining an input filter @endlink
+ * - @link form_example.module Form API examples, including multistep forms @endlink
+ * - @link image_exmaple.module Demonstrates image handling with styles and effects @endlink
+ * - @link js_example.module Javascript examples @endlink
+ * - @link menu_example.module Menu API examples @endlink
+ * - @link nodeapi_example.module Node API demonstrations showing how a separate module can change the behavior of a node @endlink
+ * - @link node_access_example.module Define custom node access fules using node access hooks @endlink
+ * - @link node_example.module Creating custom node types, with fields @endlink
+ * - @link page_example.module Creating a custom page @endlink
+ * - @link queue_example.module Using the Queue API @endlink
+ * - @link render_example.module Demonstrates the render API @endlink
+ * - @link simpletest_example.module Writing tests for Drupal @endlink
+ * - @link token_example.module Using tokens @endlink
+ * - @link trigger_example.module Implementing triggers and actions @endlink
+ * - @link vertical_tabs_example.module Using vertical tabs @endlink
+ * - @link xmlrpc_example.module XML-RPC example @endlink
+ */
\ No newline at end of file
diff --git a/examples.info b/examples.info
deleted file mode 100644
index c0f2315..0000000
--- a/examples.info
+++ /dev/null
@@ -1,4 +0,0 @@
-name = Examples For Developers
-description = A variety of example code for you to learn from and hack upon.
-package = Example modules
-core = 7.x
diff --git a/examples.module b/examples.module
deleted file mode 100644
index 9fde239..0000000
--- a/examples.module
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * @file
- * This file serves as a stub file for the many Examples modules in the
- * @link http://drupal.org/project/examples Examples for Developers Project @endlink
- * which you can download and experiment with.
- *
- * One might say that examples.module is an example of documentation. However,
- * note that the example submodules define many doxygen groups, which may or
- * may not be a good strategy for other modules.
- */
-
-/**
- * @defgroup examples Examples
- * @{
- * Well-documented API examples for a broad range of Drupal 7 core functionality.
- *
- * Developers can learn how to use a particular API quickly by experimenting
- * with the examples, and adapt them for their own use.
- *
- * Download the Examples for Developers Project (and participate with
- * submissions, bug reports, patches, and documentation) at
- * http://drupal.org/project/examples
- */
-
-/**
- * Implements hook_help().
- */
-function examples_help($path, $arg) {
-  // re: http://drupal.org/node/767204
-  // 5. We need a master group (Examples) that will be in a main
-  // examples.module.
-  // The examples.module should be mostly doxy comments that point to the other
-  // examples.  It will also have a hook_help() explaining its purpose and how
-  // to access the other examples.
-}
-
-/**
- * @} End of 'defgroup examples'.
- */
diff --git a/field_example/field_example.info b/field_example/field_example.info
index 5692240..d013df2 100644
--- a/field_example/field_example.info
+++ b/field_example/field_example.info
@@ -1,5 +1,5 @@
 name = Field Example
-description = An implementation of a field to show the Field API
+description = A trivial implementation of a field to show the Field API
 package = Example modules
 core = 7.x
 files[] = field_example.test
diff --git a/field_example/field_example.install b/field_example/field_example.install
index 428a98e..7a1e18c 100644
--- a/field_example/field_example.install
+++ b/field_example/field_example.install
@@ -8,19 +8,14 @@
 /**
  * Implements hook_field_schema().
  *
- * Defines the database schema of the field, using the format used by the
- * Schema API.
+ * This defines the actual database schema of the field, using the format
+ * used by the Schema API.
  *
- * The data we will store here is just one 7-character element, even
+ * The actual data we store here is just one 7-character element, even
  * though the widget presents the three portions separately.
  *
- * All implementations of hook_field_schema() must be in the module's
- * .install file.
- *
- * @see http://drupal.org/node/146939
- * @see schemaapi
  * @see hook_field_schema()
- * @ingroup field_example
+ * @link schemaapi Schema API @endlink
  */
 function field_example_field_schema($field) {
   $columns = array(
diff --git a/field_example/field_example.js b/field_example/field_example.js
index 3ea7a26..3a4ce62 100644
--- a/field_example/field_example.js
+++ b/field_example/field_example.js
@@ -4,7 +4,7 @@
  */
 
 /**
- * Provides a farbtastic colorpicker for the fancier widget.
+ * Provide a farbtastic colorpicker for the fancier widget.
  */
 (function ($) {
   Drupal.behaviors.field_example_colorpicker = {
diff --git a/field_example/field_example.module b/field_example/field_example.module
index 46f0355..6451d0e 100644
--- a/field_example/field_example.module
+++ b/field_example/field_example.module
@@ -2,49 +2,29 @@
 
 /**
  * @file
- * An example field using the Field Types API.
- */
-
-/**
- * @defgroup field_example Example: Field Types API
- * @ingroup examples
- * @{
- * Examples using Field Types API.
+ * An example field using the Field API.
  *
  * This is updated from Barry Jaspan's presentation at Drupalcon Paris,
  * @link http://acquia.com/community/resources/acquia-tv/intro-field-api-module-developers Video Presentation @endlink
  *
  * Providing a field requires:
- * - Defining a field:
+ * - Defining a field
  *   - hook_field_info()
  *   - hook_field_schema()
  *   - hook_field_validate()
  *   - hook_field_is_empty()
  *
  * - Defining a formatter for the field (the portion that outputs the field for
- *   display):
+ *   display)
  *   - hook_field_formatter_info()
  *   - hook_field_formatter_view()
  *
- * - Defining a widget for the edit form:
+ * - Defining a widget for the edit form
  *   - hook_field_widget_info()
  *   - hook_field_widget_form()
  *
- * Our module defines the field in field_example_field_info(),
- * field_example_field_validate() and field_example_field_is_empty().
- * field_example_field_schema() is implemented in field_example.install.
- *
- * Our module sets up a formatter in field_example_field_formatter_info() and
- * field_example_field_formatter_view(). These are the API hooks that present
- * formatted and themed output to the user.
-
- * And finally, our module defines the widet in
- * field_example_field_widget_info() and field_example_field_widget_form().
- * The widget is the form element used to receive input from the user
- * when the field is being populated.
- *
- * @see field_types
- * @see field
+ * *
+ * See @link field_types Field Types API @endlink
  */
 
 /***************************************************************
@@ -58,7 +38,6 @@
  */
 function field_example_field_info() {
   return array(
-    // We name our field as the associative name of the array.
     'field_example_rgb' => array(
       'label' => t('Example Color RGB'),
       'description' => t('Demonstrates a field composed of an RGB color.'),
@@ -71,14 +50,8 @@ function field_example_field_info() {
 /**
  * Implements hook_field_validate().
  *
- * This hook gives us a chance to validate content that's in our 
- * field. We're really only interested in the $items parameter, since
- * it holds arrays representing content in the field we've defined.
- * We want to verify that the items only contain RGB hex values like
- * this: #RRGGBB. If the item validates, we do nothing. If it doesn't
- * validate, we add our own error notification to the $errors parameter.
- *
- * @see field_example_field_widget_error()
+ * Verifies that the RGB field as combined is valid
+ * (6 hex digits with a # at the beginning).
  */
 function field_example_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
   foreach ($items as $delta => $item) {
@@ -96,23 +69,20 @@ function field_example_field_validate($entity_type, $entity, $field, $instance,
 
 /**
  * Implements hook_field_is_empty().
- *
- * hook_field_is_emtpy() is where Drupal asks us if this field is empty.
- * Return TRUE if it does not contain data, FALSE if it does. This lets
- * the form API flag an error when required fields are empty.
  */
 function field_example_field_is_empty($item, $field) {
   return empty($item['rgb']);
 }
 
+/***********************************************************************
+ *  Field Type API: Formatter
+ *
+ *  These are the api hooks that present formatted (themed) output to the
+ *  user.
+ **********************************************************************/
+
 /**
  * Implements hook_field_formatter_info().
- *
- * We need to tell Drupal that we have two different types of formatters
- * for this field. One will change the text color, and the other will
- * change the background color.
- *
- * @see field_example_field_formatter_view()
  */
 function field_example_field_formatter_info() {
   return array(
@@ -137,8 +107,6 @@ function field_example_field_formatter_info() {
  *   was entered and uses an inline style to set the text color to that value.
  * - field_example_color_background does the same but also changes the
  *   background color of div.region-content.
- *
- * @see field_example_field_formatter_info()
  */
 function field_example_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
   $element = array();
@@ -164,6 +132,14 @@ function field_example_field_formatter_view($entity_type, $entity, $field, $inst
   return $element;
 }
 
+
+/**************************************************************************
+ * Field Type API: Widget
+ *
+ * The widget is the form element used to receive input from the user
+ * when the field is being populated.
+ **************************************************************************/
+
 /**
  * Implements hook_field_widget_info().
  *
@@ -172,11 +148,6 @@ function field_example_field_formatter_view($entity_type, $entity, $field, $inst
  * - A 3-textfield widget that gathers the red, green, and blue values
  *   separately.
  * - A farbtastic colorpicker widget that chooses the value graphically.
- *
- * These widget types will eventually show up in hook_field_widget_form,
- * where we will have to flesh them out.
- *
- * @see field_example_field_widget_form()
  */
 function field_example_field_widget_info() {
   return array(
@@ -198,11 +169,7 @@ function field_example_field_widget_info() {
 /**
  * Implements hook_field_widget_form().
  *
- * hook_widget_form() is where Drupal tells us to create form elements for
- * our field's widget.
- *
- * We provide one of three different forms, depending on the widget type of
- * the Form API item provided.
+ * Three different forms are provided, for the three widget types.
  *
  * The 'field_example_colorpicker' and 'field_example_text' are essentially
  * the same, but field_example_colorpicker adds a javascript colorpicker
@@ -321,13 +288,6 @@ function field_example_3text_validate($element, &$form_state) {
 
 /**
  * Implements hook_field_widget_error().
- *
- * hook_field_widget_error() lets us figure out what to do with errors
- * we might have generated in hook_field_validate(). Generally, we'll just
- * call form_error().
- *
- * @see field_example_field_validate()
- * @see form_error()
  */
 function field_example_field_widget_error($element, $error, $form, &$form_state) {
   switch ($error['error']) {
@@ -358,6 +318,3 @@ function field_example_menu() {
 function _field_example_page() {
   return t("The Field Example provides a field composed of an HTML RGB value, like #ff00ff. To use it, add the field to a content type.");
 }
-/**
- * @} End of "defgroup field_example".
- */
diff --git a/field_example/field_example.test b/field_example/field_example.test
index 2f87c61..76ad9d4 100644
--- a/field_example/field_example.test
+++ b/field_example/field_example.test
@@ -32,7 +32,7 @@ class FieldExampleTest extends DrupalWebTestCase {
    */
   function testExampleFieldBasic() {
     $content_type_friendly = $this->randomName(20);
-    $content_type_machine = drupal_strtolower($this->randomName(10));
+    $content_type_machine = strtolower($this->randomName(10));
     $title = $this->randomName(20);
 
     // Create and login user.
@@ -45,7 +45,7 @@ class FieldExampleTest extends DrupalWebTestCase {
     $this->clickLink(t('Add content type'));
 
     $single_field_name_friendly = $this->randomName(20);
-    $single_field_name_machine = drupal_strtolower($this->randomName(10));
+    $single_field_name_machine = strtolower($this->randomName(10));
 
     $edit = array(
       'name' => $content_type_friendly,
@@ -74,7 +74,7 @@ class FieldExampleTest extends DrupalWebTestCase {
     // Now we're back on the field-add page.
     // Now add a multivalued field.
     $multivalue_field_name_friendly = $this->randomName(20);
-    $multivalue_field_name_machine = drupal_strtolower($this->randomName(10));
+    $multivalue_field_name_machine = strtolower($this->randomName(10));
     $edit = array(
       'fields[_add_new_field][label]' => $multivalue_field_name_friendly,
       'fields[_add_new_field][field_name]' => $multivalue_field_name_machine,
diff --git a/file_example/file_example.module b/file_example/file_example.module
index c5cb3ec..d704722 100644
--- a/file_example/file_example.module
+++ b/file_example/file_example.module
@@ -6,11 +6,6 @@
  */
 
 /**
- * @defgroup file_example Example: Files
- * @ingroup examples
- * @{
- * Examples demonstrating the Drupal File API (and Stream Wrappers).
- *
  * The File Example module is a part of the Examples for Developers Project
  * and provides various Drupal File API Examples. You can download and
  * experiment with this code at the
@@ -19,6 +14,8 @@
  * See @link http://drupal.org/node/555118 Drupal File API @endlink for handbook
  * documentation on the File API and
  * @link file File summary on api.drupal.org @endlink for the function summary.
+ *
+ * @defgroup file_example Examples: File Examples
  */
 
 /**
@@ -66,6 +63,7 @@ function file_example_permission() {
  *
  * A simple form that allows creation of a file, managed or unmanaged. It
  * also allows reading/deleting a file and creation of a directory.
+ * @ingroup file_example
  */
 function file_example_readwrite($form, &$form_state) {
   if (empty($_SESSION['file_example_default_file'])) {
@@ -193,6 +191,7 @@ function file_example_readwrite($form, &$form_state) {
  * - file_create_url(), which converts a URI in the form public://junk.txt or
  *   private://something/test.txt into a URL like
  *   http://example.com/sites/default/files/junk.txt.
+ * @ingroup file_example
  */
 function file_example_managed_write_submit($form, &$form_state) {
   $data = $form_state['values']['write_contents'];
@@ -221,6 +220,7 @@ function file_example_managed_write_submit($form, &$form_state) {
  * - file_create_url(), which converts a URI in the form public://junk.txt or
  *   private://something/test.txt into a URL like
  *   http://example.com/sites/default/files/junk.txt.
+ * @ingroup file_example
  */
 
 function file_example_unmanaged_write_submit($form, &$form_state) {
@@ -251,6 +251,7 @@ function file_example_unmanaged_write_submit($form, &$form_state) {
  *   private://something/test.txt into a URL like
  *   http://example.com/sites/default/files/junk.txt.
  * - drupal_tempnam() generates a temporary filename for use.
+ * @ingroup file_example
  */
 
 function file_example_unmanaged_php_submit($form, &$form_state) {
@@ -304,6 +305,7 @@ function file_example_unmanaged_php_submit($form, &$form_state) {
  * file_get_contents("public://somefile.txt") just works. Although it's
  * not necessary, we use file_unmanaged_save_data() to save this file locally
  * and then find a local URL for it by using file_create_url().
+ * @ingroup file_example
  */
 function file_example_read_submit($form, &$form_state) {
   $uri = $form_state['values']['fileops_file'];
@@ -388,6 +390,7 @@ function file_example_file_check_exists_submit($form, &$form_state) {
  * Submit handler for directory creation.
  * Here we create a directory and set proper permissions on it using
  * file_prepare_directory().
+ * @ingroup file_example
  */
 function file_example_create_directory_submit($form, &$form_state) {
   $directory = $form_state['values']['directory_name'];
@@ -413,6 +416,7 @@ function file_example_create_directory_submit($form, &$form_state) {
  *
  * @see file_unmanaged_delete_recursive()
  *
+ * @ingroup file_example
  */
 function file_example_delete_directory_submit($form, &$form_state) {
   $directory = $form_state['values']['directory_name'];
@@ -430,9 +434,8 @@ function file_example_delete_directory_submit($form, &$form_state) {
 /**
  * Submit handler to test directory existence.
  * This actually just checks to see if the directory is writable
- *
- * @param $form
- * @param $form_state
+ * @param unknown_type $form
+ * @param unknown_type $form_state
  */
 function file_example_check_directory_submit($form, &$form_state) {
   $directory = $form_state['values']['directory_name'];
@@ -484,6 +487,8 @@ function file_example_get_managed_file($uri) {
  * is readable and writable as a location in the $_SESSION variable.
  *
  * @see FileExampleSessionStreamWrapper
+ *
+ * defgroup streamwrapper_example Stream Wrapper Example
  */
 function file_example_stream_wrappers() {
   $wrappers = array(
@@ -513,6 +518,4 @@ function file_example_session_contents() {
   $content = file_get_contents('session://' . $session_path);
   return t('Contents of @path:', array('@path' => check_plain($session_path))) . ' ' . print_r($content, TRUE);
 }
-/**
- * @} End of "defgroup file_example".
- */
+
diff --git a/file_example/file_example_session_streams.inc b/file_example/file_example_session_streams.inc
index 309fc59..1d29034 100644
--- a/file_example/file_example_session_streams.inc
+++ b/file_example/file_example_session_streams.inc
@@ -2,15 +2,13 @@
 
 /**
  * @file
- * Provides a demonstration session:// streamwrapper.
- *
- * This example is nearly fully functional, but has no known
+ * Implements DrupalStreamWrapperInterface to provide a demonstration session://
+ * streamwrapper. This example is nearly fully functional, but has no known
  * practical use. It's an example and demonstration only.
  */
 
 /**
  * Example stream wrapper class to handle session:// streams.
- *
  * This is just an example, as it could have horrible results if much
  * information were placed in the $_SESSION variable. However, it does
  * demonstrate both the read and write implementation of a stream wrapper.
@@ -35,8 +33,6 @@
  * Note that because this implementation uses simple PHP arrays ($_SESSION)
  * it is limited to string values, so binary files will not work correctly.
  * Only text files can be used.
- *
- * @ingroup file_example
  */
 class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
   /**
@@ -58,7 +54,6 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
 
   /**
    * The content of the stream.
-   *
    * Since this trivial example just uses the $_SESSION variable, this is
    * simply a reference to the contents of the related part of
    * $_SESSION['file_example'].
@@ -99,10 +94,9 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
   }
 
   /**
-   * Implements getTarget().
-   *
-   * The "target" is the portion of the URI to the right of the scheme.
-   * So in session://example/test.txt, the target is 'example/test.txt'.
+   *  Implements getTarget().
+   *  The "target" is the portion of the URI to the right of the scheme.
+   *  So in session://example/test.txt, the target is 'example/test.txt'.
    */
   function getTarget($uri = NULL) {
     if (!isset($uri)) {
@@ -139,7 +133,7 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
     //   - image.jpeg, and
     //   - awesome.image.jpeg
     while ($additional_part = array_pop($file_parts)) {
-      $extension = drupal_strtolower($additional_part . ($extension ? '.' . $extension : ''));
+      $extension = strtolower($additional_part . ($extension ? '.' . $extension : ''));
       if (isset($mapping['extensions'][$extension])) {
         return $mapping['mimetypes'][$mapping['extensions'][$extension]];
       }
@@ -150,7 +144,6 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
 
   /**
    * Implements getDirectoryPath().
-   *
    * In this case there is no directory string, so return an empty string.
    */
   public function getDirectoryPath() {
@@ -159,7 +152,6 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
 
   /**
    * Overrides getExternalUrl().
-   *
    * We have set up a helper function and menu entry to provide access to this
    * key via HTTP; normally it would be accessible some other way.
    */
@@ -238,7 +230,6 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
 
   /**
    * Return a reference to the correct $_SESSION key.
-   *
    * @param $uri
    *   The uri: session://something
    * @param $create
@@ -253,7 +244,7 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
     $fail = FALSE;
     $var = &$_SESSION['file_example'];
     // Handle case of just session://.
-    if (drupal_strlen($path) == 0) {
+    if (strlen($path) == 0) {
       return $var;
     }
     foreach ($path_components as $component) {
@@ -266,10 +257,8 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
     }
     return $var;
   }
-
   /**
    * Support for flock().
-   *
    * The $_SESSION variable has no locking capability, so return TRUE.
    *
    * @param $operation
@@ -302,10 +291,10 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
    */
   public function stream_read($count) {
     if (is_string($this->session_content)) {
-      $remaining_chars = drupal_strlen($this->session_content) - $this->stream_pointer;
+      $remaining_chars = strlen($this->session_content) - $this->stream_pointer;
       $number_to_read = min($count, $remaining_chars);
       if ($remaining_chars > 0) {
-        $buffer = drupal_substr($this->session_content, $this->stream_pointer, $number_to_read);
+        $buffer = substr($this->session_content, $this->stream_pointer, $number_to_read);
         $this->stream_pointer += $number_to_read;
         return $buffer;
       }
@@ -329,8 +318,8 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
     // session variable.
     $data = check_plain($data);
     $this->session_content = substr_replace($this->session_content, $data, $this->stream_pointer);
-    $this->stream_pointer += drupal_strlen($data);
-    return drupal_strlen($data);
+    $this->stream_pointer += strlen($data);
+    return strlen($data);
   }
 
   /**
@@ -359,7 +348,7 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
    * @see http://php.net/manual/en/streamwrapper.stream-seek.php
    */
   public function stream_seek($offset, $whence) {
-    if (drupal_strlen($this->session_content) >= $offset) {
+    if (strlen($this->session_content) >= $offset) {
       $this->stream_pointer = $offset;
       return TRUE;
     }
@@ -554,7 +543,6 @@ class FileExampleSessionStreamWrapper implements DrupalStreamWrapperInterface {
 
   /**
    * Support for stat().
-   *
    * This important function goes back to the Unix way of doing things.
    * In this example almost the entire stat array is irrelevant, but the
    * mode is very important. It tells PHP whether we have a file or a
diff --git a/filter_example/filter_example.module b/filter_example/filter_example.module
index 97c5a12..bbf0296 100755
--- a/filter_example/filter_example.module
+++ b/filter_example/filter_example.module
@@ -2,40 +2,13 @@
 
 /**
  * @file
- * Module file for filter_example.
- */
-
-/**
- * @defgroup filter_example Example: Filter
- * @ingroup examples
- * @{
- * Demonstrates the creation of filters.
- 
  * This is an example outlining how a module can be used to define a filter
  * to be run on user-submitted content before it is output to the browser.
  *
  * To show all the capabilities of the filter system, we will define two filters
- * in this module. One will substitute the string "foo" with an
- * administratively-defined replacement string. The other will find a custom
- * XML tag, <time />, and replace it by the current time.
- *
- * Foo filter
- *
- * Drupal has several content formats (they are not filters), and in our example
- * the foo replacement can be configured for each one of them, allowing an html
- * or php replacement, so the module includes a settings callback, with options
- * to configure that replacements. Also, a Tips callback will help showing the
- * current replacement for the content type being edited.
- *
- * Time filter.
- *
- * This filter is a little trickier to implement than the previous one.
- * Since the input involves special HTML characters (< and >) we have to
- * run the filter before HTML is escaped/stripped by other filters. But
- * we want to use HTML in our result as well, and so if we run this filter
- * first our replacement string could be escaped or stripped. The solution
- * is to use the "prepare" operation to escape the special characters, and
- * to later replace our escaped version in the "process" step.
+ * in this module. One will substitute the string "foo" with an administratively-
+ * defined replacement string. The other will find a custom XML tag, <time />, and
+ * replace it by the current time.
  */
 
 /**
@@ -79,6 +52,16 @@ function filter_example_filter_info() {
   return $filters;
 }
 
+/*
+ * Foo filter
+ *
+ * Drupal has several content formats (they are not filters), and in our example
+ * the foo replacement can be configured for each one of them, allowing an html
+ * or php replacement, so the module includes a settings callback, with options
+ * to configure that replacements. Also, a Tips callback will help showing the
+ * current replacement for the content type being edited.
+ */
+
 /**
  * Simply returns a little bit of information about the example.
  */
@@ -100,8 +83,8 @@ function _filter_example_information() {
  * when "foo" is encountered, we need to provide an interface for this kind of
  * customization. The object format is also an argument of the callback.
  *
- * The settings defined in this form are stored in database by the filter
- * module, and they will be available in the $filter argument.
+ * The settings defined in this form are stored in database by the filter module,
+ * and they will be available in the $filter argument
  */
 function _filter_example_filter_foo_settings($form, $form_state, $filter, $format, $defaults) {
   $settings['filter_example_foo'] = array(
@@ -114,7 +97,7 @@ function _filter_example_filter_foo_settings($form, $form_state, $filter, $forma
 }
 
 /**
- * Foo filter process callback.
+ * Foo filter process callback
  *
  * The actual filtering is performed here. The supplied text should be returned,
  * once any necessary substitutions have taken place. The example just replaces
@@ -129,10 +112,10 @@ function _filter_example_filter_foo_process($text, $filter, $format) {
 /**
  * Filter tips callback for foo filter.
  *
- * The tips callback allows filters to provide help text to users during the
- * content editing process. Short tips are provided on the content editing
- * screen, while long tips are provided on a separate linked page. Short tips
- * are optional, but long tips are highly recommended.
+ * The tips callback allows filters to provide help text to users during the content
+ * editing process. Short tips are provided on the content editing screen, while
+ * long tips are provided on a separate linked page. Short tips are optional,
+ * but long tips are highly recommended.
  */
 function _filter_example_filter_foo_tips($filter, $format, $long = FALSE) {
   $replacement = isset($filter->settings['filter_example_foo']) ? $filter->settings['filter_example_foo'] : 'bar';
@@ -145,8 +128,20 @@ function _filter_example_filter_foo_tips($filter, $format, $long = FALSE) {
   }
 }
 
-/**
- * Time filter prepare callback.
+/*
+ * Time filter.
+ *
+ * This filter is a little trickier to implement than the previous one.
+ * Since the input involves special HTML characters (< and >) we have to
+ * run the filter before HTML is escaped/stripped by other filters. But
+ * we want to use HTML in our result as well, and so if we run this filter
+ * first our replacement string could be escaped or stripped. The solution
+ * is to use the "prepare" operation to escape the special characters, and
+ * to later replace our escaped version in the "process" step.
+ */
+
+/*
+ * Time filter prepare callback
  *
  * We'll use [filter-example-time] as a replacement for the time tag.
  * Note that in a more complicated filter a closing tag may also be
@@ -157,8 +152,8 @@ function _filter_example_filter_time_prepare($text, $filter) {
   return preg_replace('!<time ?/>!', '[filter-example-time]', $text);
 }
 
-/**
- * Time filter process callback.
+/*
+ * Time filter process callback
  *
  * Now, in the "process" step, we'll search for our escaped time tags and
  * to the real filtering: replace the xml tag with the date.
@@ -171,14 +166,11 @@ function _filter_example_filter_time_process($text, $filter) {
 /**
  * Filter tips callback for time filter.
  *
- * The tips callback allows filters to provide help text to users during the
- * content editing process. Short tips are provided on the content editing
- * screen, while long tips are provided on a separate linked page. Short tips
- * are optional, but long tips are highly recommended.
+ * The tips callback allows filters to provide help text to users during the content
+ * editing process. Short tips are provided on the content editing screen, while
+ * long tips are provided on a separate linked page. Short tips are optional,
+ * but long tips are highly recommended.
  */
 function _filter_example_filter_time_tips($filter, $format, $long = FALSE) {
   return t('<em>&lt;time /&gt;</em> is replaced with the current time.');
 }
-/**
- * @} End of "defgroup filter_example".
- */
diff --git a/filter_example/filter_example.test b/filter_example/filter_example.test
index 9c5991d..0768601 100644
--- a/filter_example/filter_example.test
+++ b/filter_example/filter_example.test
@@ -6,6 +6,7 @@
  *
  * This file contains the test cases to check if module is performing as
  * expected.
+ *
  */
 class FilterExampleTestCase extends DrupalWebTestCase {
   protected $web_user;
diff --git a/form_example/form_example.module b/form_example/form_example.module
index daa5782..1824f29 100644
--- a/form_example/form_example.module
+++ b/form_example/form_example.module
@@ -6,15 +6,12 @@
  */
 
 /**
- * @defgroup form_example Example: Form API
- * @ingroup examples
- * @{
- * Examples demonstrating the Drupal Form API.
- *
  * The Form Example module is a part of the Examples for Developers Project
  * and provides various Drupal Form API Examples. You can download and
  * experiment with this code at the
  * @link http://drupal.org/project/examples Examples for Developers project page. @endlink
+ *
+ * @defgroup form_example Examples: Form Examples
  */
 
 /**
@@ -203,6 +200,3 @@ function form_example_theme($existing, $type, $theme, $path) {
   require_once('form_example_elements.inc');
   return _form_example_element_theme($existing, $type, $theme, $path);
 }
-/**
- * @} End of "defgroup form_example".
- */
diff --git a/form_example/form_example_elements.inc b/form_example/form_example_elements.inc
index 8c68731..0a153a4 100644
--- a/form_example/form_example_elements.inc
+++ b/form_example/form_example_elements.inc
@@ -99,6 +99,7 @@ function _form_example_element_info() {
     '#theme_wrappers' => array('form_element'),
   );
 
+
   // form_example_checkbox is mostly a copy of the system-defined checkbox
   // element.
   $types['form_example_checkbox'] = array(
@@ -166,13 +167,12 @@ function _form_example_element_info() {
 
 
 /**
- * Builds the current combined value of the phone number only when the form
+ * Build the current combined value of the phone number only when the form
  * builder is not processing the input.
  *
- * @param $element
- * @param $input
- * @param $form_state
- *
+ * @param array $element
+ * @param boolena $input
+ * @param array $form_state
  * @return array
  */
 function  form_example_phonenumber_combined_value(&$element, $input = FALSE, $form_state = NULL) {
@@ -206,6 +206,7 @@ function form_type_form_example_checkbox_value($element, $input = FALSE) {
   }
 }
 
+
 /**
  * Process callback for the discrete version of phonenumber.
  */
@@ -249,10 +250,10 @@ function form_example_phonenumber_discrete_process($element, &$form_state, $comp
 /**
  * Validation handler for the discrete version of the phone number.
  *
- * Uses regular expressions to check that:
- *  - the area code is a three digit number.
- *  - the prefix is numeric 3-digit number.
- *  - the extension is a numeric 4-digit number.
+ * Using regular expressions, we check that:
+ *  - the area code is a three digit number
+ *  - the prefix is numeric 3-digit number
+ *  - the extension is a numeric 4-digit number
  *
  * Any problems are shown on the form element using form_error().
  */
@@ -275,6 +276,8 @@ function form_example_phonenumber_discrete_validate($element, &$form_state) {
   return $element;
 }
 
+
+
 /**
  * Process callback for the combined version of the phonenumber element.
  */
@@ -322,9 +325,9 @@ function form_example_phonenumber_combined_process($element, &$form_state, $comp
 }
 
 /**
- * Phone number validation function for the combined phonenumber.
+ * Phonenumber validation function for the combined phonenumber.
  *
- * Uses regular expressions to check that:
+ * Using regular expressions, we check that:
  *  - the area code is a three digit number
  *  - the prefix is numeric 3-digit number
  *  - the extension is a numeric 4-digit number
@@ -372,7 +375,7 @@ function _form_example_element_theme() {
 }
 
 /**
- * Themes a custom checkbox.
+ * Theme a custom checkbox.
  *
  * This doesn't actually do anything, but is here to show that theming can
  * be done here.
@@ -381,9 +384,8 @@ function theme_form_example_checkbox($variables) {
   $element = $variables['element'];
   return theme('checkbox', $element);
 }
-
 /**
- * Formats child form elements as inline elements.
+ * Format child form elements as inline elements.
  */
 function theme_form_example_inline_form_element($variables) {
   $element = $variables['element'];
@@ -442,7 +444,7 @@ function theme_form_example_inline_form_element($variables) {
 }
 
 /**
- * Simple form to demonstrate how to use the various new FAPI elements
+ * This is a simple form to demonstrate how to use the various new FAPI elements
  * we've defined.
  */
 function form_example_element_demo_form($form, &$form_state) {
@@ -472,7 +474,7 @@ function form_example_element_demo_form($form, &$form_state) {
     '#title' => t('Combined phone number'),
     '#default_value' => variable_get('form_example_element_combined', '0000000000'),
     '#description' => t('form_example_element_combined one uses a "combined" element type, one with a single 10-digit value which is broken apart when needed.'),
-  );
+   );
 
   $form['submit'] = array(
     '#type' => 'submit',
diff --git a/form_example/form_example_states.inc b/form_example/form_example_states.inc
index 943b446..12ee571 100644
--- a/form_example/form_example_states.inc
+++ b/form_example/form_example_states.inc
@@ -44,8 +44,8 @@
  * true, then you add both of those conditions to the action. See the
  * 'country_writein' element below for an example.
  *
- * Note that the easiest way to select a textfield, checkbox, or select is with
- * the @link http://api.jquery.com/input-selector/ ':input' jquery shortcut @endlink,
+ * Note that the easiest way to select a textfield, checkbox, or select is
+ * with the @link http://api.jquery.com/input-selector/ ':input' jquery shortcut @endlink,
  * which selects any any of those.
  *
  * There are examples below of changing or hiding an element when a checkbox
@@ -260,9 +260,7 @@ function form_example_states_form($form, &$form_state) {
   return $form;
 }
 
-/**
- * Submit handler for form_example_states_form().
- */
+
 function form_example_states_form_submit($form, &$form_state) {
   drupal_set_message(t('Submitting values: @values', array('@values' => var_export($form_state['values'], TRUE))));
 }
diff --git a/form_example/form_example_tutorial.inc b/form_example/form_example_tutorial.inc
index 07e8362..1d31361 100644
--- a/form_example/form_example_tutorial.inc
+++ b/form_example/form_example_tutorial.inc
@@ -26,14 +26,12 @@
  * @see form_example_tutorial_9()
  * @see form_example_tutorial_10()
  *
- * @ingroup form_example
  */
 function form_example_tutorial() {
   return t('This is a set of nine form tutorials tied to the <a href="http://drupal.org/node/262422">Drupal handbook</a>.');
 }
 
 //////////////// Tutorial Example 1 //////////////////////
-
 /**
  * This first form function is from the @link http://drupal.org/node/717722 Form Tutorial handbook page @endlink
  *
@@ -79,8 +77,7 @@ function form_example_tutorial_2($form, &$form_state) {
     '#title' => t('Name'),
   );
 
-  // Adds a simple submit button that refreshes the form and clears its
-  // contents. This is the default behavior for forms.
+  // Adds a simple submit button that refreshes the form and clears its contents -- this is the default behavior for forms.
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => 'Submit',
@@ -228,6 +225,7 @@ function form_example_tutorial_5($form, &$form_state) {
  *
  * From http://drupal.org/node/717736
  * @see form_example_tutorial_6_validate()
+ *
  */
 function form_example_tutorial_6($form, &$form_state) {
   $form['description'] = array(
@@ -286,6 +284,7 @@ function form_example_tutorial_6($form, &$form_state) {
  * in $form['#validate'].
  *
  * @see form_example_tutorial_6()
+ *
  */
 function form_example_tutorial_6_validate($form, &$form_state) {
   $year_of_birth = $form_state['values']['year_of_birth'];
@@ -295,6 +294,7 @@ function form_example_tutorial_6_validate($form, &$form_state) {
 }
 
 
+
 //////////////// Tutorial Example 7 //////////////////////
 
 /**
@@ -306,6 +306,7 @@ function form_example_tutorial_6_validate($form, &$form_state) {
  * @see form_example_tutorial_7_validate()
  * @see form_example_tutorial_7_submit()
  * @ingroup form_example
+ *
  */
 function form_example_tutorial_7($form, &$form_state) {
   $form['description'] = array(
@@ -347,6 +348,7 @@ function form_example_tutorial_7($form, &$form_state) {
 
 /**
  * Validation function for form_example_tutorial_7().
+ *
  */
 function form_example_tutorial_7_validate($form, &$form_state) {
   $year_of_birth = $form_state['values']['year_of_birth'];
@@ -468,6 +470,7 @@ function form_example_tutorial_8_page_two($form, &$form_state) {
 
 /**
  * Validate handler for the next button on first page.
+ *
  */
 function form_example_tutorial_8_next_validate($form, &$form_state) {
   $year_of_birth = $form_state['values']['year_of_birth'];
@@ -481,6 +484,7 @@ function form_example_tutorial_8_next_validate($form, &$form_state) {
  *
  * Capture the values from page one and store them away so they can be used
  * at final submit time.
+ *
  */
 function form_example_tutorial_8_next_submit($form, &$form_state) {
 
@@ -549,6 +553,7 @@ function form_example_tutorial_8_page_two_submit($form, &$form_state) {
  * @see form_example_tutorial_9_submit()
  * @see form_example_tutorial_9_validate()
  * @ingroup form_example
+ *
  */
 function form_example_tutorial_9($form, &$form_state) {
 
@@ -689,6 +694,7 @@ function form_example_tutorial_9_submit($form, &$form_state) {
  * @see form_example_tutorial_10_submit()
  * @see form_example_tutorial_10_validate()
  * @ingroup form_example
+ *
  */
 function form_example_tutorial_10($form_state) {
   // enctype="multipart/form-data" required by browsers to handle files.
diff --git a/form_example/form_example_wizard.inc b/form_example/form_example_wizard.inc
index b73029f..38fa77b 100644
--- a/form_example/form_example_wizard.inc
+++ b/form_example/form_example_wizard.inc
@@ -2,11 +2,7 @@
 
 /**
  * @file
- * Extensible wizard form example.
- */
-
-/**
- * Extensible wizard form example.
+ * Estensible wizard form example.
  *
  * This is an example of a multistep form using a wizard style. It will include
  * the 'Previous' and 'Next' buttons when required, and a 'Finish' button at the
@@ -29,17 +25,14 @@
  * - The most important customization sttep is to change the submit handler and
  *   do whatever you want with the collected information. In this case, the
  *   example just shows the collected values in the various steps.
- * @ingroup form_example
  */
 
 /**
- * Returns the list of steps and their associated forms. This has been separated
+ * Return the list of steps and their associated forms. This has been separated
  * to clarify and easy the understanding of this example. You should edit this
  * function to include the steps your wizard/multistep form requires.
  *
  * @return $array
- *
- * @ingroup form_example
  */
 function _form_example_steps() {
   return array(
@@ -71,8 +64,6 @@ function _form_example_steps() {
  * You are not required to change the next or previous handlers, but you must
  * change the form_example_wizard_sbumit handler to perform the operations you
  * need on the collected information.
- *
- * @ingroup form_example
  */
 function form_example_wizard($form, &$form_state) {
 
@@ -118,10 +109,10 @@ function form_example_wizard($form, &$form_state) {
     );
   }
   else {
-    // Just in case there are no more steps, we use the default submit handler
-    // of the form wizard. Call this button Finish, Submit, or whatever you
-    // want to show. When this button is clicked, the
-    // form_example_wizard_submit handler will be called.
+    // Just in case there are no more steps, we use the default submit handler of
+    // the form wizard. Call this button Finish, Submit, or whatever you want to
+    // show. When this button is clicked, the form_example_wizard_submit handler
+    // will be called.
     $form['finish'] = array(
       '#type' => 'submit',
       '#value' => t('Finish'),
@@ -144,8 +135,6 @@ function form_example_wizard($form, &$form_state) {
  * - Forces form rebuild.
  *
  * You are not required to change this function.
- *
- * @ingroup form_example
  */
 function form_example_wizard_previous_submit($form, &$form_state) {
   $current_step = &$form_state['step'];
@@ -167,10 +156,8 @@ function form_example_wizard_previous_submit($form, &$form_state) {
  *
  * You are not required to change this function.
  *
- * @param $form
- * @param $form_state
- *
- * @ingroup form_example
+ * @param unknown_type $form
+ * @param unknown_type $form_state
  */
 function form_example_wizard_next_submit($form, &$form_state) {
   $current_step = &$form_state['step'];
@@ -189,24 +176,19 @@ function form_example_wizard_next_submit($form, &$form_state) {
   }
 }
 
-/**
- * The previous code was a 'skeleton' of a multistep wizard form. You are not
- * required to change a line on the previous code (apart from defining your own
- * steps in the _form_example_steps() function.
- *
- * All the code included from here is the content of the wizard, the steps of
- * the form.
- *
- * First, let's show the defined steps for the wizard example.
- * @ingroup form_example
- */
+// The previous code was a 'skeleton' of a multistep wizard form. You are not
+// required to change a line on the previous code (apart from defining your own
+// steps in the _form_example_steps() function.
+//
+// All the code included from here is the content of the wizard, the steps of
+// the form.
+
+// First, let's show the defined steps for the wizard example.
 
 /**
  * Returns form elements for the 'personal info' page of the wizard. This is the
  * first step of the wizard, asking for two textfields: first name and last
  * name.
- *
- * @ingroup form_example
  */
 function form_example_wizard_personal_info($form, &$form_state) {
   $form = array();
@@ -227,8 +209,6 @@ function form_example_wizard_personal_info($form, &$form_state) {
  * Returns form elements for the 'location info' page of the wizard. This is the
  * second step of the wizard. This step asks for a textfield value: a City. This
  * step also includes a validation declared later.
- *
- * @ingroup form_example
  */
 function form_example_wizard_location_info($form, &$form_state) {
   $form = array();
@@ -244,12 +224,9 @@ function form_example_wizard_location_info($form, &$form_state) {
 }
 
 /**
- * Custom validation form for the 'location info' page of the wizard.
- *
- * This is the validation function for the second step of the wizard.
- * The city cannot be empty or be "San Francisco".
- *
- * @ingroup form_example
+ * Custom validation form for the 'location info' page of the wizard. This is the
+ * validation function for the second step of the wizard. The city cannot be empty
+ * or be "San Francisco".
  */
 function form_example_wizard_location_info_validate($form, &$form_state) {
   if ($form_state['values']['city'] == 'San Francisco') {
@@ -260,8 +237,6 @@ function form_example_wizard_location_info_validate($form, &$form_state) {
 /**
  * Returns form elements for the 'other info' page of the wizard. This is the
  * thid and last step of the example wizard.
- *
- * @ingroup form_example
  */
 function form_example_wizard_other_info($form, &$form_state) {
   $form = array();
@@ -283,10 +258,8 @@ function form_example_wizard_other_info($form, &$form_state) {
  * This demonstration handler just do a drupal_set_message() with the information
  * collected on each different step of the wizard.
  *
- * @param $form
- * @param $form_state
- *
- * @ingroup form_example
+ * @param unknown_type $form
+ * @param unknown_type $form_state
  */
 function form_example_wizard_submit($form, &$form_state) {
   $current_step = &$form_state['step'];
diff --git a/image_example/image_example.install b/image_example/image_example.install
index 89e5f6f..395720a 100644
--- a/image_example/image_example.install
+++ b/image_example/image_example.install
@@ -6,9 +6,7 @@
  */
 
 /**
- * Implements hook_install().
- *
- * @ingroup image_example
+ * Implements hook_install(),
  */
 function image_example_install() {
   // Set a variable containing the name of the style to use when the module
@@ -18,8 +16,6 @@ function image_example_install() {
 
 /**
  * Implements hook_uninstall().
- *
- * @ingroup image_example
  */
 function image_example_uninstall() {
   variable_del('image_example_style_name');
@@ -28,8 +24,6 @@ function image_example_uninstall() {
 
 /**
  * Implements hook_enable().
- *
- * @ingroup image_example
  */
 function image_example_enable() {
   // There is currently no way to manually flush an image style which causes
@@ -44,9 +38,7 @@ function image_example_enable() {
 }
 
 /**
- * Implements hook_disable().
- *
- * @ingroup image_example
+ * Implemements hook_disable().
  */
 function image_example_disable() {
   // Solves the same problem as image_example_enable().
diff --git a/image_example/image_example.module b/image_example/image_example.module
index c31b7cd..89118b3 100644
--- a/image_example/image_example.module
+++ b/image_example/image_example.module
@@ -2,14 +2,7 @@
 
 /**
  * @file
- * Module file for image_example
- */
-
-/**
- * @defgroup image_example Example: Image
- * @ingroup examples
- * @{
- * Demonstrates the basic use of image API.
+ * Image example module demonstrates basic use of image API.
  *
  * This module demonstrates the use of Drupal 7's new image styles and effects
  * including the following topics.
@@ -370,11 +363,10 @@ function image_example_theme() {
  * @param $variables
  *   An associative array containing:
  *   - data: The current configuration for this colorize effect.
+ *
+ * @ingroup themeable
  */
 function theme_image_example_colorize_summary($variables) {
   $data = $variables['data'];
   return t('as color #@color.', array('@color' => $data['color']));
 }
-/**
- * @} End of "defgroup image_example".
- */
diff --git a/image_example/image_example.pages.inc b/image_example/image_example.pages.inc
index e137f27..6f78750 100644
--- a/image_example/image_example.pages.inc
+++ b/image_example/image_example.pages.inc
@@ -15,8 +15,6 @@
  * this module are available via Drupal's image handling system.
  *
  * @see theme_image_style()
- *
- * @ingroup image_example
  */
 function image_example_style_form($form, &$form_state) {
   // If there is already an uploaded image display the image here.
@@ -61,9 +59,7 @@ function image_example_style_form($form, &$form_state) {
 }
 
 /**
- * Verifies that the user supplied an image with the form..
- *
- * @ingroup image_example
+ * Verify that the user supplied an image with the form..
  */
 function image_example_style_form_validate($form, &$form_state) {
   if (!isset($form_state['values']['image_example_image_fid']) || !is_numeric($form_state['values']['image_example_image_fid'])) {
@@ -73,8 +69,6 @@ function image_example_style_form_validate($form, &$form_state) {
 
 /**
  * Form Builder; Display a form for uploading an image.
- *
- * @ingroup image_example
  */
 function image_example_style_form_submit($form, &$form_state) {
   // When using the #managed_file form element the file is automatically
@@ -129,8 +123,6 @@ function image_example_style_form_submit($form, &$form_state) {
 
 /**
  * Theme function displays an image rendered using the specified style.
- *
- * @ingroup image_example
  */
 function theme_image_example_image($variables) {
   $image = $variables['image'];
diff --git a/image_example/image_example.test b/image_example/image_example.test
index 0f7ef4b..788f635 100644
--- a/image_example/image_example.test
+++ b/image_example/image_example.test
@@ -45,7 +45,7 @@ class ImageExampleTestCase extends DrupalWebTestCase {
 
     // Create a new image style and add the effect provided by
     // image_example_effect_info().
-    $new_style = array('name' => drupal_strtolower($this->randomName()));
+    $new_style = array('name' => strtolower($this->randomName()));
     $new_style = image_style_save($new_style);
     $this->assertTrue(isset($new_style['isid']), t('Image style @style_name created.', array('@style_name' => $new_style['name'])));
 
@@ -65,12 +65,12 @@ class ImageExampleTestCase extends DrupalWebTestCase {
 
     // Set the variable 'image_example_style_name' to the name of our new style
     // then rename the style and ensure the variable name is changed.
-
+    
     // @todo Enable this block once http://drupal.org/node/713872 is fixed.
     if (defined('bug_713872_fixed')) {
       $style = image_style_load($new_style['name']);
       variable_set('image_example_style_name', $style['name']);
-      $style['name'] = drupal_strtolower($this->randomName());
+      $style['name'] = strtolower($this->randomName());
       $style = image_style_save($style);
       $variable = variable_get('image_example_style_name', '');
       $this->assertTrue(($variable == $style['name']), t('Variable image_example_style_name successfully updated when renaming image style.'));
diff --git a/js_example/accordion.tpl.php b/js_example/accordion.tpl.php
index 2f96a0e..6258826 100644
--- a/js_example/accordion.tpl.php
+++ b/js_example/accordion.tpl.php
@@ -1,58 +1,54 @@
 <?php
-/**
- * @file
- * Template file for js_example module.
- */
 ?>
 <div class="demo">
 <h2><?php print $title; ?></h2>
 <div id="accordion">
-  <h3><a href="#">Section 1</a></h3>
-  <div>
-    <p>
-    Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
-    ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
-    amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
-    odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
-    </p>
-  </div>
-  <h3><a href="#">Section 2</a></h3>
-  <div>
-    <p>
-    Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
-    purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
-    velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
-    suscipit faucibus urna.
-    </p>
-  </div>
-  <h3><a href="#">Section 3</a></h3>
-  <div>
-    <p>
-    Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.
-    Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero
-    ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis
-    lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.
-    </p>
-    <ul>
-      <li>List item one</li>
-      <li>List item two</li>
-      <li>List item three</li>
-    </ul>
-  </div>
-  <h3><a href="#">Section 4</a></h3>
-  <div>
-    <p>
-    Cras dictum. Pellentesque habitant morbi tristique senectus et netus
-    et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in
-    faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia
-    mauris vel est.
-    </p>
-    <p>
-    Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.
-    Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
-    inceptos himenaeos.
-    </p>
-  </div>
+	<h3><a href="#">Section 1</a></h3>
+	<div>
+		<p>
+		Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
+		ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
+		amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
+		odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
+		</p>
+	</div>
+	<h3><a href="#">Section 2</a></h3>
+	<div>
+		<p>
+		Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
+		purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
+		velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
+		suscipit faucibus urna.
+		</p>
+	</div>
+	<h3><a href="#">Section 3</a></h3>
+	<div>
+		<p>
+		Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.
+		Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero
+		ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis
+		lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.
+		</p>
+		<ul>
+			<li>List item one</li>
+			<li>List item two</li>
+			<li>List item three</li>
+		</ul>
+	</div>
+	<h3><a href="#">Section 4</a></h3>
+	<div>
+		<p>
+		Cras dictum. Pellentesque habitant morbi tristique senectus et netus
+		et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in
+		faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia
+		mauris vel est.
+		</p>
+		<p>
+		Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.
+		Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
+		inceptos himenaeos.
+		</p>
+	</div>
 </div>
 
 </div><!-- End demo -->
diff --git a/js_example/js_example.module b/js_example/js_example.module
index 17744e5..5ccef02 100755
--- a/js_example/js_example.module
+++ b/js_example/js_example.module
@@ -2,14 +2,7 @@
 
 /**
  * @file
- * Examples showing how to use some of the new JavaScript features in Drupal 7.
- */
-
-/**
- * @defgroup js_example Example: JavaScript
- * @ingroup examples
- * @{
- * Examples using Drupal 7's built-in JavaScript.
+ * An example module showing how to use some of the new JavaScript features in Drupal 7.
  */
 
 /**
@@ -42,11 +35,9 @@ function js_example_menu() {
   return $items;
 }
 
-/**
- * js_example_weights implementation.
- */
+
 function js_example_js_weights() {
-  // Add some css to show which line is output by which script
+  // add some css to show which line is output by which script
   drupal_add_css(drupal_get_path('module', 'js_example') . '/css/jsweights.css');
   // 
   $weights = array(
@@ -68,9 +59,6 @@ function js_example_js_weights() {
   return $output;
 }
 
-/**
- * js_example_accordion implementation.
- */
 function js_example_accordion() {
   $title = t('Click sections to expand or collapse:');
   $build['myelement'] = array(
diff --git a/menu_example/menu_example.module b/menu_example/menu_example.module
index f580d5d..74aa81a 100644
--- a/menu_example/menu_example.module
+++ b/menu_example/menu_example.module
@@ -2,22 +2,12 @@
 
 /**
  * @file
- * Module file for menu_example.
+ * Demonstrates uses of the Menu APIs in Drupal, including hook_menu(),
+ * hook_menu_alter(), and hook_menu_link_alter().
  */
 
 /**
- * @defgroup menu_example Example: Menu
- * @ingroup examples
- * @{
- * Demonstrates uses of the Menu APIs in Drupal.
- *
- * @see hook_menu()
- * @see hook_menu_alter()
- * @see hook_menu_link_alter()
- */
-
-/**
- * Implements hook_menu().
+ * Implementatation of hook_menu().
  */
 function menu_example_menu() {
 
@@ -440,7 +430,7 @@ function menu_example_menu_link_alter(&$item, $menu) {
 }
 
 /**
- * Loads an item based on its $id.
+ * Load an item based on its $id.
  *
  * In this case we're just creating a more extensive string. In a real example
  * we would load or create some type of object.
@@ -475,6 +465,3 @@ function menu_example_arg_optional_to_arg($arg) {
   // If our argument is not provided, give a default of 99.
   return (empty($arg) || $arg == '%') ? 99 : $arg;
 }
-/**
- * @} End of "defgroup menu_example".
- */
diff --git a/menu_example/menu_example.test b/menu_example/menu_example.test
index dba2877..536a97d 100644
--- a/menu_example/menu_example.test
+++ b/menu_example/menu_example.test
@@ -84,7 +84,7 @@ class MenuExampleTestCase extends DrupalWebTestCase {
     $this->assertResponse(200);
     $this->assertText('This menu entry will not show');
 
-    // Verify that the 'logout' link has been changed to 'salir', using an
+    // Verify that the 'logout' link has been changed to 'salir', using an 
     // overridden drupalLogout function.
     $this->drupalLogout();
   }
diff --git a/node_access_example/node_access_example.module b/node_access_example/node_access_example.module
index 4093eab..ae82648 100755
--- a/node_access_example/node_access_example.module
+++ b/node_access_example/node_access_example.module
@@ -2,11 +2,10 @@
 
 /**
  * @file
- * Illustrates how to restrict access to nodes based on the node access system.
- *
- * These examples implement an additional "private" marker for each node. The
- * idea is that only the user (or specially permissioned users) can access a
- * "private" node.
+ * This is an example illustrating how to restrict access to nodes based on
+ * the node access system. It implements an additional "private" marker for
+ * each node. The idea is that only the user (or specially permissioned users)
+ * can access a "private" node.
  *
  * The node access system has three layers.
  * - Overall override permissions. User 1 and any user with 'bypass node access'
@@ -63,6 +62,7 @@
  * @link http://drupal.org/node/270000 Handbook page on Node Access module @endlink
  */
 
+
 /**
  * Implements hook_menu() to provide a description.
  */
@@ -162,8 +162,8 @@ function node_access_example_permission() {
 /**
  * Implements hook_node_access().
  *
- * Allows view and edit access to private nodes where the account requesting
- * access has the username 'foobar'.
+ *  Allows view and edit access to private nodes where the account requesting
+ *  access has the username 'foobar'.
  */
 function node_access_example_node_access($node, $op, $account) {
   // If $node is a string, the node has not yet been created. We don't care
@@ -181,7 +181,7 @@ function node_access_example_node_access($node, $op, $account) {
 /**
  * Implements hook_node_grants().
  *
- * Tells the node access system what grant IDs the account belongs to for each
+ * Tell the node access system what grant IDs the account belongs to for each
  * realm.
  *
  * Here we are providing two realms:
@@ -283,6 +283,7 @@ function node_access_example_form_alter(&$form, $form_state) {
 /**
  * Implements hook_node_load().
  */
+
 function node_access_example_node_load($nodes, $types) {
   $result = db_query('SELECT nid, private FROM {node_access_example} WHERE nid IN(:nids)', array(':nids' => array_keys($nodes)));
   foreach ($result as $record) {
@@ -293,8 +294,9 @@ function node_access_example_node_load($nodes, $types) {
 /**
  * Implements hook_node_delete().
  *
- * Deletes the node_access_example record when the node is deleted.
+ * Delete the node_access_example record when the node is deleted.
  */
+
 function node_access_example_node_delete($node) {
   db_delete('node_access_example')->condition('nid', $node->nid)->execute();
 }
@@ -302,7 +304,7 @@ function node_access_example_node_delete($node) {
 /**
  * Implements hook_node_insert().
  *
- * Inserts a new access record when a node is created.
+ * Insert a new access record when a node is created.
  */
 function node_access_example_node_insert($node) {
   if (isset($node->private)) {
diff --git a/node_example/node_example.install b/node_example/node_example.install
index 6fd2d33..e6caf9b 100755
--- a/node_example/node_example.install
+++ b/node_example/node_example.install
@@ -6,19 +6,14 @@
  *
  * The definition of the fields for the module is here,
  *
- * @see http://drupal.org/node/707832
- * @see http://drupal.org/node/443536
- * @see field
+ * @see @link http://drupal.org/node/707832 Field API Tutorial @endlink
+ * @see @link http://drupal.org/node/443536 Field API Handbook Page @endlink
+ * @see @link field Field API documentation @endlink
  */
 
 /**
  * Implements hook_install().
  *
- * This hook is called when the user enables the module for the first time
- * (or on subsequent enables after the module has been uninstalled). So it's
- * a good place to define our new node type.
- *
- * We will:
  * - Add the body field.
  * - Configure the body field.
  * - Create color, quantity, and image fields.
@@ -29,22 +24,16 @@
  * @see field_update_instance()
  * @see field_create_field()
  * @see field_create_instance()
- * @ingroup node_example
  */
 function node_example_install() {
-  // During installation, the t() function is unavailable, so we use get_t()
-  // to store the name of the translation function.
+  // use get_t() to get the name of our localization function for translation
+  // during install, when t() is not available.
   $t = get_t();
 
-  // We define the node type as an associative array.
+  // Define the node type.
   $node_example = array(
     'type' => 'node_example',
     'name' => $t('Example Node'),
-    // 'base' tells Drupal the base string for hook functions.
-    // This is often the module name; if base is set to 'mymodule', Drupal
-    // would call mymodule_insert() or similar for node hooks.
-    // In this case, we set base equal to 'node_content' so Drupal will handle
-    // our node as if we had designed it in the UI.
     'base' => 'node_content',
     'description' => $t('This is an example node type with a few fields.'),
     'body_label' => $t('Example Description')
@@ -91,66 +80,10 @@ function node_example_install() {
 }
 
 /**
- * Implements hook_uninstall().
- *
- * This hook is called when the user not only has disabled the module,
- * but also uninstalls it from the 'uninstall' tab in the module page.
- *
- * So it's a perfect time to remove our fields and instances and new
- * node type from the database.
- *
- * @ingroup node_example
- */
-function node_example_uninstall() {
-  // Gather all the example content that might have been created while this
-  // module was enabled.  Simple selects still use db_query().
-  // http://api.drupal.org/api/function/db_query/7
-  $sql = 'SELECT nid FROM {node} n WHERE n.type = :type';
-  $result = db_query($sql, array(':type' => 'node_example'));
-  $nids = array();
-  foreach ($result as $row) {
-    $nids[] = $row->nid;
-  }
-
-  // Delete all the nodes at once
-  // http://api.drupal.org/api/function/node_delete_multiple/7
-  node_delete_multiple($nids);
-
-  // Loop over each of the fields defined by this module and delete
-  // all instances of the field, their data, and the field itself.
-  // http://api.drupal.org/api/function/field_delete_field/7
-  foreach (array_keys(_node_example_installed_fields()) as $field) {
-    field_delete_field($field);
-  }
-
-  // Loop over any remaining field instances attached to the node_example
-  // content type (such as the body field) and delete them individually.
-  // http://api.drupal.org/api/function/field_delete_field/7
-  $instances = field_info_instances('node', 'node_example');
-  foreach ($instances as $instance_name => $instance) {
-    field_delete_instance($instance);
-  }
-
-  // Delete our content type
-  // http://api.drupal.org/api/function/node_type_delete/7
-  node_type_delete('node_example');
-
-  // Purge all field infromation
-  // http://api.drupal.org/api/function/field_purge_batch/7
-  field_purge_batch(1000);
-}
-
-/**
  * Returns a structured array defining the fields created by this content type.
  *
- * This is factored into this function so it can be used in both
+ * This is packaged in a function so it can be used in both
  * node_example_install() and node_example_uninstall().
- *
- * @return
- *  An associative array specifying the fields we wish to add to our
- *  new node type.
- *
- * @ingroup node_example
  */
 function _node_example_installed_fields() {
   $t = get_t();
@@ -185,14 +118,8 @@ function _node_example_installed_fields() {
  * cardinality of three allowing our content type to give the user three color
  * fields.
  *
- * This is factored into this function so it can be used in both
- * node_example_install() and node_example_uninstall().
- *
- * @return
- *  An associative array specifying the instances we wish to add to our new
- *  node type.
- *
- * @ingroup node_example
+ * This is provided as a function so that it can be used in both hook_install()
+ * and hook_uninstall().
  */
 function _node_example_installed_instances() {
   $t = get_t();
@@ -241,3 +168,46 @@ function _node_example_installed_instances() {
     ),
   );
 }
+
+
+/**
+ * Implements hook_uninstall().
+ */
+function node_example_uninstall() {
+  // Gather all the example content that might have been created while this
+  // module was enabled.  Simple selects still use db_query().
+  // http://api.drupal.org/api/function/db_query/7
+  $sql = 'SELECT nid FROM {node} n WHERE n.type = :type';
+  $result = db_query($sql, array(':type' => 'node_example'));
+  $nids = array();
+  foreach ($result as $row) {
+    $nids[] = $row->nid;
+  }
+
+  // Delete all the nodes at once
+  // http://api.drupal.org/api/function/node_delete_multiple/7
+  node_delete_multiple($nids);
+
+  // Loop over each of the fields defined by this module and delete
+  // all instances of the field, their data, and the field itself.
+  // http://api.drupal.org/api/function/field_delete_field/7
+  foreach (array_keys(_node_example_installed_fields()) as $field) {
+    field_delete_field($field);
+  }
+
+  // Loop over any remaining field instances attached to the node_example
+  // content type (such as the body field) and delete them individually.
+  // http://api.drupal.org/api/function/field_delete_field/7
+  $instances = field_info_instances('node', 'node_example');
+  foreach ($instances as $instance_name => $instance) {
+    field_delete_instance($instance);
+  }
+
+  // Delete our content type
+  // http://api.drupal.org/api/function/node_type_delete/7
+  node_type_delete('node_example');
+
+  // Purge all field infromation
+  // http://api.drupal.org/api/function/field_purge_batch/7
+  field_purge_batch(1000);
+}
diff --git a/node_example/node_example.module b/node_example/node_example.module
index 0dc03db..b9056d4 100755
--- a/node_example/node_example.module
+++ b/node_example/node_example.module
@@ -2,50 +2,38 @@
 
 /**
  * @file
- * Module file for Node Example module.
- *
- * Part of the Examples for Developers project.
- */
- 
-/**
- * @defgroup node_example Example: Node
- * @ingroup examples
- * @{
- * Example defining a node type in code.
- *
  * This is an example outlining how a module can be used to define a new
- * node type. Our example node type will allow users to specify multiple
- * "colors", a "quantity" and an "image" for their nodes; some kind of
- * rudimentary inventory-tracking system, perhaps?
+ * node type.  In Drupal 7 we move most of what was once needed in this file
+ * to the node_example.install file so that it can be managed efficiently.
  *
- * The basic pattern for defining a node type is to tell Drupal about the
- * node's field types, and view modes. Drupal will then take over and manage
- * the storage for this node type. This differs from Drupal 6, where we
- * would have to handle all the database storage ourselves in the module.
+ * Our example node type will allow users to specify multiple "colors",
+ * a "quantity" and an "image" for their nodes; some kind of rudimentary
+ * inventory-tracking system, perhaps?
  *
- * Remember that most node types do not require any custom code, as one
- * simply creates them using the Drupal user interface. Creating a node like
- * this in code is a special case.
- *
- * Drupal 7 has us defining most of our node structure in arrays,
- * and passing those to node_type_save(). We use hook_install() as
- * a convenient place to define these types, and hook_uninstall()
- * as a convenient place to not only uninstall the data contained
- * in these nodes, but also remove the node types from Drupal's
- * knowledge. This means that most of the code to define a new node type
- * would be in the module's .install file.
- * 
- * In previous versions of Drupal, "teaser" and "page" were node view modes.
- * In Drupal 7 we can define custom view modes to let the node know how it
- * should return it's data.  This module declares a custom view mode called
+ * In previous versions of Drupal, "teaser" and "page" were node view modes.  In
+ * Drupal 7 we can define custom view modes to let the node know how it should
+ * return it's data.  This module declares a custom view mode called
  * "example_node_list".
  *
- * @see @link http://drupal.org/node/707832 Field API Tutorial @endlink
- * @see @link http://drupal.org/node/443536 Field API Handbook Page @endlink
- * @see @link field Field API documentation @endlink
- * @see field_example.module
+ * We no longer need an extra database table to store this content type's
+ * information.
+ *
+ * Most node types that provide fields do not require any custom code for
+ * the fields, as the fields system provides storage and access.
+ *
+ * See @link http://drupal.org/node/707832 Field API Tutorial @endlink
+ *
+ * See @link http://drupal.org/node/443536 Field API Handbook Page @endlink
+ *
+ * See @link field Field API documentation @endlink
+ *
+ * See @link field_example.install field_example.install @endlink
+ *
+ * Remember that most node types do not require any custom code, as one
+ * simply creates them using the fields UI.
  */
 
+
 /**
  * Implements hook_menu().
  *
@@ -65,10 +53,8 @@ function node_example_menu() {
  * Custom callback that builds our content and returns it to the browser.
  *
  * @return
- *   A build array.
+ *   a build array
  *
- * @see node_load
- * @see node_view
  */
 function node_example_page() {
   $build = array();
@@ -82,6 +68,8 @@ function node_example_page() {
 
   // Loop through each of our node_example nodes and instruct node_view
   // to use our custom "example_node_list" view.
+  // http://api.drupal.org/api/function/node_load/7
+  // http://api.drupal.org/api/function/node_view/7
   foreach ($result as $row) {
     $node = node_load($row->nid);
     $build['node_list'][]= node_view($node, 'example_node_list');
@@ -120,8 +108,8 @@ function node_example_field_formatter_info() {
 /**
  * Implements hook_field_formatter_view().
  *
- * @todo: We need to provide a formatter for the colors that a user is allowed
- * to enter during node creation.
+ * @todo: We need to provide a formatter for the colors that a user is allowed to enter
+ * during node creation.
  */
 function node_example_field_formatter_view($object_type, $object, $field, $instance, $langcode, $items, $display) {
   $element = array();
@@ -177,6 +165,3 @@ function theme_example_node_color($variables) {
   $output = '<span style="background-color: #ccc; padding: 1em; margin-bottom: 1em; float: left; color: ' . $variables['color'] . '">' . $variables['color'] . '</span>';
   return $output;
 }
-/**
- * @} End of "defgroup node_example".
- */
diff --git a/node_example/node_example.test b/node_example/node_example.test
index 797cb58..940ff3e 100644
--- a/node_example/node_example.test
+++ b/node_example/node_example.test
@@ -52,3 +52,4 @@ class NodeExampleTestCase extends DrupalWebTestCase {
 
   }
 }
+
diff --git a/nodeapi_example/nodeapi_example.module b/nodeapi_example/nodeapi_example.module
index ffb69c9..49b24ee 100755
--- a/nodeapi_example/nodeapi_example.module
+++ b/nodeapi_example/nodeapi_example.module
@@ -76,35 +76,36 @@ function nodeapi_example_form_alter(&$form, $form_state, $form_id) {
  * http://api.drupal.org/api/group/hooks/7
  * or in the node API declaration file: modules/node/node.api.php
  *
- * hook_node_access()  - Controls access to a node.
- * hook_node_access_records()  -  Sets permissions for a node to be written to the database.
- * hook_node_access_records_alter()  -  Alters permissions for a node before it is written to the database.
- * hook_node_build_alter()  -  Modifies the structured node content after node content is built.
- * hook_node_delete()  -  Acts on node deletion.
- * hook_node_grants()  -  Informs the node access system what permissions the user has.
- * hook_node_grants_alter()  -  Alters user access rules when trying to view, edit or delete a node.
- * hook_node_info()  -  Defines module-provided node types.
- * hook_node_insert()  -  Responds to node insertion.
- * hook_node_load()  -  Acts on node objects when loaded.
- * hook_node_operations()  -  Adds mass node operations.
- * hook_node_prepare()  -  The node is about to be shown on the add/edit form.
- * hook_node_prepare_translation()  -  The node is being cloned for translation.
- * hook_node_presave()  -  The node passed validation and is about to be saved.
- * hook_node_revision_delete()  -  A revision of the node is deleted.
- * hook_node_search_result()  -  The node is being displayed as a search result.
- * hook_node_type_delete()  -  Acts on node type deletion.
- * hook_node_type_insert()  -  Acts on node type creation.
- * hook_node_type_update()  -  Acts on node type changes.
- * hook_node_update()  -  The node being updated.
- * hook_node_update_index()  -  The node is being indexed.
- * hook_node_validate()  -  The user has finished editing the node and is previewing or submitting it.
- * hook_node_view()  -  The node content is being assembled before rendering.
+ * hook_node_access()	- Control access to a node.
+ * hook_node_access_records()	-	Set permissions for a node to be written to the database.
+ * hook_node_access_records_alter()	-	Alter permissions for a node before it is written to the database.
+ * hook_node_build_alter()	-	The node content was built, the module may modify the structured content.
+ * hook_node_delete()	-	Act on node deletion.
+ * hook_node_grants()	-	Inform the node access system what permissions the user has.
+ * hook_node_grants_alter()	-	Alter user access rules when trying to view, edit or delete a node.
+ * hook_node_info()	-	Defines module-provided node types.
+ * hook_node_insert()	-	Respond to node insertion.
+ * hook_node_load()	-	Act on node objects when loaded.
+ * hook_node_operations()	-	Add mass node operations.
+ * hook_node_prepare()	-	The node is about to be shown on the add/edit form.
+ * hook_node_prepare_translation()	-	The node is being cloned for translation.
+ * hook_node_presave()	-	The node passed validation and is about to be saved.
+ * hook_node_revision_delete()	-	A revision of the node is deleted.
+ * hook_node_search_result()	-	The node is being displayed as a search result.
+ * hook_node_type_delete()	-	Act on node type deletion.
+ * hook_node_type_insert()	-	Act on node type creation.
+ * hook_node_type_update()	-	Act on node type changes.
+ * hook_node_update()	-	The node being updated.
+ * hook_node_update_index()	-	The node is being indexed.
+ * hook_node_validate()	-	The user has finished editing the node and is previewing or submitting it.
+ * hook_node_view()	-	The node content is being assembled before rendering.
+ *
  */
 
 /**
  * Implements hook_node_validate().
  *
- * Checks that rating attribute is set in the form submission, the field is
+ * Check that rating attribute is set in the form submission, the field is
  * required
  */
 function nodeapi_example_node_validate($node, $form) {
@@ -118,8 +119,8 @@ function nodeapi_example_node_validate($node, $form) {
 /**
  * Implements hook_node_load().
  *
- * Loads the rating information if available for any of the nodes in the
- * argument list.
+ * Load the rating information if available for any of the nodes in the argument
+ * list.
  */
 function nodeapi_example_node_load($nodes, $form) {
   foreach ($nodes as $node) {
@@ -229,9 +230,9 @@ function nodeapi_example_node_update($node) {
  * HTML teaser and body. We will inject our additional information at the front
  * of the node copy.
  *
- * Using node API 'hook_node_view' is more appropriate than using a filter here,
- * because filters transform user-supplied content, whereas we are extending it
- * with additional information.
+ * Using node API 'hook_node_view' is more appropriate than using a filter here, because
+ * filters transform user-supplied content, whereas we are extending it with
+ * additional information.
  */
 function nodeapi_example_node_view($node, $build_mode = 'full') {
   if (variable_get('nodeapi_example_' . $node->type, FALSE)) {
@@ -260,11 +261,10 @@ function nodeapi_example_theme() {
 /**
  * A custom theme function.
  *
- * By using this function to format our rating, themes can override this
- * presentation if they wish; for example, they could provide a star graphic
- * for the rating. We also wrap the default presentation in a CSS class that
- * is prefixed by the module name. This way, style sheets can modify the output
- * without requiring theme code.
+ * By using this function to format our rating, themes can override this presentation
+ * if they wish; for example, they could provide a star graphic for the rating. We
+ * also wrap the default presentation in a CSS class that is prefixed by the module
+ * name. This way, style sheets can modify the output without requiring theme code.
  */
 function theme_nodeapi_example_rating($variables) {
   $options = array(
@@ -280,3 +280,4 @@ function theme_nodeapi_example_rating($variables) {
   $output .= '</div>';
   return $output;
 }
+
diff --git a/nodeapi_example/nodeapi_example.test b/nodeapi_example/nodeapi_example.test
index 6518fae..e16ef8e 100644
--- a/nodeapi_example/nodeapi_example.test
+++ b/nodeapi_example/nodeapi_example.test
@@ -6,6 +6,7 @@
  *
  * This file contains the test cases to check if module is performing as
  * expected.
+ *
  */
 class NodeApiExampleTestCase extends DrupalWebTestCase {
   /**
@@ -29,7 +30,7 @@ class NodeApiExampleTestCase extends DrupalWebTestCase {
   }
 
   /**
-   * Enables modules and create user with specific permissions.
+   * Enable modules and create user with specific permissions.
    */
   function setUp() {
     parent::setUp('nodeapi_example');
@@ -48,7 +49,7 @@ class NodeApiExampleTestCase extends DrupalWebTestCase {
   }
 
   /**
-   * Log user in, creates an example node, and uses the rating system.
+   * Login user, create an example node, and use the rating system
    */
   function testNodeExampleBasic() {
 
@@ -115,7 +116,7 @@ class NodeApiExampleTestCase extends DrupalWebTestCase {
   }
 
   /**
-   * Logs user in, creates an example node, and tests rating functionality with
+   * Login user, create an example node, and test rating functionality with
    * a node using revisions.
    */
   function testNodeExampleRevision() {
diff --git a/page_example/page_example.module b/page_example/page_example.module
index 8ebf2d1..500f6d9 100755
--- a/page_example/page_example.module
+++ b/page_example/page_example.module
@@ -2,13 +2,6 @@
 
 /**
  * @file
- * Module file for page_example_module.
- */
-
-/**
- * @defgroup page_example Example: Page
- * @ingroup examples
- * @{
  * This is an example outlining how a module can be used to display a
  * custom page at a given URL.
  */
@@ -123,13 +116,9 @@ function page_example_menu() {
   return $items;
 }
 
-/**
- * page_example_description function.
- */
 function page_example_description() {
   return array('#markup' => t('The page_example provides two pages, "simple" and "arguments". The <a href="@simple_link">simple page</a> just returns a renderable array for display. The <a href="@arguments_link">arguments page</a> takes two arguments and displays them, as in @arguments_link', array('@simple_link' => url('examples/page_example/simple', array('absolute' => TRUE)), '@arguments_link' => url('examples/page_example/arguments/23/56', array('absolute' => TRUE)))));
 }
-
 /**
  * A simple page callback.
  *
@@ -176,6 +165,3 @@ function page_example_arguments($first, $second) {
   );
   return $render_array;
 }
-/**
- * @} End of "defgroup page_example".
- */
diff --git a/queue_example/queue_example.module b/queue_example/queue_example.module
index b66b3ec..4eecab1 100644
--- a/queue_example/queue_example.module
+++ b/queue_example/queue_example.module
@@ -3,13 +3,6 @@
 /**
  * @file
  * Examples demonstrating the Drupal Queue API.
- */
-
-/**
- * @defgroup queue_example Example: Queue
- * @ingroup examples
- * @{
- * Demonstrating the Queue API
  *
  * The Queue API provides a traditional FIFO (first-in-first-out) queue,
  * but also provides the concepts of:
@@ -217,7 +210,7 @@ function queue_example_add_remove_form_clear_queue($form, &$form_state) {
 }
 
 /**
- * Retrieves the queue from the database for display purposes only.
+ * Retrieve the queue from the database for display purposes only.
  *
  * It is not recommended to access the database directly, and this is only here
  * so that the user interface can give a good idea of what's going on in the
@@ -238,7 +231,7 @@ function queue_example_retrieve_queue($queue_name) {
 }
 
 /**
- * Themes the queue display.
+ * Theme the queue display.
  *
  * Again, this is not part of the demonstration of the queue API, but is here
  * just to make the user interface more understandable.
@@ -280,6 +273,3 @@ function queue_example_theme() {
     ),
   );
 }
-/**
- * @} End of "defgroup queue_example".
- */
diff --git a/render_example/render_example.module b/render_example/render_example.module
index d1c307f..8e7730f 100644
--- a/render_example/render_example.module
+++ b/render_example/render_example.module
@@ -2,14 +2,7 @@
 
 /**
  * @file
- * Demonstrates render arrays.
- */
-
-/**
- * @defgroup render_example Example: Render
- * @ingroup examples
- * @{
- * Demonstrate how render arrays are arranged and how they can be altered.
+ * Demonstrates how render arrays are arranged and how they can be altered.
  * This alters blocks and the page to show the actual render array
  * that is being used to create each item.
  *
@@ -54,7 +47,6 @@ function render_example_info() {
 
 /**
  * Provides a number of render arrays and show what they do.
- *
  * Each array is keyed by a description; it's returned for rendering at page
  * render time. It's easy to add new examples to this.
  *
@@ -198,7 +190,6 @@ function render_example_add_suffix($element) {
  *   The rendered element.
  * @param $element
  *   The element which was rendered (for reference)
- *
  * @return
  *   Markup altered as necessary. In this case we add a little postscript to it.
  */
@@ -208,9 +199,7 @@ function render_example_add_prefix($markup, $element) {
 }
 
 /**
- * A #theme function.
- *
- * This #theme function has the responsibility of consolidating/rendering the
+ * A #theme function has the responsibility of consolidating/rendering the
  * children's markup and returning it, where it will be placed in the
  * element's #children property.
  */
@@ -226,7 +215,6 @@ function theme_render_example_aggregate($variables) {
  * The following section of the example builds and arranges the altering
  * example.
  */
-
 /**
  * Builds the form that offers options of what items to show.
  */
@@ -409,7 +397,6 @@ function render_example_page_alter(&$page) {
 
 /**
  * Utility function to build a named form given a set of form elements.
- *
  * This is a standard form builder function that takes an additional array,
  * which is itself a form.
  *
@@ -446,7 +433,7 @@ function render_example_theme() {
 }
 
 /**
- * Wraps a div around the already-rendered #children.
+ * Wrap a div around the already-rendered #children.
  */
 function theme_render_example_add_div($variables) {
   $element = $variables['element'];
@@ -457,7 +444,7 @@ function theme_render_example_add_div($variables) {
 }
 
 /**
- * Wraps a div and add a little text after the rendered #children.
+ * Wrap a div and add a little text after the rendered #children.
  */
 function theme_render_example_add_notes($variables) {
   $element = $variables['element'];
@@ -470,7 +457,7 @@ function theme_render_example_add_notes($variables) {
 }
 
 /**
- * Themes the render array (from the demonstration page).
+ * Theme render array (from the demonstration page).
  */
 function theme_render_array($variables) {
   $heading = '<div class="render-header">' . $variables['element']['#description'] . '</div>';
@@ -480,9 +467,8 @@ function theme_render_array($variables) {
 }
 
 /**
- * Adds a #type to the element before it gets rendered.
+ * Add a #type to the element before it gets rendered.
  * In this case, changes from the default 'ul' to 'ol'.
- *
  * @param $element
  *   The element to be altered, in this case a list, ready for theme_item_list.
  *
@@ -499,7 +485,6 @@ function render_example_change_to_ol($element) {
  * theme functions have acted on it, and it receives the original data, so
  * can make decisions based on that. In this example, no use is made of the
  * passed-in $element.
- *
  * @param $markup
  *   The already-rendered data
  * @param unknown_type $element
@@ -512,6 +497,3 @@ function render_example_add_hr($markup, $element) {
   $output = $markup . '<hr />';
   return $output;
 }
-/**
- * @} End of "defgroup render_example".
- */
diff --git a/simpletest_example/simpletest_example.module b/simpletest_example/simpletest_example.module
index 16048f2..ea77b2a 100644
--- a/simpletest_example/simpletest_example.module
+++ b/simpletest_example/simpletest_example.module
@@ -2,19 +2,13 @@
 
 /**
  * @file
- * Module file for simpletest_example
- */
-
-/**
- * @defgroup simpletest_example Example: Simpletest
- * @ingroup examples
- * @{
  * An example of simpletest tests to accompany the tutorial at
  * http://drupal.org/node/890654.
  *
  * This is built on a traditional node-type implementation.
  */
 
+
 /**
  * Implements hook_node_info().
  */
@@ -93,7 +87,7 @@ function simpletest_example_form($node, $form_state) {
 /**
  * Implements hook_menu().
  *
- * Provides an explanation.
+ * Provide an explanation.
  */
 function simpletest_example_menu() {
   $items['examples/simpletest_example'] = array(
@@ -106,7 +100,7 @@ function simpletest_example_menu() {
 }
 
 /**
- * Returns an explanation of this module.
+ * Return an explanation of this module.
  */
 function _simpletest_example_explanation() {
 
@@ -114,6 +108,4 @@ function _simpletest_example_explanation() {
     a simpletest test. Please see the <a href='http://drupal.org/node/890654'>associated tutorial</a>.");
   return $explanation;
 }
-/**
- * @} End of "defgroup simpletest_example".
- */
+
diff --git a/token_example/token_example.module b/token_example/token_example.module
index 99919da..dac5762 100644
--- a/token_example/token_example.module
+++ b/token_example/token_example.module
@@ -3,24 +3,6 @@
 /**
  * @file
  * An example module showing how to define and use tokens.
- *
- * The Token module provides an API for providing tokens to other modules.
- * Tokens are small bits of text that can be placed into larger documents
- * via simple placeholders, like %site-name or [user].
- */
-
-/**
- * @defgroup token_example Example: Token API
- * @ingroup examples
- * @{
- * Examples using the Token API.
- *
- * The Token module provides an API for providing tokens to other modules.
- * Tokens are small bits of text that can be placed into larger documents
- * via simple placeholders, like %site-name or [user].
- *
- * This example is part of the Examples for Developers Project which you can
- * download and experiment with here: http://drupal.org/project/examples
  */
 
 /**
@@ -135,7 +117,7 @@ function token_example_example_form_submit($form, &$form_state) {
 }
 
 /**
- * Builds a list of available content.
+ * Build a list of available content.
  */
 function _token_example_get_node() {
   if (!user_access('access content') && !user_access('bypass node access')) {
@@ -154,7 +136,7 @@ function _token_example_get_node() {
 }
 
 /**
- * Builds a list of available comments.
+ * Build a list of available comments.
  */
 function _token_example_get_comment() {
   if (!module_exists('comment') || (!user_access('access comments') && !user_access('administer comments'))) {
@@ -175,11 +157,10 @@ function _token_example_get_comment() {
 }
 
 /**
- * Builds a list of available user accounts.
+ * Build a list of available user accounts.
  */
 function _token_example_get_user() {
-  if (!user_access('access user profiles') &&
-      !user_access('administer users')) {
+  if (!user_access('access user profiles') && !user_access('administer users')) {
     return array();
   }
 
@@ -194,7 +175,7 @@ function _token_example_get_user() {
 }
 
 /**
- * Builds a list of available taxonomy terms.
+ * Build a list of available taxonomy terms.
  */
 function _token_example_get_taxonomy_term() {
   $term_query = db_select('taxonomy_term_data', 'ttd');
@@ -207,7 +188,7 @@ function _token_example_get_taxonomy_term() {
 }
 
 /**
- * Builds a list of available files.
+ * Build a list of available files.
  */
 function _token_example_get_file() {
   $file_query = db_select('file_managed', 'f');
@@ -217,6 +198,3 @@ function _token_example_get_file() {
   $files = array_map('check_plain', $files);
   return $files;
 }
-/**
- * @} End of "defgroup token_example".
- */
diff --git a/token_example/token_example.tokens.inc b/token_example/token_example.tokens.inc
index d62a329..462e0c9 100644
--- a/token_example/token_example.tokens.inc
+++ b/token_example/token_example.tokens.inc
@@ -7,8 +7,6 @@
 
 /**
  * Implements hook_token_info().
- *
- * @ingroup token_example
  */
 function token_example_token_info() {
   // Add two different token types. The first is the generic text format. The
@@ -56,8 +54,6 @@ function token_example_token_info() {
 
 /**
  * Implements hook_tokens().
- *
- * @ingroup token_example
  */
 function token_example_tokens($type, $tokens, array $data = array(), array $options = array()) {
   $replacements = array();
diff --git a/trigger_example/trigger_example.module b/trigger_example/trigger_example.module
index 5a9b13e..cac508c 100644
--- a/trigger_example/trigger_example.module
+++ b/trigger_example/trigger_example.module
@@ -3,14 +3,6 @@
 /**
  * @file
  * Trigger definition example module.
- */
-
-/**
- * @defgroup trigger_example Example: Trigger
- * @ingroup examples
- * @{
- *
- * Trigger definition example module.
  *
  * Triggers and actions are a pair of special-purpose functions allowing some
  * Drupal programming without using PHP. Using the
@@ -123,8 +115,7 @@ function trigger_example_trigger_info() {
  * This function is executed during the submission of the example form defined
  * in this module.
  *
- * @param $options
- *   Array of arguments used to call the triggersomething function, if any.
+ * @param array $options arguments used to call the triggersomething function, if any.
  */
 function trigger_example_triggersomething($options = array()) {
   // Ask the trigger module for all actions enqueued for the 'triggersomething' trigger.
@@ -154,6 +145,7 @@ function trigger_example_triggersomething($options = array()) {
  * it can be used. We use hook_user_login to be informed when a user logs in and
  * try to find if the user has previously logged in before. If the user has not
  * accessed previously, we make a call to our trigger function.
+ *
  */
 function trigger_example_user_login(&$edit, $account, $category = NULL) {
   // Verify user has never accessed the site: last access was creation date.
@@ -181,13 +173,14 @@ function trigger_example_user_login(&$edit, $account, $category = NULL) {
  * @endcode
  *
  * @param string $hook
- *   The trigger identification.
+ *   the trigger identification.
  * @param array  $edit
- *   Modifications for the account object (should be empty).
+ *   modifications for the account object (should be empty).
  * @param object $account
- *   User object that has logged in.
+ *   user object that has logged in.
  * @param string $category
- *   Category of the profile.
+ *   category of the profile.
+ *
  */
 function _trigger_example_first_time_login($hook, &$edit, $account, $category = NULL) {
   // Keep objects for reuse so that changes actions make to objects can persist.
@@ -252,7 +245,7 @@ function trigger_example_help($path, $arg) {
 /**
  * Implements hook_menu().
  *
- * Provides a form that can be used to fire the module's triggers.
+ * Provide a form that can be used to fire the module's triggers.
  */
 function trigger_example_menu() {
   $items['examples/trigger_example'] = array(
@@ -266,9 +259,9 @@ function trigger_example_menu() {
 }
 
 /**
- * Trigger example test form.
+ * Trigger example test form
  *
- * Provides a button to run the triggersomething event.
+ * Provide a button to run the triggersomething event.
  */
 function trigger_example_form($form_state) {
   $form['triggersomething'] = array(
@@ -279,7 +272,7 @@ function trigger_example_form($form_state) {
 }
 
 /**
- * Submit handler for the trigger_example_form().
+ * Submit handler for the trigger_example_form.
  */
 function trigger_example_form_submit($form, $form_state) {
   // If the user clicked the button, then run the triggersomething trigger.
@@ -290,10 +283,11 @@ function trigger_example_form_submit($form, $form_state) {
 
 
 /**
- * Optional usage of hook_trigger_info_alter().
+ * Optional usage of hook_trigger_info_aler()
  *
  * This function is not required to write your own triggers, but it may be
  * useful when you want to alter existing triggers.
+ *
  */
 
 /**
@@ -305,9 +299,9 @@ function trigger_example_form_submit($form, $form_state) {
  * this example implementation a little change is done to the existing trigger
  * provided by core: 'cron'
  *
- * @param $triggers
- *   Array of trigger information returned by hook_trigger_info()
- *   implementations.
+ * @param array $triggers
+ *  Array of trigger information returned by hook_trigger_info()
+ *  implementations.
  *
  * @see hook_trigger_info()
  */
diff --git a/vertical_tabs_example/vertical_tabs_example.module b/vertical_tabs_example/vertical_tabs_example.module
index faab1a6..fec4345 100644
--- a/vertical_tabs_example/vertical_tabs_example.module
+++ b/vertical_tabs_example/vertical_tabs_example.module
@@ -2,19 +2,9 @@
 
 /**
  * @file
- * Module file for vertical_tabs_example module.
- */
-
-/**
- * @defgroup vertical_tabs_example Example: Vertical Tabs
- * @ingroup examples
- * @{
- * Demonstrates 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.
- *
- * @see vertical_tabs_example.js
+ * 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.
  */
 
 /**
@@ -96,6 +86,3 @@ function vertical_tabs_example_form_alter(&$form, $form_state, $form_id) {
 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')));
 }
-/**
- * @} End of "defgroup vertical_tabs_example".
- */
diff --git a/xmlrpc_example/xmlrpc_example.module b/xmlrpc_example/xmlrpc_example.module
index d1d301e..225624c 100644
--- a/xmlrpc_example/xmlrpc_example.module
+++ b/xmlrpc_example/xmlrpc_example.module
@@ -2,15 +2,6 @@
 
 /**
  * @file
- * Module file for xmlrpc_example module.
- */
-
-/**
- * @defgroup xmlrpc_example Example: XML-RPC
- * @ingroup examples
- * @{
- * Demonstration of XML-RPC in Drupal 7.
- *
  * This is an example of how to implement and XML-RPC server by registering
  * callbacks to specific methods and how to make xmlrpc calls using the built-in
  * xmlrpc() factory provided by Drupal.
@@ -33,8 +24,7 @@
 
 /**
  * Implements hook_menu().
- *
- * Registers all the demonstration forms.
+ * Register all the demonstration forms.
  */
 function xmlrpc_example_menu() {
   $items['examples/xmlrpc'] = array(
@@ -65,7 +55,7 @@ function xmlrpc_example_menu() {
     'access callback' => TRUE,
     'weight'          => 1,
   );
-  // This part is completely optional. It allows the modification of services
+  // This part is completely optional. It will allow the modification of services
   // defined by this or other modules. This configuration form is used to
   // enable the hook_xmlrpc_alter API and alter current existing services
   $items['examples/xmlrpc/alter'] = array(
@@ -653,6 +643,5 @@ function xmlrpc_example_alter_form() {
   );
   return system_settings_form($form);
 }
-/**
- * @} End of "defgroup xmlrpc_example".
- */
+
+// The alteration part of the module ends here.
