diff --git a/system/libraries/Controller.php b/system/libraries/Controller.php
index b09be6c..88b49a9 100644
--- a/system/libraries/Controller.php
+++ b/system/libraries/Controller.php
@@ -29,355 +29,39 @@
  */
 class Controller extends CI_Base {
 
-	var $_ci_models			= array();
 	var $_ci_scaffolding	= FALSE;
 	var $_ci_scaff_table	= FALSE;
 	
 	/**
 	 * Constructor
 	 *
-	 * Loads the base classes needed to run CI, and runs the "autoload"
-	 * routine which loads the systems specified in the "autoload" config file.
+	 * Calls the initialize() function
 	 */
 	function Controller()
 	{	
 		parent::CI_Base();
 		
-		// Assign all the class objects that were instantiated by the
-		// front controller to local class variables so that CI can be 
-		// run as one big super object.
-		$this->_ci_assign_core();
-		
-		// Load everything specified in the autoload.php file
-		$this->load->_ci_autoloader($this->_ci_autoload());
-
-		// This allows anything loaded using $this->load (viwes, files, etc.)
-		// to become accessible from within the Controller class functions.
-		foreach (get_object_vars($this) as $key => $var)
-		{
-			if (is_object($var))
-			{
-				$this->load->$key =& $this->$key;
-			}
-		}
+		$this->_ci_initialize();
 		
 		log_message('debug', "Controller Class Initialized");
 	}
-   	
+  
 	// --------------------------------------------------------------------
 
 	/**
-	 * Initialization Handler
+	 * Initialize
 	 *
-	 * This function loads the requested class.
-	 *
-	 * @access	private
-	 * @param 	string	the item that is being loaded
-	 * @param	mixed	any additional parameters
-	 * @return 	void
-	 */
-	function _ci_load_class($class, $params = NULL)
-	{	
-		// Prep the class name
-		$class = strtolower(str_replace(EXT, '', $class));
-		
-		// Bug fix for backward compat.  
-		// Kill this at some point in the future
-		if ($class == 'unit_test')
-		{
-			$class = 'unit';
-		}
-
-		// Is this a class extension request?	
-		if (substr($class, 0, 3) == 'my_')
-		{
-			$class = preg_replace("/my_(.+)/", "\\1", $class);
-			$extend = TRUE;
-		}
-		else
-		{
-			$extend = FALSE;
-		}
-		
-		// Does THIS file (Controller.php) contain an initialization
-		// function that maps to the requested class?
-		
-		$method = '_ci_init_'.$class;
-		
-		if (method_exists($this, $method))
-		{		
-			if (is_null($params))
-			{
-				$this->$method();
-			}
-			else
-			{
-				$this->$method($params);
-			}		
-		
-			// We're done...
-			return TRUE;
-		}
-		
-		// Are we extending one of the base classes?
-		if ($extend == TRUE)
-		{
-			// Load the requested library from the main system/libraries folder
-			if (file_exists(BASEPATH.'libraries/'.ucfirst($class).EXT))
-			{
-				include_once(BASEPATH.'libraries/'.ucfirst($class).EXT);
-			}
-			
-			// Now look for a matching library
-			foreach (array(ucfirst($class), $class) as $filename)
-			{
-				if (file_exists(APPPATH.'libraries/'.$filename.EXT))
-				{
-					include_once(APPPATH.'libraries/'.$filename.EXT);	
-				}
-			}
-			
-			return $this->_ci_init_class($filename, 'MY_', $params);
-		}
-		else
-		{		
-			// Lets search for the requested library file and load it.
-			// For backward compatibility we'll test for filenames that are
-			// both uppercase and lower.
-			foreach (array(ucfirst($class), $class) as $filename)
-			{
-				for ($i = 1; $i < 3; $i++)
-				{
-					$path = ($i % 2) ? APPPATH : BASEPATH;
-				
-					if (file_exists($path.'libraries/'.$filename.EXT))
-					{
-						include_once($path.'libraries/'.$filename.EXT);
-						return $this->_ci_init_class($filename, '', $params);
-					}
-				}
-			}
-		}
-		
-		// If we got this far we were unable to find the requested class
-		log_message('error', "Unable to load the requested class: ".$class);
-		show_error("Unable to load the class: ".$class);
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Instantiates a class
-	 *
-	 * @access	private
-	 * @param	string
-	 * @param	string
-	 * @return	null
-	 */
-	function _ci_init_class($class, $prefix = '', $config = NULL)
-	{	
-		// Is there an associated config file for this class?
-		if ($config == NULL)
-		{
-			if (file_exists(APPPATH.'config/'.$class.EXT))
-			{
-				include_once(APPPATH.'config/'.$class.EXT);
-			}
-		}
-		
-		if ($prefix == '')
-		{
-			$name = ( ! class_exists($class)) ? 'CI_'.$class : $class;
-		}
-		else
-		{
-			$name = $prefix.$class;
-		}
-						
-		$varname = ( ! isset($remap[$class])) ? $class : $remap[$class];
-		$varname = strtolower($varname);
-				
-		// Instantiate the class
-		if ($config !== NULL)
-		{
-			$this->$varname = new $name($config);
-		}
-		else
-		{		
-			$this->$varname = new $name;
-		}	
-	}
-  	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Loads and instantiates the requested model class
-	 *
-	 * @access	private
-	 * @param	string
-	 * @return	array
-	 */
-	function _ci_init_model($model, $name = '', $db_conn = FALSE)
-	{
-		// Is the model in a sub-folder?
-		// If so, parse out the filename and path.
-		if (strpos($model, '/') === FALSE)
-		{
-			$path = '';
-		}
-		else
-		{
-			$x = explode('/', $model);
-			$model = end($x);			
-			unset($x[count($x)-1]);
-			$path = implode('/', $x).'/';
-		}
-	
-		if ($name == '')
-		{
-			$name = $model;
-		}
-		
-		$obj =& get_instance();
-		if (in_array($name, $obj->_ci_models, TRUE))
-		{
-			return;
-		}		
-		
-		if (isset($this->$name))
-		{
-			show_error('The model name you are loading is the name of a resource that is already being used: '.$name);
-		}
-	
-		$model = strtolower($model);
-		
-		if ( ! file_exists(APPPATH.'models/'.$path.$model.EXT))
-		{
-			show_error('Unable to locate the model you have specified: '.$model);
-		}
-				
-		if ($db_conn !== FALSE)
-		{
-			if ($db_conn === TRUE)
-				$db_conn = '';
-		
-			$this->_ci_init_database($db_conn, FALSE, TRUE);
-		}
-	
-		if ( ! class_exists('Model'))
-		{
-			require_once(BASEPATH.'libraries/Model'.EXT);
-		}
-
-		require_once(APPPATH.'models/'.$path.$model.EXT);
-
-		$model = ucfirst($model);
-		$this->$name = new $model();
-		$this->_ci_models[] = $name;
-		$this->_ci_assign_to_models();
-	}  	
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Assign to Models
-	 *
-	 * Makes sure that anything loaded by the loader class (libraries, plugins, etc.)
-	 * will be available to modles, if any exist.
-	 *
-	 * @access	public
-	 * @param	object
-	 * @return	array
-	 */
-	function _ci_assign_to_models()
-	{
-		$obj =& get_instance();
-		if (count($obj->_ci_models) == 0)
-		{
-			return;
-		}
-		foreach ($obj->_ci_models as $model)
-		{			
-			$obj->$model->_assign_libraries();			
-		}		
-	}  	
-  	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Auto-initialize Core Classes
-	 *
-	 * This initializes the core systems that are specified in the 
-	 * libraries/autoload.php file, as well as the systems specified in
-	 * the $autoload class array above.
-	 *
-	 * It returns the "autoload" array so we can pass it to the Loader 
-	 * class since it needs to autoload plugins and helper files
-	 *
-	 * The config/autoload.php file contains an array that permits 
-	 * sub-systems to be loaded automatically.
-	 *
-	 * @access	private
-	 * @return	array
-	 */
-	function _ci_autoload()
-	{
-		include_once(APPPATH.'config/autoload'.EXT);
-		
-		if ( ! isset($autoload))
-		{
-			return FALSE;
-		}
-		
-		if (count($autoload['config']) > 0)
-		{
-			foreach ($autoload['config'] as $key => $val)
-			{
-				$this->config->load($val);
-			}
-		}
-		unset($autoload['config']);
-		
-		// A little tweak to remain backward compatible
-		// The $autoload['core'] item was deprecated
-		if ( ! isset($autoload['libraries']))
-		{
-			$autoload['libraries'] = $autoload['core'];
-		
-		}
-		
-		$exceptions = array('dbutil', 'dbexport');
-		
-		foreach ($autoload['libraries'] as $item)
-		{
-			if ( ! in_array($item, $exceptions, TRUE))
-			{
-				$this->_ci_load_class($item);
-			}
-			else
-			{
-				$this->_ci_init_dbextra($item);
-			}
-		}
-		unset($autoload['libraries']);
-
-		return $autoload;
-	}
-  	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Assign the core classes to the global $CI object
-	 *
-	 * By assigning all the classes instantiated by the front controller
-	 * local class variables we enable everything to be accessible using
-	 * $this->class->function()
+	 * Assigns all the bases classes loaded by the front controller to
+	 * variables in this class.  Also calls the autoload routine.
 	 *
 	 * @access	private
 	 * @return	void
-	 */
-	function _ci_assign_core()
+	 */  
+	function _ci_initialize()
 	{
+		// Assign all the class objects that were instantiated by the
+		// front controller to local class variables so that CI can be 
+		// run as one big super object.
 		foreach (array('Config', 'Input', 'Benchmark', 'URI', 'Output') as $val)
 		{
 			$class = strtolower($val);
@@ -392,101 +76,22 @@
 		{
 			$this->load = new CI_Loader();
 		}
-	}
-  	
-	// --------------------------------------------------------------------
 
-	/**
-	 * Initialize Scaffolding
-	 *
-	 * This initializing function works a bit different than the
-	 * others. It doesn't load the class.  Instead, it simply
-	 * sets a flag indicating that scaffolding is allowed to be
-	 * used.  The actual scaffolding function below is
-	 * called by the front controller based on whether the
-	 * second segment of the URL matches the "secret" scaffolding
-	 * word stored in the application/config/routes.php
-	 *
-	 * @access	private
-	 * @param	string	the table to scaffold
-	 * @return	void
-	 */
-	function _ci_init_scaffolding($table = FALSE)
-	{
-		if ($table === FALSE)
-		{
-			show_error('You must include the name of the table you would like access when you initialize scaffolding');
-		}
 		
-		$this->_ci_scaffolding = TRUE;
-		$this->_ci_scaff_table = $table;
-	}
-  	
-	// --------------------------------------------------------------------
+		// Load everything specified in the autoload.php file
+		$this->load->_ci_autoloader();
 
-	/**
-	 * Initialize Database
-	 *
-	 * @access	private
-	 * @param	mixed	database connection values
-	 * @param	bool	whether to return the object for multiple connections
-	 * @param	bool	whether to load the active record class
-	 * @return	void
-	 */
-	function _ci_init_database($params = '', $return = FALSE, $active_record = FALSE)
-	{
-		require_once(BASEPATH.'database/DB'.EXT);
-		return DB($params, $return, $active_record);
-	}	
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Returns TRUE if a class is loaded, FALSE if not
-	 *
-	 * @access	public
-	 * @param	string	 the class name
-	 * @return	bool
-	 */
-	function _ci_is_loaded($class)
-	{
-		return ( ! isset($this->$class) OR ! is_object($this->$class)) ? FALSE : TRUE;
-	}
-  	  	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Scaffolding
-	 *
-	 * Initializes the scaffolding.
-	 *
-	 * @access	private
-	 * @return	void
-	 */
-	function _ci_scaffolding()
-	{
-		if ($this->_ci_scaffolding === FALSE OR $this->_ci_scaff_table === FALSE)
+		// This allows anything loaded using $this->load (viwes, files, etc.)
+		// to become accessible from within the Controller class functions.
+		foreach (get_object_vars($this) as $key => $var)
 		{
-			show_404('Scaffolding unavailable');
-		}
-		
-		if (class_exists('Scaffolding')) return;
-			
-		if ( ! in_array($this->uri->segment(3), array('add', 'insert', 'edit', 'update', 'view', 'delete', 'do_delete'), TRUE))
-		{
-			$method = 'view';
-		}
-		else
-		{
-			$method = $this->uri->segment(3);
-		}
-		
-		$this->_ci_init_database("", FALSE, TRUE);
-		$this->_ci_load_class('pagination');
-		require_once(BASEPATH.'scaffolding/Scaffolding'.EXT);
-		$this->scaff = new Scaffolding($this->_ci_scaff_table);
-		$this->scaff->$method();
+			if (is_object($var))
+			{
+				$this->load->$key =& $this->$key;
+			}
+		}	
 	}
+    
 
 }
 // END _Controller class