diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index cc60af2..028880a 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -2391,6 +2391,59 @@ function theme_item_list($variables) {
 }
 
 /**
+ * Returns HTML for a description list.
+ *
+ * @param array $variables
+ *   An associative array containing:
+ *   - items: The preprocessed list of description list elements to render. Each
+ *     item is an associative array containing:
+ *     - tag: Either 'dt' or 'dd'.
+ *     - attributes: An array of attributes to apply to the tag.
+ *     - value: The rendered content for the tag.
+ *   - groups: The original list of groups to render. Each item is an array
+ *     containing:
+ *     - term: One of the following values:
+ *       - A string containing the term.
+ *       - A list of of strings containing terms.
+ *       - A list of render arrays containing elements to render. Each child
+ *         element will be wrapped into a DT element. Use #wrapper_attributes
+ *         to specify attributes of the DT element.
+ *     - description: One of the following values:
+ *       - A string containing the description for the term.
+ *       - A list of of strings containing descriptions for the term.
+ *       - A list of render arrays containing elements to render. Each child
+ *         element will be wrapped into a DD element. Use #wrapper_attributes
+ *         to specify attributes of the DD element.
+ *   - title: (optional) A heading for the list.
+ *   - attributes: (optional) Attributes to apply to the DL element.
+ *
+ * @return string
+ *   The rendered description list.
+ */
+function theme_dl($variables) {
+  $items = $variables['items'];
+
+  $output = '';
+  foreach ($items as $item) {
+    foreach ($item as $key => $value) {
+      $attributes = isset($item['attributes']) ? $item['attributes'] : array();
+      if ($key == 'dt') {
+        $output .= '<dt' . new Attribute($attributes) . '>' . $value . '</dt>';
+      }
+      else if ($key == 'dd') {
+        $output .= '<dd' . new Attribute($attributes) . '>' . $value . '</dd>';
+      }
+    }
+  }
+
+  if ($output !== '') {
+    $variables['attributes']['class'][] = 'definition-list';
+    $output = '<dl' . new Attribute($variables['attributes']) . '>' . $output . '</dl>';
+  }
+  return $output;
+}
+
+/**
  * Returns HTML for a "more help" link.
  *
  * @param $variables
@@ -3186,6 +3239,9 @@ function drupal_common_theme() {
     'item_list' => array(
       'variables' => array('items' => array(), 'title' => '', 'type' => 'ul', 'attributes' => array()),
     ),
+    'dl' => array(
+      'variables' => array('items' => array(), 'attributes' => array()),
+    ),
     'more_help_link' => array(
       'variables' => array('url' => NULL),
     ),
diff --git a/core/modules/block/custom_block/custom_block.pages.inc b/core/modules/block/custom_block/custom_block.pages.inc
index 439030e..2d0119a 100644
--- a/core/modules/block/custom_block/custom_block.pages.inc
+++ b/core/modules/block/custom_block/custom_block.pages.inc
@@ -35,8 +35,17 @@ function custom_block_add_page() {
     $type = reset($types);
     return custom_block_add($type);
   }
+  else {
+    $items = array();
+    foreach ($types as $type) {
+      $items[] = array(
+        'dt' => l($type->label(), 'block/add/' . $type->id()),
+        'dd' => filter_xss_admin($type->description),
+      );
+    }
+  }
 
-  return array('#theme' => 'custom_block_add_list', '#content' => $types);
+  return array('#theme' => 'dl', '#items' => $items);
 }
 
 /**
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 8019ff3..81d4d07 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -2241,6 +2241,28 @@ function node_page_default() {
       '#suffix' => '</div>',
     );
   }
+  $build['list'] = array(
+    '#theme' => 'description_list',
+    '#title' => 'Glossary',
+    '#groups' => array(),
+  );
+  $groups = &$build['list']['#groups'];
+  $groups[] = array('term' => 'Drupal', 'description' => 'A good content management system.');
+  $groups[] = array('term' => array('Joomla', 'Wordpress'), 'description' => 'Some bad content management systems. :)');
+  $groups[] = array('term' => 'Dries Buytaert', 'description' => array('Founder of Drupal.', 'Belgian guy.'));
+  $groups[] = array('term' => array('catch', 'Crell', 'sun', 'webchick'), 'description' => array('Drupal core contributors.', 'Ice-cream lovers.'));
+  $groups[] = array('term' => 'Symfony', 'description' => 'A PHP framework.');
+  $account = user_load(1);
+  $groups[] = array(
+    'term' => array(
+      array('#theme' => 'username', '#account' => $account),
+      'Root',
+    ),
+    'description' => array(
+      'The site administrator',
+      user_view($account),
+    ),
+  );
   return $build;
 }
 
