diff --git a/includes/common.inc b/includes/common.inc
index aab8fa1..b808ea3 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -6415,7 +6415,7 @@ function drupal_common_theme() {
       'variables' => array('text' => NULL, 'path' => NULL, 'options' => array()),
     ),
     'links' => array(
-      'variables' => array('links' => NULL, 'attributes' => array('class' => array('links')), 'heading' => array()),
+      'variables' => array('links' => NULL, 'type' => 'ul', 'attributes' => array('class' => array('links')), 'heading' => array()),
     ),
     'image' => array(
       // HTML 4 and XHTML 1.0 always require an alt attribute. The HTML 5 draft
diff --git a/includes/theme.inc b/includes/theme.inc
index c211248..d9f67ab 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -1407,11 +1407,13 @@ function theme_link($variables) {
  *     navigate to or skip the links. See
  *     http://juicystudio.com/article/screen-readers-display-none.php and
  *     http://www.w3.org/TR/WCAG-TECHS/H42.html for more information.
+ *   - type: The type of list to return (e.g. "ul", "ol" or "menu").
  */
 function theme_links($variables) {
   $links = $variables['links'];
   $attributes = $variables['attributes'];
   $heading = $variables['heading'];
+  $type = $variables['type'];
   global $language_url;
   $output = '';
 
@@ -1437,7 +1439,7 @@ function theme_links($variables) {
       $output .= '>' . check_plain($heading['text']) . '</' . $heading['level'] . '>';
     }
 
-    $output .= '<ul' . drupal_attributes($attributes) . '>';
+    $output .= '<' . $type . drupal_attributes($attributes) . '>';
 
     $num_links = count($links);
     $i = 1;
@@ -1478,7 +1480,7 @@ function theme_links($variables) {
       $output .= "</li>\n";
     }
 
-    $output .= '</ul>';
+    $output .= '</'. $type . '>';
   }
 
   return $output;

