Index: src/wp-includes/general-template.php
===================================================================
--- src/wp-includes/general-template.php	(revision 36252)
+++ src/wp-includes/general-template.php	(working copy)
@@ -1520,6 +1520,10 @@
  *     @type string     $order           Whether to use ascending or descending order. Accepts 'ASC', or 'DESC'.
  *                                       Default 'DESC'.
  *     @type string     $post_type       Post type. Default 'post'.
+ *     @type string     $title           List heading. Passing a null or empty value will result in no heading, and the list
+ *                                       will not be wrapped and $title_before and $title_after become useless. Default ''.
+ *     @type string     $title_before    Text or HTML to precede the title. Default ''.
+ *     @type string     $title_after     Text or HTML to follow the list of pages. Default ''.
  * }
  * @return string|void String when retrieving.
  */
@@ -1531,7 +1535,9 @@
 		'format' => 'html', 'before' => '',
 		'after' => '', 'show_post_count' => false,
 		'echo' => 1, 'order' => 'DESC',
-		'post_type' => 'post'
+		'post_type' => 'post', 'title' => '',
+		'title_before' => '', 'title_after' => '',
+		'list_before' => '', 'list_after' => ''
 	);
 
 	$r = wp_parse_args( $args, $defaults );
@@ -1599,6 +1605,9 @@
 
 	$output = '';
 
+	if ( '' != $r['title'] )
+		$output .= $r['title_before']. $r['title']. $r['title_after'];
+
 	$last_changed = wp_cache_get( 'last_changed', 'posts' );
 	if ( ! $last_changed ) {
 		$last_changed = microtime();
@@ -1730,6 +1739,7 @@
 			}
 		}
 	}
+
 	if ( $r['echo'] ) {
 		echo $output;
 	} else {
Index: src/wp-includes/post-template.php
===================================================================
--- src/wp-includes/post-template.php	(revision 36252)
+++ src/wp-includes/post-template.php	(working copy)
@@ -1124,6 +1124,8 @@
  *     @type string $title_li     List heading. Passing a null or empty value will result in no heading, and the list
  *                                will not be wrapped with unordered list `<ul>` tags. Default 'Pages'.
  *     @type Walker $walker       Walker instance to use for listing pages. Default empty (Walker_Page).
+ *     @type string $before       Text or HTML to precede the list of pages. Default <li class="pagenav">
+ *     @type string $after        Text or HTML to follow the list of pages. Default </li>
  * }
  * @return string|void HTML list of pages.
  */
@@ -1135,6 +1137,7 @@
 		'title_li' => __( 'Pages' ), 'echo' => 1,
 		'authors' => '', 'sort_column' => 'menu_order, post_title',
 		'link_before' => '', 'link_after' => '', 'walker' => '',
+		'before' => '<li class="pagenav">', 'after' => '</li>'
 	);
 
 	$r = wp_parse_args( $args, $defaults );
@@ -1163,7 +1166,7 @@
 
 	if ( ! empty( $pages ) ) {
 		if ( $r['title_li'] ) {
-			$output .= '<li class="pagenav">' . $r['title_li'] . '<ul>';
+			$output .= $r['before'] . $r['title_li'] . '<ul>';
 		}
 		global $wp_query;
 		if ( is_page() || is_attachment() || $wp_query->is_posts_page ) {
@@ -1178,7 +1181,7 @@
 		$output .= walk_page_tree( $pages, $r['depth'], $current_page, $r );
 
 		if ( $r['title_li'] ) {
-			$output .= '</ul></li>';
+			$output .= '</ul>' . $r['after'];
 		}
 	}
 
