diff --git a/system/codeigniter/CodeIgniter.php b/system/codeigniter/CodeIgniter.php
index 611b1a6..4934771 100644
--- a/system/codeigniter/CodeIgniter.php
+++ b/system/codeigniter/CodeIgniter.php
@@ -241,7 +241,7 @@
 
 /*
  * ------------------------------------------------------
- *  Close the DB connection of one exists
+ *  Close the DB connection if one exists
  * ------------------------------------------------------
  */
 if (class_exists('CI_DB'))
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index 22f91ed..a4131fd 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -172,6 +172,7 @@
 		
 		$CI =& get_instance();
 		$CI->dbutil = new $class();
+		$CI->_ci_assign_to_models();
 	}
 	
 	// --------------------------------------------------------------------
@@ -629,7 +630,7 @@
 	 */	
 	function primary($table = '')
 	{	
-		$fields = $this->field_names($table);
+		$fields = $this->list_fields($table);
 		
 		if ( ! is_array($fields))
 		{
diff --git a/system/database/DB_result.php b/system/database/DB_result.php
index 1c8ad6b..b163bb5 100644
--- a/system/database/DB_result.php
+++ b/system/database/DB_result.php
@@ -261,14 +261,14 @@
 	 */
 	function num_rows() { return $this->num_rows; }
 	function num_fields() { return 0; }
-	function field_names() { return array(); }
+	function list_fields() { return array(); }
+	function field_names() { return array(); } // Deprecated
 	function field_data() { return array(); }	
 	function free_result() { return TRUE; }
 	function _data_seek() { return TRUE; }
 	function _fetch_assoc() { return array(); }	
 	function _fetch_object() { return array(); }
-
-
+	
 }
 // END DB_result class
 ?>
\ No newline at end of file
diff --git a/system/database/drivers/mssql/mssql_result.php b/system/database/drivers/mssql/mssql_result.php
index 498deae..0ba0b8c 100644
--- a/system/database/drivers/mssql/mssql_result.php
+++ b/system/database/drivers/mssql/mssql_result.php
@@ -60,7 +60,7 @@
 	 * @access	public
 	 * @return	array
 	 */
-	function field_names()
+	function list_fields()
 	{
 		$field_names = array();
 		while ($field = mssql_fetch_field($this->result_id))
@@ -70,6 +70,12 @@
 		
 		return $field_names;
 	}
+	
+	// Deprecated
+	function field_names()
+	{
+		return $this->list_fields();
+	}
 
 	// --------------------------------------------------------------------
 
diff --git a/system/database/drivers/mysql/mysql_result.php b/system/database/drivers/mysql/mysql_result.php
index 3fdfc81..1cf6ff1 100644
--- a/system/database/drivers/mysql/mysql_result.php
+++ b/system/database/drivers/mysql/mysql_result.php
@@ -60,7 +60,7 @@
 	 * @access	public
 	 * @return	array
 	 */
-	function field_names()
+	function list_fields()
 	{
 		$field_names = array();
 		while ($field = mysql_fetch_field($this->result_id))
@@ -70,6 +70,12 @@
 		
 		return $field_names;
 	}
+	
+	// Deprecated
+	function field_names()
+	{
+		return $this->list_fields();
+	}
 
 	// --------------------------------------------------------------------
 
diff --git a/system/database/drivers/mysqli/mysqli_result.php b/system/database/drivers/mysqli/mysqli_result.php
index 08db13f..215403e 100644
--- a/system/database/drivers/mysqli/mysqli_result.php
+++ b/system/database/drivers/mysqli/mysqli_result.php
@@ -60,7 +60,7 @@
 	 * @access	public
 	 * @return	array
 	 */
-	function field_names()
+	function list_fields()
 	{
 		$field_names = array();
 		while ($field = mysql_fetch_field($this->result_id))
@@ -71,6 +71,12 @@
 		return $field_names;
 	}
 
+	// Deprecated
+	function field_names()
+	{
+		return $this->list_fields();
+	}
+
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/database/drivers/oci8/oci8_result.php b/system/database/drivers/oci8/oci8_result.php
index a3da800..ab13a39 100644
--- a/system/database/drivers/oci8/oci8_result.php
+++ b/system/database/drivers/oci8/oci8_result.php
@@ -84,7 +84,7 @@
 	 * @access	public
 	 * @return	array
 	 */
-	function field_names()
+	function list_fields()
 	{
 		$field_names = array();
         $fieldCount = $this->num_fields();
@@ -95,6 +95,12 @@
 		return $field_names;
 	}
 
+	// Deprecated
+	function field_names()
+	{
+		return $this->list_fields();
+	}
+
     // --------------------------------------------------------------------
 
     /**
diff --git a/system/database/drivers/odbc/odbc_result.php b/system/database/drivers/odbc/odbc_result.php
index 9204d86..ea834f9 100644
--- a/system/database/drivers/odbc/odbc_result.php
+++ b/system/database/drivers/odbc/odbc_result.php
@@ -60,7 +60,7 @@
 	 * @access	public
 	 * @return	array
 	 */
-	function field_names()
+	function list_fields()
 	{
 		$field_names = array();
 		for ($i = 0; $i < $this->num_fields(); $i++)
@@ -71,6 +71,12 @@
 		return $field_names;
 	}
 
+	// Deprecated
+	function field_names()
+	{
+		return $this->list_fields();
+	}
+
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/database/drivers/postgre/postgre_result.php b/system/database/drivers/postgre/postgre_result.php
index 8c25c5d..e792544 100644
--- a/system/database/drivers/postgre/postgre_result.php
+++ b/system/database/drivers/postgre/postgre_result.php
@@ -60,7 +60,7 @@
 	 * @access	public
 	 * @return	array
 	 */
-	function field_names()
+	function list_fields()
 	{
 		$field_names = array();
 		for ($i = 0; $i < $this->num_fields(); $i++)
@@ -71,6 +71,12 @@
 		return $field_names;
 	}
 
+	// Deprecated
+	function field_names()
+	{
+		return $this->list_fields();
+	}
+
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/database/drivers/sqlite/sqlite_result.php b/system/database/drivers/sqlite/sqlite_result.php
index a3e94b4..55364bb 100644
--- a/system/database/drivers/sqlite/sqlite_result.php
+++ b/system/database/drivers/sqlite/sqlite_result.php
@@ -60,7 +60,7 @@
 	 * @access	public
 	 * @return	array
 	 */
-	function field_names()
+	function list_fields()
 	{
 		$field_names = array();
 		for ($i = 0; $i < $this->num_fields(); $i++)
@@ -71,6 +71,12 @@
 		return $field_names;
 	}
 
+	// Deprecated
+	function field_names()
+	{
+		return $this->list_fields();
+	}
+
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index 96ec0c9..7a6637a 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -171,10 +171,7 @@
 			$CI->$name = new $model();	
 			foreach (get_object_vars($CI) as $key => $var)
 			{		
-				if ( ! isset($CI->$name->$key))
-				{
-					$CI->$name->$key =& $CI->$key;						
-				}				
+				$CI->$name->$key =& $CI->$key;						
 			}			
 		}
 		else
@@ -182,14 +179,12 @@
 			$this->$name = new $model();
 			foreach (get_object_vars($this) as $key => $var)
 			{			
-				if ( ! isset($this->$name->$key))
-				{
-					$this->$name->$key =& $CI->$key;						
-				}				
+				$this->$name->$key =& $this->$key;						
 			}			
 		}		
 		
 		$this->_ci_models[] = $name;
+		$this->_ci_assign_to_models();
 	}
 	
 	
diff --git a/system/libraries/Table.php b/system/libraries/Table.php
index 61d04ee..758676e 100644
--- a/system/libraries/Table.php
+++ b/system/libraries/Table.php
@@ -202,12 +202,12 @@
 		// First generate the headings from the table column names
 		if (count($this->heading) == 0)
 		{
-			if ( ! method_exists($query, 'field_names'))
+			if ( ! method_exists($query, 'list_fields'))
 			{
 				return FALSE;
 			}
 			
-			$this->heading = $query->field_names();
+			$this->heading = $query->list_fields();
 		}
 				
 		// Next blast through the result array and build out the rows