diff --git a/wp-admin/export.php b/wp-admin/export.php
index eab8044d4b..45f1774ce8 100644
--- a/wp-admin/export.php
+++ b/wp-admin/export.php
@@ -181,7 +181,7 @@ echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n";
 <!-- 6. WordPress will then import each of the posts, comments, and categories -->
 <!--    contained in this file into your blog -->
 
-<!-- generator="wordpress/<?php bloginfo_rss('version') ?>" created="<?php echo date('Y-m-d H:i'); ?>"-->
+<?php the_generator('export');?>
 <rss version="2.0"
 	xmlns:content="http://purl.org/rss/1.0/modules/content/"
 	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
diff --git a/wp-app.php b/wp-app.php
index 44846a7972..6a0200deff 100644
--- a/wp-app.php
+++ b/wp-app.php
@@ -739,7 +739,7 @@ EOD;
 <link rel="last" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($last_page) ?>" />
 <link rel="self" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($self_page) ?>" />
 <rights type="text">Copyright <?php echo mysql2date('Y', get_lastpostdate('blog')); ?></rights>
-<generator uri="http://wordpress.com/" version="1.0.5-dc">WordPress.com Atom API</generator>
+<?php the_generator( 'atom' ); ?>
 <?php if ( have_posts() ) {
 			while ( have_posts() ) {
 				the_post();
diff --git a/wp-content/themes/classic/header.php b/wp-content/themes/classic/header.php
index 2c02a89947..7022136f7e 100644
--- a/wp-content/themes/classic/header.php
+++ b/wp-content/themes/classic/header.php
@@ -6,8 +6,6 @@
 
 	<title><?php bloginfo('name'); ?><?php wp_title(); ?></title>
 
-	<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats please -->
-
 	<style type="text/css" media="screen">
 		@import url( <?php bloginfo('stylesheet_url'); ?> );
 	</style>
diff --git a/wp-content/themes/default/header.php b/wp-content/themes/default/header.php
index 99d3962067..ec70a6af42 100644
--- a/wp-content/themes/default/header.php
+++ b/wp-content/themes/default/header.php
@@ -6,8 +6,6 @@
 
 <title><?php bloginfo('name'); ?> <?php if ( is_single() ) { ?> &raquo; Blog Archive <?php } ?> <?php wp_title(); ?></title>
 
-<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats -->
-
 <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
 <link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
 <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
diff --git a/wp-includes/default-filters.php b/wp-includes/default-filters.php
index 3fc94e8777..15fab157cf 100644
--- a/wp-includes/default-filters.php
+++ b/wp-includes/default-filters.php
@@ -141,6 +141,7 @@ add_action('wp_head', 'locale_stylesheet');
 add_action('publish_future_post', 'wp_publish_post', 10, 1);
 add_action('wp_head', 'noindex', 1);
 add_action('wp_head', 'wp_print_scripts');
+add_action('wp_head', 'wp_generator');
 if(!defined('DOING_CRON'))
 	add_action('init', 'wp_cron');
 add_action('do_feed_rdf', 'do_feed_rdf', 10, 1);
diff --git a/wp-includes/feed-atom-comments.php b/wp-includes/feed-atom-comments.php
index ee9a73b401..72897bbc6b 100644
--- a/wp-includes/feed-atom-comments.php
+++ b/wp-includes/feed-atom-comments.php
@@ -18,7 +18,7 @@ echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '" ?' . '>'
 	<subtitle type="text"><?php bloginfo_rss('description'); ?></subtitle>
 
 	<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastcommentmodified('GMT')); ?></updated>
-	<generator uri="http://wordpress.org/" version="<?php bloginfo('version'); ?>">WordPress</generator>
+	<?php the_generator( 'atom' ); ?>
 
 	<link rel="alternate" type="<?php bloginfo_rss('html_type'); ?>" href="<?php bloginfo_rss('home'); ?>" />
 	<link rel="self" type="application/atom+xml" href="<?php bloginfo_rss('comments_atom_url'); ?>" />
diff --git a/wp-includes/feed-atom.php b/wp-includes/feed-atom.php
index f80f48f9d8..0bb3c5e181 100644
--- a/wp-includes/feed-atom.php
+++ b/wp-includes/feed-atom.php
@@ -15,7 +15,7 @@ $more = 1;
 	<subtitle type="text"><?php bloginfo_rss("description") ?></subtitle>
 
 	<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT')); ?></updated>
-	<generator uri="http://wordpress.org/" version="<?php bloginfo_rss('version'); ?>">WordPress</generator>
+	<?php the_generator( 'atom' ); ?>
 
 	<link rel="alternate" type="text/html" href="<?php bloginfo_rss('home') ?>" />
 	<id><?php bloginfo('atom_url'); ?></id>
diff --git a/wp-includes/feed-rdf.php b/wp-includes/feed-rdf.php
index 1f92b23930..dd0b785571 100644
--- a/wp-includes/feed-rdf.php
+++ b/wp-includes/feed-rdf.php
@@ -4,7 +4,6 @@ $more = 1;
 
 ?>
 <?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
-<!-- generator="wordpress/<?php echo $wp_version ?>" -->
 <rdf:RDF
 	xmlns="http://purl.org/rss/1.0/"
 	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
@@ -19,7 +18,7 @@ $more = 1;
 	<link><?php bloginfo_rss('url') ?></link>
 	<description><?php bloginfo_rss('description') ?></description>
 	<dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></dc:date>
-	<admin:generatorAgent rdf:resource="http://wordpress.org/?v=<?php echo $wp_version ?>"/>
+	<?php the_generator( 'rdf' ); ?>
 	<sy:updatePeriod>hourly</sy:updatePeriod>
 	<sy:updateFrequency>1</sy:updateFrequency>
 	<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
diff --git a/wp-includes/feed-rss.php b/wp-includes/feed-rss.php
index 469e4bc8c9..900dcec8c5 100644
--- a/wp-includes/feed-rss.php
+++ b/wp-includes/feed-rss.php
@@ -4,7 +4,7 @@ $more = 1;
 
 ?>
 <?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
-<!-- generator="wordpress/<?php echo $wp_version ?>" -->
+<?php the_generator( 'comment' ); ?>
 <rss version="0.92">
 <channel>
 	<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
diff --git a/wp-includes/feed-rss2-comments.php b/wp-includes/feed-rss2-comments.php
index 7bd5ae2954..f077a16d85 100644
--- a/wp-includes/feed-rss2-comments.php
+++ b/wp-includes/feed-rss2-comments.php
@@ -3,7 +3,6 @@ header('Content-Type: text/xml;charset=' . get_option('blog_charset'), true);
 
 echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
 ?>
-<!-- generator="wordpress/<?php echo $wp_version ?>" -->
 <rss version="2.0"
 	xmlns:content="http://purl.org/rss/1.0/modules/content/"
 	xmlns:dc="http://purl.org/dc/elements/1.1/"
@@ -20,7 +19,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
 	<link><?php (is_single()) ? the_permalink_rss() : bloginfo_rss("url") ?></link>
 	<description><?php bloginfo_rss("description") ?></description>
 	<pubDate><?php echo gmdate('r'); ?></pubDate>
-	<generator>http://wordpress.org/?v=<?php echo $wp_version ?></generator>
+	<?php the_generator( 'rss2' ); ?>
 	<?php do_action('commentsrss2_head'); ?>
 <?php
 if ( have_comments() ) : while ( have_comments() ) : the_comment();
diff --git a/wp-includes/feed-rss2.php b/wp-includes/feed-rss2.php
index 21d9b8e5a5..c40814e831 100644
--- a/wp-includes/feed-rss2.php
+++ b/wp-includes/feed-rss2.php
@@ -5,7 +5,6 @@ $more = 1;
 ?>
 <?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
 
-<!-- generator="wordpress/<?php bloginfo_rss('version') ?>" -->
 <rss version="2.0"
 	xmlns:content="http://purl.org/rss/1.0/modules/content/"
 	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
@@ -18,7 +17,7 @@ $more = 1;
 	<link><?php bloginfo_rss('url') ?></link>
 	<description><?php bloginfo_rss("description") ?></description>
 	<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></pubDate>
-	<generator>http://wordpress.org/?v=<?php bloginfo_rss('version'); ?></generator>
+	<?php the_generator( 'rss2' ); ?>
 	<language><?php echo get_option('rss_language'); ?></language>
 	<?php do_action('rss2_head'); ?>
 	<?php while( have_posts()) : the_post(); ?>
diff --git a/wp-includes/general-template.php b/wp-includes/general-template.php
index 2d13616e78..6ae8796543 100644
--- a/wp-includes/general-template.php
+++ b/wp-includes/general-template.php
@@ -1075,4 +1075,50 @@ function wp_admin_css( $file = 'wp-admin' ) {
 	}
 }
 
