diff --git block_example/block_example.info block_example/block_example.info
index 8c0bc39..391695f 100644
--- block_example/block_example.info
+++ block_example/block_example.info
@@ -1,5 +1,4 @@
 ; $Id$
-
 name = Block Example
 description = An example outlining how a module can define blocks.
 package = Example modules
diff --git block_example/block_example.install block_example/block_example.install
index 4009998..cc62acb 100644
--- block_example/block_example.install
+++ block_example/block_example.install
@@ -10,6 +10,5 @@
  * Implements hook_uninstall().
  */
 function block_example_uninstall() {
-
   variable_del('block_example_string');
 }
diff --git block_example/block_example.module block_example/block_example.module
index 769b1f0..8a3055c 100755
--- block_example/block_example.module
+++ block_example/block_example.module
@@ -9,9 +9,33 @@
  */
 
 /**
+ * Implements hook_menu().
+ *
+ * Provides a default page to explain what this module does.
+ */
+function block_example_menu() {
+  $items['examples/block_example'] = array(
+    'page callback' => 'block_example_page',
+    'access callback' => TRUE,
+    'title' => 'Block Example',
+  );
+  return $items;
+}
+
+/**
+ * Simple page function to explain what the block example is about.
+ */
+function block_example_page() {
+  $page = array(
+    '#type' => 'markup',
+    '#markup' => t('The Block Example provides two sample blocks which demonstrate the various block APIs. To experiment with the blocks, enable and configure them on <a href="@url">the block admin page</a>.', array('@url' => url('admin/structure/block'))),
+  );
+  return $page;
+}
+/**
  * Implements hook_block_info().
  *
- * This hook declares to Drupal what blocks are provided by the module.
+ * This hook declares what blocks are provided by the module.
  */
 function block_example_block_info() {
   // This hook returns an array, each component of which is an array of block
@@ -22,21 +46,23 @@ function block_example_block_info() {
   // to the site administrator in the list of possible blocks. You can also
   // provide initial settings for block weight, status, etc.
 
-  // This sample only provides a description string.
+  // Many options are defined in hook_block_info():
   $blocks['example_configurable_text'] = array(
-    'info'       => t('Example: configurable text string'),
+    // info: The name of the block.
+    'info' => t('Example: configurable text string'),
+    // Block caching options (per role, per user, etc.)
+    'cache' => DRUPAL_CACHE_PER_ROLE, // default
   );
 
   // This sample shows how to provide default settings. In this case we'll
   // enable the block in the first sidebar and make it visible only on
-  // 'node/*' pages.
+  // 'node/*' pages. See the hook_block_info() documentation for these.
   $blocks['example_empty'] = array(
-    'info'       => t('Example: empty block'),
-    'status'     => TRUE,
-    'region'     => 'sidebar_first',
-    'weight'     => 0,
-    'visibility' => 1,
-    'pages'      => 'node/*',
+    'info' => t('Example: empty block'),
+    'status' => TRUE,
+    'region' => 'sidebar_first',  // Not usually provided.
+    'visibility' => 1,  // Not usually provided.
+    'pages' => 'node/*', // Not usually provided here.
   );
 
   return $blocks;
@@ -95,7 +121,7 @@ function block_example_block_view($delta = '') {
     case 'example_configurable_text':
       // The subject is displayed at the top of the block. Note that it
       // should be passed through t() for translation. The title configured
-      // for the block using Drupal UI superseeds this one.
+      // for the block using Drupal UI supercedes this one.
       $block['subject'] = t('Title of first block (example_configurable_text)');
       // The content of the block is typically generated by calling a custom
       // function.
@@ -120,7 +146,7 @@ function block_example_contents($which_block) {
       // block configuration or, if none has set, a default value.
       // Block content can be returned in two formats: renderable arrays
       // (as here) are preferred though a simple string will work as well.
-      return array('#markup' => variable_get('block_example_string',  t('A default value.')));
+      return array('#markup' => variable_get('block_example_string',  t('A default value. This block was created at %time', array('%time' => date('c')))));
     case 'example_empty':
       // It is possible that a block not have any content, since it is
       // probably dynamically constructed. In this case, Drupal will not display
diff --git block_example/block_example.test block_example/block_example.test
index 8b2dc16..69c40a7 100644
--- block_example/block_example.test
+++ block_example/block_example.test
@@ -3,11 +3,7 @@
 
 /**
  * @file
- * Test case for Testing the block example module.
- *
- * This file contains the test cases to check if module is performing as
- * expected.
- *
+ * Test case for testing the block example module.
  */
 class BlockExampleTestCase extends DrupalWebTestCase {
   protected $web_user;
@@ -15,7 +11,7 @@ class BlockExampleTestCase extends DrupalWebTestCase {
   public static function getInfo() {
     return array(
       'name' => 'Block example functionality',
-      'description' => 'Test the configuration options and veiwing block created by Block Example module.',
+      'description' => 'Test the configuration options and block created by Block Example module.',
       'group' => 'Examples',
     );
   }
@@ -31,13 +27,14 @@ class BlockExampleTestCase extends DrupalWebTestCase {
   }
 
   /**
-   * Login user, create an example node, and test block functionality through the admin and user interfaces.
+   * Login user, create an example node, and test block functionality through
+   * the admin and user interfaces.
    */
   function testBlockExampleBasic() {
     // Login the admin user.
     $this->drupalLogin($this->web_user);
 
-    // Find the blocks in the settings page
+    // Find the blocks in the settings page.
     $this->drupalGet('admin/structure/block');
     $this->assertRaw(t('Example: configurable text string'), t('Block configurable-string found.'));
     $this->assertRaw(t('Example: empty block'), t('Block empty-block found.'));
@@ -77,9 +74,9 @@ class BlockExampleTestCase extends DrupalWebTestCase {
     $this->assertRaw( $string, t('Content of configurable text block successfully verified.'));
     $this->assertText(t('Title of first block (example_configurable_text)'), t('hook_block_view_alter implementation successfully verified.'));
 
-    // Verify that search block is at the bottom of the region..
+    // Verify that search block is at the bottom of the region.
 
-    // Enable the search block on top of sidebar_first
+    // Enable the search block on top of sidebar_first.
     $block_options = array(
       'blocks[search_form][region]' => 'sidebar_first',
       'blocks[search_form][weight]' => -9,
