diff --git a/system/codeigniter/CodeIgniter.php b/system/codeigniter/CodeIgniter.php
index a237e8a..63ae458 100644
--- a/system/codeigniter/CodeIgniter.php
+++ b/system/codeigniter/CodeIgniter.php
@@ -173,32 +173,15 @@
 // Mark a start point so we can benchmark the controller
 $BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start');
 
+// Instantiate the Controller
 $CI = new $class();
 
+// Is this a scaffolding request?
 if ($RTR->scaffolding_request === TRUE)
 {
 	if ($EXT->_call_hook('scaffolding_override') === FALSE)
 	{
-		if ($CI->_ci_scaffolding === FALSE OR $CI->_ci_scaff_table === FALSE)
-		{
-			show_404('Scaffolding unavailable');
-		}
-		
-		if ( ! class_exists('Scaffolding'))
-		{			
-			if ( ! in_array($CI->uri->segment(3), array('add', 'insert', 'edit', 'update', 'view', 'delete', 'do_delete'), TRUE))
-			{
-				$method = 'view';
-			}
-			else
-			{
-				$method = $CI->uri->segment(3);
-			}
-			
-			require_once(BASEPATH.'scaffolding/Scaffolding'.EXT);
-			$scaff = new Scaffolding($CI->_ci_scaff_table);
-			$scaff->$method();
-		}
+		$CI->_ci_scaffolding();
 	}
 }
 else
@@ -210,6 +193,7 @@
 	 */
 	$EXT->_call_hook('post_controller_constructor');
 	