+/**
+ * Outputs the XHTML generator that is generated on the wp_head hook.
+ */
+function wp_generator()
+{
+	the_generator( apply_filters( 'wp_generator_type', 'xhtml' ) );
+}
+
+/**
+ * Outputs the generator XML or Comment for RSS, ATOM, etc.
+ * @param {String} $type The type of generator to return.
+ */
+function the_generator ( $type ) {
+	echo apply_filters('the_generator',get_the_generator($type),$type) . "\n";
+}
+
+/**
+ * Creates the generator XML or Comment for RSS, ATOM, etc.
+ * @param {String} $type The type of generator to return.
+ */
+function get_the_generator ( $type ) {
+	switch ($type) {
+		case 'html':
+			$gen = '<meta name="generator" content="WordPress/' . get_bloginfo( 'version' ) . '">';
+			break;
+		case 'xhtml':
+			$gen = '<meta name="generator" content="WordPress/' . get_bloginfo( 'version' ) . '" />';
+			break;
+		case 'atom':
+			$gen = '<generator uri="http://wordpress.org/" version="' . get_bloginfo_rss( 'version' ) . '">WordPress</generator>';
+			break;
+		case 'rss2':
+			$gen = '<generator>http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>';
+			break;
+		case 'rdf':
+			$gen = '<admin:generatorAgent rdf:resource="http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '" />';
+			break;
+		case 'comment':
+			$gen = '<!-- generator="WordPress/' . get_bloginfo( 'version' ) . '" -->';
+			break;
+		case 'export':
+			$gen = '<!-- generator="wordpress/' . get_bloginfo_rss('version') . '" created="'. date('Y-m-d H:i') . '"-->';
+			break;
+	}
+	return apply_filters( "get_the_generator_{$type}", $gen, $type );
+}
 ?>
diff --git a/wp-links-opml.php b/wp-links-opml.php
index 2ee7751684..3adaba9743 100644
--- a/wp-links-opml.php
+++ b/wp-links-opml.php
@@ -14,7 +14,7 @@ if ((empty ($link_cat)) || ($link_cat == 'all') || ($link_cat == '0')) {
 	$link_cat = intval($link_cat);
 }
 ?><?php echo '<?xml version="1.0"?'.">\n"; ?>
-<!-- generator="wordpress/<?php bloginfo_rss('version') ?>" -->
+<?php the_generator( 'comment' ); ?>
 <opml version="1.0">
 	<head>
 		<title>Links for <?php echo attribute_escape(get_bloginfo('name', 'display').$cat_name); ?></title>