Index: wp-content/themes/twentyten/functions.php
===================================================================
--- wp-content/themes/twentyten/functions.php	(revision 14044)
+++ wp-content/themes/twentyten/functions.php	(working copy)
@@ -284,78 +284,22 @@
 }
 endif;
 
-if ( ! function_exists( 'twentyten_cat_list' ) ) :
-/**
- * Returns the list of categories
- *
- * Returns the list of categories based on if we are or are
- * not browsing a category archive page.
- *
- * @uses twentyten_term_list
- *
- * @return string
- */
-function twentyten_cat_list() {
-	return twentyten_term_list( 'category', ', ', __( 'Posted in %s', 'twentyten' ), __( 'Also posted in %s', 'twentyten' ) );
-}
-endif;
 
-if ( ! function_exists( 'twentyten_tag_list' ) ) :
-/**
- * Returns the list of tags
- *
- * Returns the list of tags based on if we are or are not
- * browsing a tag archive page
- *
- * @uses twentyten_term_list
- *
- * @return string
- */
-function twentyten_tag_list() {
-	return twentyten_term_list( 'post_tag', ', ', __( 'Tagged %s', 'twentyten' ), __( 'Also tagged %s', 'twentyten' ) );
+add_filter( 'term_links-category', 'twentyten_term_filter' );
+add_filter( 'term_links-post_tag', 'twentyten_term_filter' );
+function twentyten_term_filter( $term_links ) {
+	global $wp_query;
+	if ( ! is_tax() && ! is_category() && ! is_tag() )
+		return $term_links;
+	$term = $wp_query->get_queried_object();
+	if ( is_wp_error( $term ) )
+		return $term_links;
+	if ( isset( $term_links[ $term->slug ] ) )
+		unset( $term_links[ $term->slug ] );	
+	return $term_links;
 }
-endif;
 
-
-if ( ! function_exists( 'twentyten_term_list' ) ) :
 /**
- * Returns the list of taxonomy items in multiple ways
- *
- * Returns the list of taxonomy items differently based on
- * if we are browsing a term archive page or a different
- * type of page.  If browsing a term archive page and the
- * post has no other taxonomied terms, it returns empty
- *
- * @return string
- */
-function twentyten_term_list( $taxonomy, $glue = ', ', $text = '', $also_text = '' ) {
-	global $wp_query, $post;
-	$current_term = $wp_query->get_queried_object();
-	$terms = wp_get_object_terms( $post->ID, $taxonomy );
-	// If we're viewing a Taxonomy page..
-	if ( isset( $current_term->taxonomy ) && $taxonomy == $current_term->taxonomy ) {
-		// Remove the term from display.
-		foreach ( (array) $terms as $key => $term ) {
-			if ( $term->term_id == $current_term->term_id ) {
-				unset( $terms[$key] );
-				break;
-			}
-		}
-		// Change to Also text as we've now removed something from the terms list.
-		$text = $also_text;
-	}
-	$tlist = array();
-	$rel = 'category' == $taxonomy ? 'rel="category"' : 'rel="tag"';
-	foreach ( (array) $terms as $term ) {
-		$tlist[] = '<a href="' . get_term_link( $term, $taxonomy ) . '" title="' . esc_attr( sprintf( __( 'View all posts in %s', 'twentyten' ), $term->name ) ) . '" ' . $rel . '>' . $term->name . '</a>';
-	}
-	if ( ! empty( $tlist ) )
-		return sprintf( $text, join( $glue, $tlist ) );
-	return '';
-}
-endif;
-
-/**
  * Register widgetized areas, including two sidebars and four widget-ready columns in the footer.
  *
  * To override twentyten_widgets_init() in a child theme, remove the action hook and add your own
Index: wp-content/themes/twentyten/loop.php
===================================================================
--- wp-content/themes/twentyten/loop.php	(revision 14044)
+++ wp-content/themes/twentyten/loop.php	(working copy)
@@ -142,13 +142,10 @@
 	<?php endif; ?>
 
 			<div class="entry-utility">
-				<span class="cat-links"><span class="entry-utility-prep entry-utility-prep-cat-links"><?php echo twentyten_cat_list(); ?></span></span>
-				<span class="meta-sep"> | </span>
-				<?php $tags_text = twentyten_tag_list(); ?>
-				<?php if ( ! empty( $tags_text ) ) : ?>
-				<span class="tag-links"><span class="entry-utility-prep entry-utility-prep-tag-links"><?php echo $tags_text; ?></span></span>
-				<span class="meta-sep"> | </span>
-				<?php endif; //$tags_text ?>
+				<?php $also_posted_in = is_category() ? __( 'Also posted in', 'twentyten' ) : __( 'Posted in', 'twentyten' );
+				echo get_the_term_list( 0, 'category', '<span class="cat-links"><span class="entry-utility-prep entry-utility-prep-cat-links">' . $also_posted_in . ' ', ', ', '</span></span> <span class="meta-sep"> | </span>' );
+				$also_tagged = ( is_tag() ) ? __( 'Also tagged', 'twentyten' ) : __( 'Tagged', 'twentyten' );
+				the_tags( '<span class="tag-links"><span class="entry-utility-prep entry-utility-prep-tag-links">' . $also_tagged . ' ', ', ', '</span></span> <span class="meta-sep"> | </span>' ); ?>
 				<span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></span>
 				<?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
 			</div><!-- #entry-utility -->
Index: wp-includes/category-template.php
===================================================================
--- wp-includes/category-template.php	(revision 14019)
+++ wp-includes/category-template.php	(working copy)
@@ -939,11 +939,13 @@
 		$link = get_term_link( $term, $taxonomy );
 		if ( is_wp_error( $link ) )
 			return $link;
-		$term_links[] = '<a href="' . $link . '" rel="tag">' . $term->name . '</a>';
+		$term_links[ $term->slug ] = '<a href="' . $link . '" rel="tag">' . $term->name . '</a>';
 	}
 
 	$term_links = apply_filters( "term_links-$taxonomy", $term_links );
 
+	if ( empty( $term_links ) )
+		return '';
 	return $before . join( $sep, $term_links ) . $after;
 }
 
