diff --git ajax_example/ajax_example.module ajax_example/ajax_example.module
index f0f12f1..3333e49 100644
--- ajax_example/ajax_example.module
+++ ajax_example/ajax_example.module
@@ -3,16 +3,36 @@
 
 /**
  * @file
- * Demonstrate use of #ajax in forms.
+ * AJAX Examples module file with basic examples.
  *
+ */
+
+/**
+ * @defgroup ajax_examples AJAX Examples
+ * @{
+ * These examples show basic AJAX concepts.
+ *
+ * General documentation is available at
+ * @link ajax AJAX Framework documentation @endlink.
+ *
+ * The several examples here demonstrate basic AJAX usage.
+ * @}
 */
 
 /**
+ * Set up calls to drupal_get_form() for all our example cases.
+ *
  * Implements hook_menu().
  */
 function ajax_example_menu() {
   $items = array();
 
+  $items['ajax_example/simplest'] = array(
+    'title' => 'AJAX Example: simplest',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('ajax_example_simplest'),
+    'access callback' => TRUE,
+  );
   // Automatically generate checkboxes
   $items['ajax_example/autocheckboxes'] = array(
     'title' => 'AJAX Example: generate checkboxes',
@@ -32,12 +52,12 @@ function ajax_example_menu() {
   $items['ajax_example/submit_driven_ajax'] = array(
     'title' => 'AJAX Example: submit-driven AJAX',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('submit_driven_ajax'),
+    'page arguments' => array('ajax_example_submit_driven_ajax'),
     'access callback' => TRUE,
   );
 
   $items['ajax_example/advanced_commands'] = array(
-    'title' => 'Ajax Example: Advanced Commands',
+    'title' => 'Ajax Example: AJAX framework commands',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('ajax_example_advanced_commands'),
     'access callback' => TRUE,
@@ -48,10 +68,66 @@ function ajax_example_menu() {
   return $items;
 }
 
+/**
+ * @ingroup ajax_examples
+ * @{
+ */
+
+/**
+ * Simple form whose ajax-enabled 'changethis' member causes a text change
+ * in the description of the 'replace_textfield' member.
+ */
+function ajax_example_simplest($form, &$form_state) {
+  $form = array();
+  $form['changethis'] = array(
+    '#title' => t("Choose something and explain why"),
+    '#type' => 'select',
+    '#options' => array(
+      'one' => 'one',
+      'two' => 'two',
+      'three' => 'three',
+    ),
+    '#ajax' => array(
+      'callback' => 'ajax_example_simplest_callback',
+      'wrapper' => 'replace_textfield_div',
+     ),
+  );
+
+  // This entire form element will be replaced with an updated value.
+  // However, it has to have the prefix/suffix to work right, as the entire
+  // div is replaced.
+  // In this example, the description is dynamically updated during form
+  // rebuild.
+
+  $form['replace_textfield'] = array(
+    '#type' => 'textfield',
+    '#title' => t("Why"),
+    '#prefix' => '<div id="replace_textfield_div">',
+    '#suffix' => '</div>',
+  );
+
+  if (!empty($form_state['values']['changethis'])) {
+    $form['replace_textfield']['#description'] = t("Say why you chose") .  " '{$form_state['values']['changethis']}'";
+  }
+  return $form;
+}
+/**
+ * Callback for ajax_example_simplest.
+ *
+ * The form item 'replace_textfield' has already been processed and changed
+ * when the form was submitted and rebuilt during the AJAX call, so now
+ * we just return the piece of the form that changed.
+ */
+function ajax_example_simplest_callback($form, $form_state) {
+  // The form has already been submitted and updated. We can return the replaced
+  // item as it is.
+  return $form['replace_textfield'];
+}
 
 
 /**
- * A Self-configure a form based on a select element.
+ * AJAX-enabled select element causes replacement of a set of checkboxes
+ * based on the selection.
  */
 function ajax_example_autocheckboxes($form, &$form_state) {
 
@@ -100,16 +176,13 @@ function ajax_example_autocheckboxes($form, &$form_state) {
  * Callback element needs only select the portion of the form to be updated.
  * Since #ajax['callback'] return can be HTML or a renderable array (or an
  * array of commands), we can just return a piece of the form.
- * @param $form
- * @param $form_state
- * @return unknown_type
  */
 function ajax_example_autocheckboxes_callback($form, $form_state) {
   return $form['checkboxes'];
 }
 
 /**
- * A Show/hide textfields based on checkbox clicks.
+ * Show/hide textfields based on AJAX-enabled checkbox clicks.
  */
 function ajax_example_autotextfields($form, &$form_state) {
 
@@ -166,10 +239,9 @@ function ajax_example_autotextfields($form, &$form_state) {
 
 
 /**
- * Just select the piece of text we want to use as replacement text and return
- * it as a renderable array.
- * @param $form
- * @param $form_state
+ * Selects the piece of the form we want to use as replacement text and returns
+ * it as a form (renderable array).
+ *
  * @return renderable array (the textfields element)
  */
 function ajax_example_autotextfields_callback($form, $form_state) {
@@ -178,9 +250,11 @@ function ajax_example_autotextfields_callback($form, $form_state) {
 
 
 /**
- * A Hello-world AJAX. Just swaps out a markup section on submit.
+ * A very basic form which with an AJAX-enabled submit.
+ *
+ * On submit, the markup in the #markup element is updated.
  */
-function submit_driven_ajax($form, &$form_state) {
+function ajax_example_submit_driven_ajax($form, &$form_state) {
   $form['box'] = array(
     '#type' => 'markup',
     '#prefix' => '<div id="box">',
@@ -204,9 +278,6 @@ function submit_driven_ajax($form, &$form_state) {
 /**
  * Select the 'box' element, change the markup in it, and return it as a
  * renderable array.
- * @param $form
- * @param $form_state
- * @return unknown_type
  */
 function ajax_example_submit_driven_callback($form, $form_state) {
   $element = $form['box'];
diff --git ajax_example/ajax_example_advanced.inc ajax_example/ajax_example_advanced.inc
index 23d6b60..0081055 100644
--- ajax_example/ajax_example_advanced.inc
+++ ajax_example/ajax_example_advanced.inc
@@ -2,7 +2,9 @@
 // $Id$
 /**
  * @file
- * The Advanced Commands AJAX examples. This demonstrates each of the
+ * AJAX Commands examples.
+ *
+ * This demonstrates each of the
  * 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.
@@ -11,21 +13,12 @@
 
 /**
  * Form to display the AJAX Commands.
- * @param $form
- * @param $form_state
- * @return unknown_type
  */
 function ajax_example_advanced_commands($form, &$form_state) {
   $form = array();
   $form['intro'] = array(
     '#type' => 'markup',
-    '#markup' => t("<div>Demonstrates how AJAX commands can be used.</div>
-                    <div><b>Note that some of these depend currently on:</b>
-                    <ul>
-                    <li><a href='http://drupal.org/node/622922'>form_type_xxx_value fix</a></li>
-                    <li><a href='http://drupal.org/node/623310'>AJAX Changed command asterisk fix</a></li>
-                    <li><a href='http://drupal.org/node/623320'>AJAX CSS command implementation</a></li>
-                    </ul>"),
+    '#markup' => t("<div>Demonstrates how AJAX commands can be used.</div>"),
   );
 
   // Shows the 'after' command with a callback generating commands.
@@ -41,7 +34,7 @@ function ajax_example_advanced_commands($form, &$form_state) {
       'callback' => 'ajax_example_advanced_commands_after_callback',
     ),
     '#suffix' => "<div id='after_div'>Something can be inserted after this</div>
-                  <div id='after_status'>'After' Command Status: Unknown</div>"
+                  <div id='after_status'>'After' Command Status: Unknown</div>",
   );
 
   // Shows the 'alert' command.
@@ -96,7 +89,6 @@ function ajax_example_advanced_commands($form, &$form_state) {
     '#title' => t("Demonstrates the AJAX 'changed' command. If region is 'changed', it's marked with CSS. This example also puts an asterisk by changed content."),
   );
 
-  // NOTE: This won't work right until http://drupal.org/node/623310 lands.
   $form['changed_command_example_fieldset']['changed_command_example'] = array(
     '#title' => t("AJAX changed: If checked, div is marked as changed."),
     '#type' => 'checkbox',
@@ -114,7 +106,6 @@ function ajax_example_advanced_commands($form, &$form_state) {
     '#title' => t("Demonstrates the AJAX 'css' command."),
   );
 
-  // Note that this won't work until http://drupal.org/node/623320 lands.
   $form['css_command_example_fieldset']['css_command_example'] = array(
     '#title' => t("AJAX CSS: Choose the color you'd like the '#box' div to be."),
     '#type' => 'select',
@@ -236,7 +227,10 @@ function ajax_example_advanced_commands($form, &$form_state) {
   return $form;
 }
 
-
+/**
+ * 'after' callback.
+ * @see ajax_command_after()
+ */
 function ajax_example_advanced_commands_after_callback($form, $form_state) {
   $selector = '#after_div';
 
@@ -246,14 +240,20 @@ function ajax_example_advanced_commands_after_callback($form, $form_state) {
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
-
+/**
+ * 'alert' callback.
+ * @see ajax_command_alert()
+ */
 function ajax_example_advanced_commands_alert_callback($form, $form_state) {
   $commands = array();
   $commands[] = ajax_command_alert("Alert requested at " . date('r'));
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
-
+/**
+ * 'append' callback.
+ * @see ajax_command_append()
+ */
 function ajax_example_advanced_commands_append_callback($form, $form_state) {
   $selector = '#append_div';
 
@@ -263,7 +263,10 @@ function ajax_example_advanced_commands_append_callback($form, $form_state) {
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
-
+/**
+ * 'before' callback.
+ * @see ajax_command_before()
+ */
 function ajax_example_advanced_commands_before_callback($form, $form_state) {
   $selector = '#before_div';
 
@@ -273,6 +276,10 @@ function ajax_example_advanced_commands_before_callback($form, $form_state) {
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
+/**
+ * 'changed' callback.
+ * @see ajax_command_changed()
+ */
 function ajax_example_advanced_commands_changed_callback($form, $form_state) {
   $checkbox_value = $form_state['values']['changed_command_example'];
   $checkbox_value_string = $checkbox_value ? "TRUE" : "FALSE";
@@ -286,7 +293,10 @@ function ajax_example_advanced_commands_changed_callback($form, $form_state) {
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
-
+/**
+ * 'css' callback.
+ * @see ajax_command_css()
+ */
 function ajax_example_advanced_commands_css_callback($form, $form_state) {
   $selector = '#css_div';
   $color = $form_state['values']['css_command_example'];
@@ -297,7 +307,10 @@ function ajax_example_advanced_commands_css_callback($form, $form_state) {
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
-
+/**
+ * 'data' callback.
+ * @see ajax_command_data()
+ */
 function ajax_example_advanced_commands_data_callback($form, $form_state) {
   $selector = '#data_div';
   $text = $form_state['values']['data_command_example'];
@@ -309,7 +322,10 @@ function ajax_example_advanced_commands_data_callback($form, $form_state) {
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
-
+/**
+ * 'html' callback.
+ * @see ajax_command_html()
+ */
 function ajax_example_advanced_commands_html_callback($form, $form_state) {
   $text = $form_state['values']['html_command_example'];
 
@@ -319,7 +335,10 @@ function ajax_example_advanced_commands_html_callback($form, $form_state) {
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
-
+/**
+ * 'prepend' callback.
+ * @see ajax_command_prepend()
+ */
 function ajax_example_advanced_commands_prepend_callback($form, $form_state) {
   $commands = array();
   $commands[] = ajax_command_prepend('#prepend_div', "Prepended Stuff...");
@@ -327,7 +346,10 @@ function ajax_example_advanced_commands_prepend_callback($form, $form_state) {
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
-
+/**
+ * 'remove' callback.
+ * @see ajax_command_remove()
+ */
 function ajax_example_advanced_commands_remove_callback($form, $form_state) {
   $commands = array();
   $should_remove = $form_state['values']['remove_command_example'];
@@ -341,6 +363,10 @@ function ajax_example_advanced_commands_remove_callback($form, $form_state) {
   return array('#type' => 'ajax_commands', '#ajax_commands' => $commands);
 }
 
+/**
+ * 'restripe' rows callback.
+ * Rebuilds the table with the selected number of rows.
+ */
 function ajax_example_advanced_commands_restripe_num_rows($form, $form_state) {
   $num_rows = $form_state['values']['restripe_num_rows'];
   $output = "<table id='restripe_table' style='border: 1px solid black'>";
@@ -351,7 +377,10 @@ function ajax_example_advanced_commands_restripe_num_rows($form, $form_state) {
   return $output;
 }
 
-
+/**
+ * 'restripe' callback.
+ * @see ajax_command_restripe()
+ */
 function ajax_example_advanced_commands_restripe_callback($form, $form_state) {
   $commands = array();
   $commands[] = ajax_command_restripe('#restripe_table');
