diff --git wp-includes/js/template.js wp-includes/js/template.js
new file mode 100644
index 0000000..8b4e818
--- /dev/null
+++ wp-includes/js/template.js
@@ -0,0 +1,29 @@
+window.wp = window.wp || {};
+
+(function ($) {
+	var template;
+	/**
+	 * wp.template( id )
+	 *
+	 * Fetches a template by id.
+	 *
+	 * @param  {string} id   A string that corresponds to a DOM element with an id prefixed with "tmpl-".
+	 *                       For example, "attachment" maps to "tmpl-attachment".
+	 * @return {function}    A function that lazily-compiles the template requested.
+	 */
+	template = wp.template = _.memoize(function ( id ) {
+		var compiled,
+			options = {
+				evaluate:    /<#([\s\S]+?)#>/g,
+				interpolate: /\{\{\{([\s\S]+?)\}\}\}/g,
+				escape:      /\{\{([^\}]+?)\}\}(?!\})/g,
+				variable:    'data'
+			};
+
+		return function ( data ) {
+			compiled = compiled || _.template( $( '#tmpl-' + id ).html(), null, options );
+			return compiled( data );
+		};
+	});
+
+}(jQuery));
\ No newline at end of file
diff --git wp-includes/script-loader.php wp-includes/script-loader.php
index cfb865e..f208c09 100644
--- wp-includes/script-loader.php
+++ wp-includes/script-loader.php
@@ -270,7 +270,8 @@ function wp_default_scripts( &$scripts ) {
 	$scripts->add( 'json2', "/wp-includes/js/json2$suffix.js", array(), '2011-02-23');
 
 	$scripts->add( 'underscore', '/wp-includes/js/underscore.min.js', array(), '1.4.4', 1 );
-	$scripts->add( 'backbone', '/wp-includes/js/backbone.min.js', array('underscore','jquery'), '0.9.2', 1 );
+	$scripts->add( 'template', "/wp-includes/js/template$suffix.js", array('underscore'), '1.0', 1 );
+	$scripts->add( 'backbone', '/wp-includes/js/backbone.min.js', array('underscore','jquery', 'template'), '0.9.2', 1 );
 
 	$scripts->add( 'imgareaselect', "/wp-includes/js/imgareaselect/jquery.imgareaselect$suffix.js", array('jquery'), '0.9.8', 1 );
 