+	// Is there a "remap" function?
 	if (method_exists($CI, '_remap'))
 	{
 		$CI->_remap($method);
diff --git a/system/database/DB_cache.php b/system/database/DB_cache.php
index bb2b47b..081b565 100644
--- a/system/database/DB_cache.php
+++ b/system/database/DB_cache.php
@@ -24,7 +24,7 @@
  */
 class CI_DB_Cache {
 
-	var $obj;
+	var $CI;
 
 	/**
 	 * Constructor
@@ -34,10 +34,10 @@
 	 */	
 	function CI_DB_Cache()
 	{
-		// Assign the main CI object to $this->obj
+		// Assign the main CI object to $this->CI
 		// and load the file helper since we use it a lot
-		$this->obj =& get_instance();
-		$this->obj->load->helper('file');	
+		$this->CI =& get_instance();
+		$this->CI->load->helper('file');	
 	}
 
 	// --------------------------------------------------------------------
@@ -53,12 +53,12 @@
 	{
 		if ($path == '')
 		{
-			if ($this->obj->db->cachedir == '')
+			if ($this->CI->db->cachedir == '')
 			{
-				return $this->obj->db->cache_off();
+				return $this->CI->db->cache_off();
 			}
 		
-			$path = $this->obj->db->cachedir;
+			$path = $this->CI->db->cachedir;
 		}
 	
 		// Add a trailing slash to the path if needed
@@ -66,16 +66,16 @@
 	
 		if ( ! is_dir($path) OR ! is_writable($path))
 		{
-			if ($this->obj->db->db_debug)
+			if ($this->CI->db->db_debug)
 			{
-				return $this->obj->db->display_error('db_invalid_cache_path');
+				return $this->CI->db->display_error('db_invalid_cache_path');
 			}
 			
 			// If the path is wrong we'll turn off caching
-			return $this->obj->db->cache_off();
+			return $this->CI->db->cache_off();
 		}
 		
-		$this->obj->db->cachedir = $path;
+		$this->CI->db->cachedir = $path;
 		return TRUE;
 	}
 	
@@ -94,15 +94,15 @@
 	{
 		if ( ! $this->check_path())
 		{
-			return $this->obj->db->cache_off();
+			return $this->CI->db->cache_off();
 		}
 	
-		$uri  = ($this->obj->uri->segment(1) == FALSE) ? 'default.'	: $this->obj->uri->segment(1).'.';
-		$uri .= ($this->obj->uri->segment(2) == FALSE) ? 'index'	: $this->obj->uri->segment(2);
+		$uri  = ($this->CI->uri->segment(1) == FALSE) ? 'default.'	: $this->CI->uri->segment(1).'.';
+		$uri .= ($this->CI->uri->segment(2) == FALSE) ? 'index'		: $this->CI->uri->segment(2);
 		
 		$filepath = $uri.'/'.md5($sql);
 		
-		if (FALSE === ($cachedata = read_file($this->obj->db->cachedir.$filepath)))
+		if (FALSE === ($cachedata = read_file($this->CI->db->cachedir.$filepath)))
 		{	
 			return FALSE;
 		}
@@ -122,13 +122,13 @@
 	{
 		if ( ! $this->check_path())
 		{
-			return $this->obj->db->cache_off();
+			return $this->CI->db->cache_off();
 		}
 
-		$uri  = ($this->obj->uri->segment(1) == FALSE) ? 'default.'	: $this->obj->uri->segment(1).'.';
-		$uri .= ($this->obj->uri->segment(2) == FALSE) ? 'index'	: $this->obj->uri->segment(2);
+		$uri  = ($this->CI->uri->segment(1) == FALSE) ? 'default.'	: $this->CI->uri->segment(1).'.';
+		$uri .= ($this->CI->uri->segment(2) == FALSE) ? 'index'		: $this->CI->uri->segment(2);
 		
-		$dir_path = $this->obj->db->cachedir.$uri.'/';
+		$dir_path = $this->CI->db->cachedir.$uri.'/';
 		
 		$filename = md5($sql);
 	
@@ -163,15 +163,15 @@
 	{	
 		if ($segment_one == '')
 		{
-			$segment_one  = ($this->obj->uri->segment(1) == FALSE) ? 'default' : $this->obj->uri->segment(2);
+			$segment_one  = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(2);
 		}
 		
 		if ($segment_two == '')
 		{
-			$segment_two = ($this->obj->uri->segment(2) == FALSE) ? 'index' : $this->obj->uri->segment(2);
+			$segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2);
 		}
 		
-		$dir_path = $this->obj->db->cachedir.md5($segment_one.'.'.$segment_two).'/';
+		$dir_path = $this->CI->db->cachedir.md5($segment_one.'.'.$segment_two).'/';
 		
 		delete_files($dir_path, TRUE);
 	}
@@ -186,7 +186,7 @@
 	 */
 	function delete_all()
 	{
-		delete_files($this->obj->db->cachedir, TRUE);
+		delete_files($this->CI->db->cachedir, TRUE);
 	}
 
 }
diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php
index 8cf1517..3cbbbfe 100644
--- a/system/libraries/Calendar.php
+++ b/system/libraries/Calendar.php
@@ -28,8 +28,8 @@
  */ 
 class CI_Calendar {
 
+	var $CI;
 	var $lang;
-	var $obj;
 	var $local_time;
 	var $template		= '';
 	var $start_day		= 'sunday';
@@ -47,10 +47,10 @@
 	 */
 	function CI_Calendar()
 	{		
-		$this->obj =& get_instance();
-		if ( ! in_array('calendar_lang'.EXT, $this->obj->lang->is_loaded, TRUE))
+		$this->CI =& get_instance();
+		if ( ! in_array('calendar_lang'.EXT, $this->CI->lang->is_loaded, TRUE))
 		{
-			$this->obj->lang->load('calendar');
+			$this->CI->lang->load('calendar');
 		}
 
 		$this->local_time = time();
@@ -268,12 +268,12 @@
 		
 		$month = $month_names[$month];
 		
-		if ($this->obj->lang->line($month) === FALSE)
+		if ($this->CI->lang->line($month) === FALSE)
 		{
 			return ucfirst(str_replace('cal_', '', $month));
 		}
 
-		return $this->obj->lang->line($month);
+		return $this->CI->lang->line($month);
 	}
 	// END get_month_name()
 	
@@ -310,7 +310,7 @@
 		$days = array();
 		foreach ($day_names as $val)
 		{			
-			$days[] = ($this->obj->lang->line('cal_'.$val) === FALSE) ? ucfirst($val) : $this->obj->lang->line('cal_'.$val);
+			$days[] = ($this->CI->lang->line('cal_'.$val) === FALSE) ? ucfirst($val) : $this->CI->lang->line('cal_'.$val);
 		}
 	
 		return $days;
diff --git a/system/libraries/Controller.php b/system/libraries/Controller.php
index 88b49a9..58bec84 100644
--- a/system/libraries/Controller.php
+++ b/system/libraries/Controller.php
@@ -40,9 +40,7 @@
 	function Controller()
 	{	
 		parent::CI_Base();
-		
 		$this->_ci_initialize();
-		
 		log_message('debug', "Controller Class Initialized");
 	}
   
@@ -62,22 +60,28 @@
 		// 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)
+		$classes = array(
+							'config'	=> 'Config', 
+							'input'		=> 'Input', 
+							'benchmark'	=> 'Benchmark', 
+							'uri'		=> 'URI', 
+							'output'	=> 'Output',
+							'lang'		=> 'Language'
+							);
+		
+		foreach ($classes as $var => $class)
 		{
-			$class = strtolower($val);
-			$this->$class =& _load_class($val);
+			$this->$var =& _load_class($class);
 		}
 		
-		$this->lang	=& _load_class('Language');
-	
-		// In PHP 4 the Controller class is a child of CI_Loader.
-		// In PHP 5 we run it as its own class.
+		
+		// In PHP 5 the Controller class is run as a discreet 
+		// class.  In PHP 4 it extends the Controller
 		if (floor(phpversion()) >= 5)
 		{
 			$this->load = new CI_Loader();
 		}
 
-		
 		// Load everything specified in the autoload.php file
 		$this->load->_ci_autoloader();
 
@@ -92,6 +96,28 @@
 		}	
 	}
     
+	// --------------------------------------------------------------------
+	
+	/**
+	 * Run Scaffolding
+	 *
+	 * @access	private
+	 * @return	voikd
+	 */	
+    function _ci_scaffolding()
+    {
+		if ($this->_ci_scaffolding === FALSE OR $this->_ci_scaff_table === FALSE)
+		{
+			show_404('Scaffolding unavailable');
+		}
+		
+		$method = ( ! in_array($this->uri->segment(3), array('add', 'insert', 'edit', 'update', 'view', 'delete', 'do_delete'), TRUE)) ? 'view' : $this->uri->segment(3);
+		
+		require_once(BASEPATH.'scaffolding/Scaffolding'.EXT);
+		$scaff = new Scaffolding($this->_ci_scaff_table);
+		$scaff->$method();
+    }
+    
 
 }
 // END _Controller class
diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index f823d95..90dc0f1 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -31,12 +31,11 @@
 	var $CI;
 	var $ob_level;
 	var $cached_vars	= array();
+	var $models			= array();
 	var $helpers		= array();
 	var $plugins		= array();
 	var $scripts		= array();
-	var $languages		= array();
 	var $view_path		= '';
-	var $models			= array();
 
 	/**
 	 * Constructor
diff --git a/system/libraries/Profiler.php b/system/libraries/Profiler.php
index 6142267..d91f231 100644
--- a/system/libraries/Profiler.php
+++ b/system/libraries/Profiler.php
@@ -32,12 +32,12 @@
  */
 class CI_Profiler {
 
-	var $obj;
+	var $CI;
  	
  	function CI_Profiler()
  	{
- 		$this->obj =& get_instance();
- 		$this->obj->load->language('profiler');
+ 		$this->CI =& get_instance();
+ 		$this->CI->load->language('profiler');
  	}
  	
 	// --------------------------------------------------------------------
@@ -56,15 +56,15 @@
  	function _compile_benchmarks()
  	{
   		$profile = array();
- 		foreach ($this->obj->benchmark->marker as $key => $val)
+ 		foreach ($this->CI->benchmark->marker as $key => $val)
  		{
  			// We match the "end" marker so that the list ends
  			// up in the order that it was defined
  			if (preg_match("/(.+?)_end/i", $key, $match))
  			{ 			
- 				if (isset($this->obj->benchmark->marker[$match[1].'_end']) AND isset($this->obj->benchmark->marker[$match[1].'_start']))
+ 				if (isset($this->CI->benchmark->marker[$match[1].'_end']) AND isset($this->CI->benchmark->marker[$match[1].'_start']))
  				{
- 					$profile[$match[1]] = $this->obj->benchmark->elapsed_time($match[1].'_start', $key);
+ 					$profile[$match[1]] = $this->CI->benchmark->elapsed_time($match[1].'_start', $key);
  				}
  			}
  		}
@@ -76,7 +76,7 @@
 		$output  = "\n\n";
 		$output .= '<fieldset style="border:1px solid #990000;padding:6px 10px 10px 10px;margin:0 0 20px 0;background-color:#eee">';
 		$output .= "\n";
-		$output .= '<legend style="color:#990000;">&nbsp;&nbsp;'.$this->obj->lang->line('profiler_benchmarks').'&nbsp;&nbsp;</legend>';
+		$output .= '<legend style="color:#990000;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_benchmarks').'&nbsp;&nbsp;</legend>';
 		$output .= "\n";			
 		$output .= "\n\n<table cellpadding='4' cellspacing='1' border='0' width='100%'>\n";
 		
@@ -100,22 +100,22 @@
 		$output  = "\n\n";
 		$output .= '<fieldset style="border:1px solid #0000FF;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
-		$output .= '<legend style="color:#0000FF;">&nbsp;&nbsp;'.$this->obj->lang->line('profiler_queries').'&nbsp;&nbsp;</legend>';
+		$output .= '<legend style="color:#0000FF;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_queries').'&nbsp;&nbsp;</legend>';
 		$output .= "\n";		
 		
 		if ( ! class_exists('CI_DB_driver'))
 		{
-			$output .= "<div style='color:#0000FF;font-weight:normal;padding:4px 0 0 0;'>".$this->obj->lang->line('profiler_no_db')."</div>";
+			$output .= "<div style='color:#0000FF;font-weight:normal;padding:4px 0 0 0;'>".$this->CI->lang->line('profiler_no_db')."</div>";
 		}
 		else
 		{
-			if (count($this->obj->db->queries) == 0)
+			if (count($this->CI->db->queries) == 0)
 			{
-				$output .= "<div style='color:#0000FF;font-weight:normal;padding:4px 0 4px 0;'>".$this->obj->lang->line('profiler_no_queries')."</div>";
+				$output .= "<div style='color:#0000FF;font-weight:normal;padding:4px 0 4px 0;'>".$this->CI->lang->line('profiler_no_queries')."</div>";
 			}
 			else
 			{
-				foreach ($this->obj->db->queries as $val)
+				foreach ($this->CI->db->queries as $val)
 				{
 					$output .= '<div style="padding:3px;margin:12px 0 12px 0;background-color:#ddd;color:#000">';
 					$output .= $val;
@@ -136,12 +136,12 @@
 		$output  = "\n\n";
 		$output .= '<fieldset style="border:1px solid #009900;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
-		$output .= '<legend style="color:#009900;">&nbsp;&nbsp;'.$this->obj->lang->line('profiler_post_data').'&nbsp;&nbsp;</legend>';
+		$output .= '<legend style="color:#009900;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_post_data').'&nbsp;&nbsp;</legend>';
 		$output .= "\n";
 				
 		if (count($_POST) == 0)
 		{
-			$output .= "<div style='color:#009900;font-weight:normal;padding:4px 0 4px 0'>".$this->obj->lang->line('profiler_no_post')."</div>";
+			$output .= "<div style='color:#009900;font-weight:normal;padding:4px 0 4px 0'>".$this->CI->lang->line('profiler_no_post')."</div>";
 		}
 		else
 		{
diff --git a/system/libraries/Session.php b/system/libraries/Session.php
index 28e469d..16f373f 100644
--- a/system/libraries/Session.php
+++ b/system/libraries/Session.php
@@ -26,6 +26,7 @@
  */
 class CI_Session {
 
+    var $CI;
 	var $now;
 	var $encryption		= TRUE;
 	var $use_database	= FALSE;
@@ -34,7 +35,7 @@
     var $sess_cookie	= 'ci_session';
 	var $userdata		= array();
     var $gc_probability	= 5;
-    var $object;
+
     
 
 	/**
@@ -45,7 +46,7 @@
 	 */		
 	function CI_Session()
 	{
-		$this->object =& get_instance();
+		$this->CI =& get_instance();
 
 		log_message('debug', "Session Class Initialized");
 		$this->sess_run();
@@ -73,7 +74,7 @@
 		 * "last_visit" times based on each user's locale.
 		 *
 		 */
-		if (strtolower($this->object->config->item('time_reference')) == 'gmt')
+		if (strtolower($this->CI->config->item('time_reference')) == 'gmt')
 		{
 			$now = time();
 			$this->now = mktime(gmdate("H", $now), gmdate("i", $now), gmdate("s", $now), gmdate("m", $now), gmdate("d", $now), gmdate("Y", $now));   
@@ -97,13 +98,13 @@
 		 * two years from now.
 		 *
 		 */
-		$expiration = $this->object->config->item('sess_expiration');
+		$expiration = $this->CI->config->item('sess_expiration');
 		
 		if (is_numeric($expiration))
 		{
 			if ($expiration > 0)
 			{
-				$this->sess_length = $this->object->config->item('sess_expiration');
+				$this->sess_length = $this->CI->config->item('sess_expiration');
 			}
 			else
 			{
@@ -112,25 +113,25 @@
 		}
 		
 		// Do we need encryption?
-		$this->encryption = $this->object->config->item('sess_encrypt_cookie');
+		$this->encryption = $this->CI->config->item('sess_encrypt_cookie');
 		
 		if ($this->encryption == TRUE)	
 		{
-			$this->object->load->library('encrypt');
+			$this->CI->load->library('encrypt');
 		}		
 
 		// Are we using a database?
-		if ($this->object->config->item('sess_use_database') === TRUE AND $this->object->config->item('sess_table_name') != '')
+		if ($this->CI->config->item('sess_use_database') === TRUE AND $this->CI->config->item('sess_table_name') != '')
 		{
 			$this->use_database = TRUE;
-			$this->session_table = $this->object->config->item('sess_table_name');
-			$this->object->load->database();
+			$this->session_table = $this->CI->config->item('sess_table_name');
+			$this->CI->load->database();
 		}
 		
 		// Set the cookie name
-		if ($this->object->config->item('sess_cookie_name') != FALSE)
+		if ($this->CI->config->item('sess_cookie_name') != FALSE)
 		{
-			$this->sess_cookie = $this->object->config->item('cookie_prefix').$this->object->config->item('sess_cookie_name');
+			$this->sess_cookie = $this->CI->config->item('cookie_prefix').$this->CI->config->item('sess_cookie_name');
 		}
 	
 		/*
@@ -172,7 +173,7 @@
 	function sess_read()
 	{	
 		// Fetch the cookie
-		$session = $this->object->input->cookie($this->sess_cookie);
+		$session = $this->CI->input->cookie($this->sess_cookie);
 		
 		if ($session === FALSE)
 		{
@@ -183,7 +184,7 @@
 		// Decrypt and unserialize the data
 		if ($this->encryption == TRUE)
 		{
-			$session = $this->object->encrypt->decode($session);
+			$session = $this->CI->encrypt->decode($session);
 		}
 
 		$session = @unserialize($this->strip_slashes($session));
@@ -202,14 +203,14 @@
 		}
 
 		// Does the IP Match?
-		if ($this->object->config->item('sess_match_ip') == TRUE AND $session['ip_address'] != $this->object->input->ip_address())
+		if ($this->CI->config->item('sess_match_ip') == TRUE AND $session['ip_address'] != $this->CI->input->ip_address())
 		{
 			$this->sess_destroy();
 			return FALSE;
 		}
 		
 		// Does the User Agent Match?
-		if ($this->object->config->item('sess_match_useragent') == TRUE AND $session['user_agent'] != substr($this->object->input->user_agent(), 0, 50))
+		if ($this->CI->config->item('sess_match_useragent') == TRUE AND $session['user_agent'] != substr($this->CI->input->user_agent(), 0, 50))
 		{
 			$this->sess_destroy();
 			return FALSE;
@@ -218,19 +219,19 @@
 		// Is there a corresponding session in the DB?
 		if ($this->use_database === TRUE)
 		{
-			$this->object->db->where('session_id', $session['session_id']);
+			$this->CI->db->where('session_id', $session['session_id']);
 					
-			if ($this->object->config->item('sess_match_ip') == TRUE)
+			if ($this->CI->config->item('sess_match_ip') == TRUE)
 			{
-				$this->object->db->where('ip_address', $session['ip_address']);
+				$this->CI->db->where('ip_address', $session['ip_address']);
 			}
 
-			if ($this->object->config->item('sess_match_useragent') == TRUE)
+			if ($this->CI->config->item('sess_match_useragent') == TRUE)
 			{
-				$this->object->db->where('user_agent', $session['user_agent']);
+				$this->CI->db->where('user_agent', $session['user_agent']);
 			}
 			
-			$query = $this->object->db->get($this->session_table);
+			$query = $this->CI->db->get($this->session_table);
 
 			if ($query->num_rows() == 0)
 			{
@@ -242,8 +243,8 @@
 				$row = $query->row();
 				if (($row->last_activity + $this->sess_length) < $this->now) 
 				{
-					$this->object->db->where('session_id', $session['session_id']);
-					$this->object->db->delete($this->session_table);
+					$this->CI->db->where('session_id', $session['session_id']);
+					$this->CI->db->delete($this->session_table);
 					$this->sess_destroy();
 					return FALSE;
 				}
@@ -272,15 +273,15 @@
 		
 		if ($this->encryption == TRUE)
 		{
-			$cookie_data = $this->object->encrypt->encode($cookie_data);
+			$cookie_data = $this->CI->encrypt->encode($cookie_data);
 		}
 
 		setcookie(
 					$this->sess_cookie, 
 					$cookie_data, 
 					$this->sess_length + $this->now, 
-					$this->object->config->item('cookie_path'), 
-					$this->object->config->item('cookie_domain'), 
+					$this->CI->config->item('cookie_path'), 
+					$this->CI->config->item('cookie_domain'), 
 					0
 				);
 	}
@@ -304,8 +305,8 @@
 	
 		$this->userdata = array(
 							'session_id' 	=> md5(uniqid($sessid, TRUE)),
-							'ip_address' 	=> $this->object->input->ip_address(),
-							'user_agent' 	=> substr($this->object->input->user_agent(), 0, 50),
+							'ip_address' 	=> $this->CI->input->ip_address(),
+							'user_agent' 	=> substr($this->CI->input->user_agent(), 0, 50),
 							'last_activity'	=> $this->now
 							);
 		
@@ -313,7 +314,7 @@
 		// Save the session in the DB if needed
 		if ($this->use_database === TRUE)
 		{
-			$this->object->db->query($this->object->db->insert_string($this->session_table, $this->userdata));
+			$this->CI->db->query($this->CI->db->insert_string($this->session_table, $this->userdata));
 		}
 			
 		// Write the cookie
@@ -342,7 +343,7 @@
 		// Update the session in the DB if needed
 		if ($this->use_database === TRUE)
 		{		
-			$this->object->db->query($this->object->db->update_string($this->session_table, array('last_activity' => $this->now), array('session_id' => $this->userdata['session_id'])));
+			$this->CI->db->query($this->CI->db->update_string($this->session_table, array('last_activity' => $this->now), array('session_id' => $this->userdata['session_id'])));
 		}
 		
 		// Write the cookie
@@ -364,8 +365,8 @@
 					$this->sess_cookie, 
 					addslashes(serialize(array())), 
 					($this->now - 31500000), 
-					$this->object->config->item('cookie_path'), 
-					$this->object->config->item('cookie_domain'), 
+					$this->CI->config->item('cookie_path'), 
+					$this->CI->config->item('cookie_domain'), 
 					0
 				);
 	}
@@ -389,8 +390,8 @@
 		{  
 			$expire = $this->now - $this->sess_length;
 			
-			$this->object->db->where("last_activity < {$expire}");
-			$this->object->db->delete($this->session_table);
+			$this->CI->db->where("last_activity < {$expire}");
+			$this->CI->db->delete($this->session_table);
 
 			log_message('debug', 'Session garbage collection performed.');
 		}    
diff --git a/system/libraries/Validation.php b/system/libraries/Validation.php
index ff59708..5322be0 100644
--- a/system/libraries/Validation.php
+++ b/system/libraries/Validation.php
@@ -26,6 +26,7 @@
  */
 class CI_Validation {
 	
+	var $CI;
 	var $error_string		= '';
 	var $_error_array		= array();
 	var $_rules				= array();
@@ -35,7 +36,7 @@
 	var $_safe_form_data 	= FALSE;
 	var $_error_prefix		= '<p>';
 	var $_error_suffix		= '</p>';
-	var $obj;
+
 	
 
 	/**
@@ -44,7 +45,7 @@
 	 */	
 	function CI_Validation()
 	{	
-		$this->obj =& get_instance();
+		$this->CI =& get_instance();
 		log_message('debug', "Validation Class Initialized");
 	}
 	
@@ -185,7 +186,7 @@
 		}
 	
 		// Load the language file containing error messages
-		$this->obj->lang->load('validation');
+		$this->CI->lang->load('validation');
 							
 		// Cycle through the rules and test for errors
 		foreach ($this->_rules as $field => $rules)
@@ -217,7 +218,7 @@
 				{
 					if ( ! isset($this->_error_messages['isset'])) 
 					{
-						if (FALSE === ($line = $this->obj->lang->line('isset')))
+						if (FALSE === ($line = $this->CI->lang->line('isset')))
 						{
 							$line = 'The field was not set';
 						}							
@@ -267,12 +268,12 @@
 				// Call the function that corresponds to the rule
 				if ($callback === TRUE)
 				{
-					if ( ! method_exists($this->obj, $rule))
+					if ( ! method_exists($this->CI, $rule))
 					{ 		
 						continue;
 					}
 					
-					$result = $this->obj->$rule($_POST[$field], $param);	
+					$result = $this->CI->$rule($_POST[$field], $param);	
 					
 					// If the field isn't required and we just processed a callback we'll move on...
 					if ( ! in_array('required', $ex, TRUE) AND $result !== FALSE)
@@ -309,7 +310,7 @@
 				{
 					if ( ! isset($this->_error_messages[$rule])) 
 					{
-						if (FALSE === ($line = $this->obj->lang->line($rule)))
+						if (FALSE === ($line = $this->CI->lang->line($rule)))
 						{
 							$line = 'Unable to access an error message corresponding to your field name.';
 						}						
@@ -698,7 +699,7 @@
 	 */	
 	function xss_clean($str)
 	{
-		$_POST[$this->_current_field] = $this->obj->input->xss_clean($str);
+		$_POST[$this->_current_field] = $this->CI->input->xss_clean($str);
 	}
 	
 	// --------------------------------------------------------------------
diff --git a/system/scaffolding/Scaffolding.php b/system/scaffolding/Scaffolding.php
index 9059ec1..c046d22 100644
--- a/system/scaffolding/Scaffolding.php
+++ b/system/scaffolding/Scaffolding.php
@@ -27,25 +27,25 @@
  */
 class Scaffolding {
 
+	var $CI;
 	var $current_table;
 	var $base_url = '';
 	var $lang = array();
 
 	function Scaffolding($db_table)
 	{
-		$obj =& get_instance();
-		foreach (get_object_vars($obj) as $key => $var)
-		{
-			if (is_object($var))
-			{
-				$this->$key =& $obj->$key;
-			}
-		}
+		$this->CI =& get_instance();
+		
+		$this->CI->load->database("", FALSE, TRUE);			
+		$this->CI->load->library('pagination');
+		
+		// Turn off caching
+		$this->CI->db->cache_off();
 				
 		/**
 		 * Set the current table name
 		 * This is done when initializing scaffolding:
-		 * $this->_ci_init_scaffolding('table_name')
+		 * $this->load->scaffolding('table_name')
 		 *
 		 */
 		$this->current_table = $db_table;
@@ -55,28 +55,29 @@
 		 * We'll manually override the "view" path so that
 		 * the load->view function knows where to look.
 		 */
-		$this->load->_ci_set_view_path(BASEPATH.'scaffolding/views/');
+		 
+		$this->CI->load->view_path = BASEPATH.'scaffolding/views/';
 
 		// Set the base URL
-		$this->base_url = $this->config->site_url().'/'.$this->uri->segment(1).$this->uri->slash_segment(2, 'both');
-		$this->base_uri = $this->uri->segment(1).$this->uri->slash_segment(2, 'leading');
+		$this->base_url = $this->CI->config->site_url().'/'.$this->CI->uri->segment(1).$this->CI->uri->slash_segment(2, 'both');
+		$this->base_uri = $this->CI->uri->segment(1).$this->CI->uri->slash_segment(2, 'leading');
 
 		// Set a few globals
 		$data = array(
-						'image_url'	=> $this->config->system_url().'scaffolding/images/',
+						'image_url'	=> $this->CI->config->system_url().'scaffolding/images/',
 						'base_uri'  => $this->base_uri,
 						'base_url'	=> $this->base_url,
 						'title'		=> $this->current_table
 					);
 		
-		$this->load->vars($data);
+		$this->CI->load->vars($data);
 		
 		// Load the language file and create variables
-		$this->lang = $this->load->language('scaffolding', '', TRUE);		
-		$this->load->vars($this->lang);
+		$this->lang = $this->CI->load->language('scaffolding', '', TRUE);		
+		$this->CI->load->vars($this->lang);
 				
 		//  Load the helper files we plan to use
-		$this->load->helper(array('url', 'form'));
+		$this->CI->load->helper(array('url', 'form'));
 		
 				
 		log_message('debug', 'Scaffolding Class Initialized');
@@ -97,11 +98,11 @@
 	{	
 		$data = array(
 						'title'	=>  ( ! isset($this->lang['scaff_add'])) ? 'Add Data' : $this->lang['scaff_add'],
-						'fields' => $this->db->field_data($this->current_table),
+						'fields' => $this->CI->db->field_data($this->current_table),
 						'action' => $this->base_uri.'/insert'
 					);
 	
-		$this->load->view('add', $data);
+		$this->CI->load->view('add', $data);
 	}
 	
 	// --------------------------------------------------------------------
@@ -114,7 +115,7 @@
 	 */
 	function insert()
 	{		
-		if ($this->db->insert($this->current_table, $_POST) === FALSE)
+		if ($this->CI->db->insert($this->current_table, $_POST) === FALSE)
 		{
 			$this->add();
 		}
@@ -138,28 +139,28 @@
 	function view()
 	{
 		// Fetch the total number of DB rows
-		$total_rows = $this->db->count_all($this->current_table);
+		$total_rows = $this->CI->db->count_all($this->current_table);
 		
 		if ($total_rows < 1)
 		{
-			return $this->load->view('no_data');
+			return $this->CI->load->view('no_data');
 		}
 		
 		// Set the query limit/offset
 		$per_page = 20;
-		$offset = $this->uri->segment(4, 0);
+		$offset = $this->CI->uri->segment(4, 0);
 		
 		// Run the query
-		$query = $this->db->get($this->current_table, $per_page, $offset);
+		$query = $this->CI->db->get($this->current_table, $per_page, $offset);
 
 		// Now let's get the field names				
-		$fields = $this->db->field_names($this->current_table);
+		$fields = $this->CI->db->field_names($this->current_table);
 		
 		// We assume that the column in the first position is the primary field.
 		$primary = current($fields);
 
 		// Pagination!
-		$this->pagination->initialize(
+		$this->CI->pagination->initialize(
 							array(
 									'base_url'		 => $this->base_url.'/view',
 									'total_rows'	 => $total_rows,
@@ -175,10 +176,10 @@
 						'query'		=> $query,
 						'fields'	=> $fields,
 						'primary'	=> $primary,
-						'paginate'	=> $this->pagination->create_links()
+						'paginate'	=> $this->CI->pagination->create_links()
 					);
 						
-		$this->load->view('view', $data);
+		$this->CI->load->view('view', $data);
 	}
 	
 	// --------------------------------------------------------------------
@@ -194,25 +195,25 @@
 	 */
 	function edit()
 	{
-		if (FALSE === ($id = $this->uri->segment(4)))
+		if (FALSE === ($id = $this->CI->uri->segment(4)))
 		{
 			return $this->view();
 		}
 
 		// Fetch the primary field name
-		$primary = $this->db->primary($this->current_table);				
+		$primary = $this->CI->db->primary($this->current_table);				
 
 		// Run the query
-		$query = $this->db->getwhere($this->current_table, array($primary => $id));
+		$query = $this->CI->db->getwhere($this->current_table, array($primary => $id));
 
 		$data = array(
 						'title'	=>  ( ! isset($this->lang['scaff_edit'])) ? 'Edit Data' : $this->lang['scaff_edit'],
 						'fields'	=> $query->field_data(),
 						'query'		=> $query->row(),
-						'action'	=> $this->base_uri.'/update/'.$this->uri->segment(4)
+						'action'	=> $this->base_uri.'/update/'.$this->CI->uri->segment(4)
 					);
 	
-		$this->load->view('edit', $data);
+		$this->CI->load->view('edit', $data);
 	}
 	
 	// --------------------------------------------------------------------
@@ -226,10 +227,10 @@
 	function update()
 	{	
 		// Fetch the primary key
-		$primary = $this->db->primary($this->current_table);				
+		$primary = $this->CI->db->primary($this->current_table);				
 
 		// Now do the query
-		$this->db->update($this->current_table, $_POST, array($primary => $this->uri->segment(4)));
+		$this->CI->db->update($this->current_table, $_POST, array($primary => $this->CI->uri->segment(4)));
 		
 		redirect($this->base_uri.'/view/');
 	}
@@ -246,21 +247,21 @@
 	{
 		if ( ! isset($this->lang['scaff_del_confirm']))
 		{
-			$message = 'Are you sure you want to delete the following row: '.$this->uri->segment(4);
+			$message = 'Are you sure you want to delete the following row: '.$this->CI->uri->segment(4);
 		}
 		else
 		{
-			$message = $this->lang['scaff_del_confirm'].' '.$this->uri->segment(4);
+			$message = $this->lang['scaff_del_confirm'].' '.$this->CI->uri->segment(4);
 		}
 		
 		$data = array(
 						'title'		=> ( ! isset($this->lang['scaff_delete'])) ? 'Delete Data' : $this->lang['scaff_delete'],
 						'message'	=> $message,
 						'no'		=> anchor(array($this->base_uri, 'view'), ( ! isset($this->lang['scaff_no'])) ? 'No' : $this->lang['scaff_no']),
-						'yes'		=> anchor(array($this->base_uri, 'do_delete', $this->uri->segment(4)), ( ! isset($this->lang['scaff_yes'])) ? 'Yes' : $this->lang['scaff_yes'])
+						'yes'		=> anchor(array($this->base_uri, 'do_delete', $this->CI->uri->segment(4)), ( ! isset($this->lang['scaff_yes'])) ? 'Yes' : $this->lang['scaff_yes'])
 					);
 	
-		$this->load->view('delete', $data);
+		$this->CI->load->view('delete', $data);
 	}
 	
 	// --------------------------------------------------------------------
@@ -274,11 +275,11 @@
 	function do_delete()
 	{		
 		// Fetch the primary key
-		$primary = $this->db->primary($this->current_table);				
+		$primary = $this->CI->db->primary($this->current_table);				
 
 		// Now do the query
-		$this->db->where($primary, $this->uri->segment(4));
-		$this->db->delete($this->current_table);
+		$this->CI->db->where($primary, $this->CI->uri->segment(4));
+		$this->CI->db->delete($this->current_table);
 
 		header("Refresh:0;url=".site_url(array($this->base_uri, 'view')));
 		exit;