diff --git a/sites/all/modules/unl_blocks/unl_blocks.module b/sites/all/modules/unl_blocks/unl_blocks.module
index 20a156e79ba2b3694f27ee513ee1ad93094d22fa..edd2a6720f165d01efa68cb6cf5dc291d252e0d1 100644
--- a/sites/all/modules/unl_blocks/unl_blocks.module
+++ b/sites/all/modules/unl_blocks/unl_blocks.module
@@ -3,9 +3,7 @@
 
 /**
  * @file
- * 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.
+ * Adds blocks for editable regions of the UNL template.
  */
 
 /**
@@ -17,12 +15,11 @@ function unl_blocks_block_info() {
   // This hook returns an array, each component of which is an array of block
   // information. The array keys are the 'delta' values used in other block
   // hooks.
-
+  
   // The required block information is a block description, which is shown
   // 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.
+  
   $blocks['leftcollinks'] = array(
     'info'       => t('Related Links'),
     'status'     => TRUE,
@@ -31,10 +28,6 @@ function unl_blocks_block_info() {
     'visibility' => 1,
     'cache'      => DRUPAL_CACHE_GLOBAL,
   );
-
-  // 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.
   $blocks['contactinfo'] = array(
     'info'       => t('Contact Info'),
     'status'     => TRUE,
@@ -43,6 +36,22 @@ function unl_blocks_block_info() {
     'visibility' => 1,
     'cache'      => DRUPAL_CACHE_GLOBAL,
   );
+  $blocks['optionalfooter'] = array(
+    'info'       => t('Optional Footer'),
+    'status'     => TRUE,
+    'region'     => 'optionalfooter',
+    'weight'     => 0,
+    'visibility' => 1,
+    'cache'      => DRUPAL_CACHE_GLOBAL,
+  );
+  $blocks['footercontent'] = array(
+    'info'       => t('Footer Content'),
+    'status'     => TRUE,
+    'region'     => 'footercontent',
+    'weight'     => 0,
+    'visibility' => 1,
+    'cache'      => DRUPAL_CACHE_GLOBAL,
+  );
 
   return $blocks;
 }
@@ -67,9 +76,37 @@ function unl_blocks_block_configure($delta = '') {
       '#title' => t('Block contents'),
       '#size' => 60,
       '#description' => t('For more info see http://www1.unl.edu/wdn/wiki/Related_Links'),
-      '#default_value' => variable_get('unl_blocks_leftcollinks',  t('<ul><li><a href="http://wdn.unl.edu/">WDN</a></li></ul>')),
+      '#default_value' => variable_get('unl_blocks_leftcollinks',  t('<ul><li><a href="http://wdn.unl.edu/">Web Developer Network</a></li></ul>')),
     );
   }
+  if ($delta == 'contactinfo') {
+    $form['unl_blocks_contactinfo'] = array(
+      '#type' => 'textarea',
+      '#title' => t('Block contents'),
+      '#size' => 60,
+      '#description' => t('For more info see http://www1.unl.edu/wdn/wiki/Contact_Info'),
+      '#default_value' => variable_get('unl_blocks_contactinfo'),
+    );
+  }
+  if ($delta == 'optionalfooter') {
+    $form['unl_blocks_optionalfooter'] = array(
+      '#type' => 'textarea',
+      '#title' => t('Block contents'),
+      '#size' => 60,
+      '#description' => t('Not currently used'),
+      '#default_value' => variable_get('unl_blocks_optionalfooter'),
+    );
+  }
+  if ($delta == 'footercontent') {
+    $form['unl_blocks_footercontent'] = array(
+      '#type' => 'textarea',
+      '#title' => t('Block contents'),
+      '#size' => 60,
+      '#description' => t('Leave this blank to get the standard/default UNL copyright line.  For more info see http://www1.unl.edu/wdn/wiki/Base_Footer'),
+      '#default_value' => variable_get('unl_blocks_footercontent'),
+    );
+  }
+  
   return $form;
 }
 
@@ -86,6 +123,16 @@ function unl_blocks_block_save($delta = '', $edit = array()) {
     // Have Drupal save the string to the database.
     variable_set('unl_blocks_leftcollinks', $edit['unl_blocks_leftcollinks']);
   }
+  if ($delta == 'contactinfo') {
+    variable_set('unl_blocks_contactinfo', $edit['unl_blocks_contactinfo']);
+  }
+  if ($delta == 'optionalfooter') {
+    variable_set('unl_blocks_optionalfooter', $edit['unl_blocks_optionalfooter']);
+  }
+  if ($delta == 'footercontent') {
+    variable_set('unl_blocks_footercontent', $edit['unl_blocks_footercontent']);
+  }
+  
   return;
 }
 
@@ -95,19 +142,26 @@ function unl_blocks_block_save($delta = '', $edit = array()) {
  * This hook generates the contents of the blocks themselves.
  */
 function unl_blocks_block_view($delta = '') {
+  $block = array();
   //The $delta parameter tells us which block is being requested.
   switch ($delta) {
     case 'leftcollinks':
       // 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.
-      $block['subject'] = t('Title of first block (leftcollinks)');
+      $block['subject'] = t('Related Links');
       // The content of the block is typically generated by calling a custom
       // function.
       $block['content'] = unl_blocks_contents($delta);
       break;
-    case 'example_empty':
-      $block['subject'] = t('Title of second block (example_empty)');
+    case 'contactinfo':
+      $block['subject'] = t('Contacting Us');
+      $block['content'] = unl_blocks_contents($delta);
+      break;
+    case 'optionalfooter':
+      $block['content'] = unl_blocks_contents($delta);
+      break;
+    case 'footercontent':
       $block['content'] = unl_blocks_contents($delta);
       break;
   }
@@ -124,73 +178,11 @@ function unl_blocks_contents($which_block) {
       // content for their blocks. Here, we'll just use the variable set in the
       // block configuration or, if none has set, a default value.
       return variable_get('unl_blocks_leftcollinks');
-
-    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
-      // the block at all. This block will not be displayed.
-      return;
-  }
-}
-
-/*
- * The following hooks can be used to alter blocks
- * provided by your own or other modules.
- */
-
-/**
- * Implements hook_block_list_alter().
- *
- * This hook allows you to add, remove or modify blocks in the block list. The
- * block list contains the block definitions. This example requires
- * search module and the search block enabled
- * to see how this hook implementation works.
- *
- * You may also be interested in hook_block_info_alter(), which allows changes
- * to the behavior of blocks.
- */
-function unl_blocks_block_list_alter(&$blocks) {
-  // We are going to make the search block sticky on bottom of regions. For
-  // this example, we will modify the block list and append the search block at
-  // the end of the list, so even if the administrator configures the block to
-  // be on the top of the region, it will demote to bottom again.
-  foreach ($blocks as $bid => $block) {
-    if (($block->module == 'search') && ($block->delta == 'form')) {
-      // Remove the block from the list and append to the end.
-      unset($blocks[$bid]);
-      $blocks[$bid] = $block;
-      break;
-    }
-  }
-}
-
-/**
- * Implements hook_block_view_alter().
- *
- * This hook allows you to modify the output of any block in the system.
- *
- * In addition, instead of hook_block_view_alter(), which is called for all
- * blocks, you can also use hook_block_view_MODULE_DELTA_alter() to alter a
- * specific block.
- *
- * We are going to uppercase the title of any block if the string "magic string"
- * is encountered in the content. If we were changing only our block using
- * hook_block_view_MODULE_DELTA_alter to do this, we would have used the
- * function:
- * unl_blocks_block_view_unl_blocks_leftcollinks_alter()
- *
- * To demonstrate the effect of this hook, you can use the
- * 'configurable_text_string' block created by this module and add the
- * text 'magic string' into the configuration.
- */
-function unl_blocks_block_view_alter(&$data, $block) {
-  // Verify the we have raw text content
-  if (!isset($data['content']) || !is_string($data['content'])) {
-    return;
-  }
-
-  // If the content contains the string: 'magic string', uppercase the title.
-  if (strstr($data['content'], 'magic string')) {
-    $data['subject'] = isset($data['subject']) ? drupal_strtoupper($data['subject']) : '';
+    case 'contactinfo':
+      return variable_get('unl_blocks_contactinfo');
+    case 'optionalfooter':
+      return variable_get('unl_blocks_optionalfooter');
+    case 'footercontent':
+      return variable_get('unl_blocks_footercontent');
   }
 }