Index: wp-includes/class.wp-plugins.php
===================================================================
--- wp-includes/class.wp-plugins.php	(revision 0)
+++ wp-includes/class.wp-plugins.php	(revision 0)
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Plugins enqueue.
+ *
+ * @since WP unknown; BP unknown
+ *
+ */
+
+/**
+ * Plugins enqueue class.
+ *
+ * @uses WP_Dependencies
+ *
+ * @since WP unknown; BP unknown
+ * 
+ */
+class WP_Plugins extends WP_Dependencies {
+	var $base_url; // Full URL with trailing slash
+	var $content_url;
+
+	function __construct() {
+		do_action_ref_array( 'wp_default_plugins', array( &$this ) );
+	}
+
+	/**
+	 * Prints plugins
+	 *
+	 * Prints the plugins passed to it or the print queue.  Also prints all necessary dependencies.
+	 *
+	 * @param mixed handles (optional) Plugins to be printed.  (void) prints queue, (string) prints that plugin, (array of strings) prints those plugins.
+	 * @param int group (optional) If plugins were queued in groups prints this group number.
+	 * @return array Plugins that have been printed
+	 */
+	function print_plugins( $handles = false, $group = false ) {
+		return $this->do_items( $handles, $group );
+	}
+
+	function do_item( $handle, $group = false ) {
+		if ( !parent::do_item( $handle ) )
+			return false;
+
+		if ( 0 === $group && $this->groups[$handle] > 0 )
+			return false;
+
+		if ( null === $this->registered[$handle]->ver )
+			$ver = '';
+		else
+			$ver = $this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version;
+
+		if ( isset($this->args[$handle]) )
+			$ver = $ver ? $ver . '&amp;' . $this->args[$handle] : $this->args[$handle];
+
+		$src = $this->registered[$handle]->src;
+
+		if ( !preg_match('|^https?://|', $src) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) )
+			$src = $this->base_url . $src;
+
+		if ( !empty( $ver ) )
+			$src = add_query_arg( 'ver', $ver, $src );
+
+		$src = esc_url( apply_filters( 'plugin_loader_src', $src, $handle ) );
+
+		return true;
+	}
+
+	function set_group( $handle, $recursion, $group = false ) {
+		$grp = isset( $this->registered[$handle]->extra['group'] ) ? (int) $this->registered[$handle]->extra['group'] : 0;
+
+		if ( false !== $group && $grp > $group )
+			$grp = $group;
+
+		return parent::set_group( $handle, $recursion, $grp );
+	}
+
+	function all_deps( $handles, $recursion = false, $group = false ) {
+		$r = parent::all_deps( $handles, $recursion );
+
+		if ( !$recursion )
+			$this->to_do = apply_filters( 'print_plugins_array', $this->to_do );
+
+		return $r;
+	}
+
+	function reset() {
+		
+	}
+}
Index: wp-includes/functions.wp-plugins.php
===================================================================
--- wp-includes/functions.wp-plugins.php	(revision 0)
+++ wp-includes/functions.wp-plugins.php	(revision 0)
@@ -0,0 +1,137 @@
+<?php
+/**
+ * Plugin procedural API.
+ *
+ * @since WP unknown; BP unknown
+ *
+ */
+
+/**
+ * Prints plugin tags in document head.
+ *
+ * Called by admin-header.php and by wp_head hook. Since it is called by wp_head
+ * on every page load, the function does not instantiate the WP_Plugins object
+ * unless plugin names are explicitly passed. Does make use of already
+ * instantiated $wp_plugins if present. Use provided wp_print_plugins hook to
+ * register/enqueue new plugins.
+ *
+ * @since WP unknown; BP unknown
+ * 
+ * @see WP_Dependencies::print_plugins()
+ */
+function wp_print_plugins( $handles = false ) {
+	global $wp_plugins;
+
+	do_action( 'wp_print_plugins' );
+
+	if ( '' === $handles )
+		$handles = false;
+
+	if ( !is_a( $wp_plugins, 'WP_Plugins' ) ) {
+		if ( !$handles ) {
+			// No need to instantiate if nothing is here.
+			return array(); 
+		} else {
+			$wp_plugins = new WP_Plugins();
+		}
+	}
+
+	return $wp_plugins->do_items( $handles );
+}
+
+/**
+ * Register new Plugin file.
+ *
+ * @since WP unknown; BP unknown
+ * 
+ * @param string $handle Plugin name
+ * @param string $src Plugin url
+ * @param array $deps (optional) Array of plugin names on which this plugin depends
+ * @param string|bool $ver (optional) Plugin version (used for dependency checks), set to NULL to disable
+ * @return null
+ */
+function wp_register_plugin( $handle, $src, $deps = array(), $ver = false ) {
+	global $wp_plugins;
+
+	$wp_plugins = wp_plugin_is_a();
+	$wp_plugins->add( $handle, $src, $deps, $ver );
+}
+
+/**
+ * Remove a registered plugin.
+ *
+ * @since WP unknown; BP unknown
+ * 
+ * @see WP_Plugins::remove() For parameter information.
+ */
+function wp_deregister_plugin( $handle ) {
+	global $wp_plugins;
+
+	$wp_plugins = wp_plugin_is_a();
+	$wp_plugins->remove( $handle );
+}
+
+/**
+ * Enqueues plugin.
+ *
+ * Registers the plugin if src provided (does NOT overwrite) and enqueues.
+ *
+ * @since WP unknown; BP unknown
+ * 
+ * @see wp_register_plugin() For parameter information.
+ */
+function wp_enqueue_plugin( $handle, $src = false, $deps = array(), $ver = false ) {
+	global $wp_plugins;
+
+	$wp_plugins = wp_plugin_is_a();
+
+	if ( $src ) {
+		$_handle = explode( '?', $handle );
+		$wp_plugins->add( $_handle[0], $src, $deps, $ver );
+	}
+
+	$wp_plugins->enqueue( $handle );
+}
+
+/**
+ * Check whether plugin has been added to WordPress Plugins.
+ *
+ * The values for list defaults to 'queue', which is the same as enqueue for
+ * plugins.
+ *
+ * @since WP unknown; BP unknown
+ *
+ * @param string $handle Handle used to add plugin.
+ * @param string $list Optional, defaults to 'queue'. Others values are 'registered', 'queue', 'done', 'to_do'
+ * @return bool
+ */
+function wp_plugin_is( $handle, $list = 'queue' ) {
+	global $wp_plugins;
+
+	$wp_plugins = wp_plugin_is_a();
+	$query = $wp_plugins->query( $handle, $list );
+
+	if ( is_object( $query ) )
+		return true;
+
+	return $query;
+}
+
+/**
+ * wp_plugin_is_a
+ *
+ * Checks if global $wp_plugins exists and creates it if it does not
+ *
+ * @since WP unknown; BP unknown
+ * 
+ * @global WP_Plugins $wp_plugins Dependency class for plugins
+ * @return WP_Plugins
+ */
+function wp_plugin_is_a() {
+	global $wp_plugins;
+
+	if ( !is_a( $wp_plugins, 'WP_Plugins' ) )
+		$wp_plugins = new WP_Plugins();
+
+	return $wp_plugins;
+}
\ No newline at end of file
Index: wp-settings.php
===================================================================
--- wp-settings.php	(revision 14499)
+++ wp-settings.php	(working copy)
@@ -141,6 +141,10 @@
 	require( ABSPATH . WPINC . '/ms-deprecated.php' );
 }
 
+// Load plugin queueing files
+require( ABSPATH . WPINC . '/class.wp-plugins.php' );
+require( ABSPATH . WPINC . '/functions.wp-plugins.php' );
+
 // Define constants that rely on the API to obtain the default value.
 // Define must-use plugin directory constants, which may be overridden in the sunrise.php drop-in.
 wp_plugin_directory_constants( );
