diff --git a/system/database/DB_result.php b/system/database/DB_result.php
index abb6b58..970a0db 100644
--- a/system/database/DB_result.php
+++ b/system/database/DB_result.php
@@ -243,44 +243,6 @@
 		return $result[$this->current_row];
 	}
 
-	/**
-	 * Number of rows in the result set
-	 *
-	 * @access	public
-	 * @return	integer
-	 */
-	function num_rows()
-	{
-		// Result supplied by the result adaptor class
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Number of fields in the result set
-	 *
-	 * @access	public
-	 * @return	integer
-	 */
-	function num_fields()
-	{
-		// Result supplied by the result adaptor class
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Field data
-	 *
-	 * Generates an array of objects containing field meta-data
-	 *
-	 * @access	public
-	 * @return	array
-	 */
-	function field_data()
-	{
-		// Result supplied by the result adaptor class
-	}
 }
 
 ?>
\ No newline at end of file
diff --git a/system/database/DB_utility.php b/system/database/DB_utility.php
index 39dc2cc..c43b399 100644
--- a/system/database/DB_utility.php
+++ b/system/database/DB_utility.php
@@ -24,9 +24,15 @@
  */
 class CI_DB_utility {
 
+	var $db;
 
-	
-	// --------------------------------------------------------------------
+	function CI_DB_utility()
+	{
+		// Assign the main database object to $this->db
+		$obj =& get_instance();
+		$this->db =& $obj->db;
+	}
+
 
 	/**
 	 * Database Version Number.  Returns a string containing the 
@@ -39,19 +45,19 @@
 	{
 		if (FALSE === ($sql = $this->_version()))
 		{
-            if ($this->db_debug)
+            if ($this->db->db_debug)
             {
-				return $this->display_error('db_unsupported_function');
+				return $this->db->display_error('db_unsupported_function');
             }
             return FALSE;        
 		}
 		
-        if ($this->dbdriver == 'oci8')
+        if ($this->db->dbdriver == 'oci8')
         {
 			return $sql;
-		}		
+		}
 	
-		$query = $this->query($sql);
+		$query = $this->db->query($sql);
 		$row = $query->row();
 		return $row->ver;
 	}
@@ -65,18 +71,18 @@
 	 * @return	array		 
 	 */	
 	function tables()
-	{      
+	{
 		if (FALSE === ($sql = $this->_show_tables()))
 		{
-            if ($this->db_debug)
+            if ($this->db->db_debug)
             {
-				return $this->display_error('db_unsupported_function');
+				return $this->db->display_error('db_unsupported_function');
             }
             return FALSE;        
 		}
 
 		$retval = array();
-		$query = $this->query($sql);
+		$query = $this->db->query($sql);
 		
 		if ($query->num_rows() > 0)
 		{
@@ -104,8 +110,8 @@
 	 * @return	boolean
 	 */
 	function table_exists($table_name)
-	{		
-		return ( ! in_array($this->dbprefix.$table_name, $this->tables())) ? FALSE : TRUE;
+	{
+		return ( ! in_array($this->db->dbprefix.$table_name, $this->tables())) ? FALSE : TRUE;
 	}
 	
 	// --------------------------------------------------------------------
@@ -121,23 +127,23 @@
     {
     	if ($table == '')
     	{
-			if ($this->db_debug)
+			if ($this->db->db_debug)
 			{
-				return $this->display_error('db_field_param_missing');
+				return $this->db->display_error('db_field_param_missing');
 			}
 			return FALSE;			
     	}
     	
-		if (FALSE === ($sql = $this->_show_columns($this->dbprefix.$table)))
+		if (FALSE === ($sql = $this->_show_columns($this->db->dbprefix.$table)))
 		{
-            if ($this->db_debug)
+            if ($this->db->db_debug)
             {
-				return $this->display_error('db_unsupported_function');
+				return $this->db->display_error('db_unsupported_function');
             }
             return FALSE;        
 		}
     	
-    	$query = $this->query($sql);
+    	$query = $this->db->query($sql);
     	
     	$retval = array();
 		foreach($query->result_array() as $row)
@@ -168,14 +174,14 @@
 	{
     	if ($table == '')
     	{
-			if ($this->db_debug)
+			if ($this->db->db_debug)
 			{
-				return $this->display_error('db_field_param_missing');
+				return $this->db->display_error('db_field_param_missing');
 			}
 			return FALSE;			
     	}
     	
-    	return $this->_field_data($this->dbprefix.$table);
+    	return $this->_field_data($this->db->dbprefix.$table);
 	}	
 	
 	// --------------------------------------------------------------------
diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php
index cd808da..38fce11 100644
--- a/system/database/drivers/mssql/mssql_driver.php
+++ b/system/database/drivers/mssql/mssql_driver.php
@@ -386,71 +386,7 @@
 	function _close($conn_id)
 	{
 		mssql_close($conn_id);
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Version number query string
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _version()
-	{
-		return "SELECT version() AS ver";
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show table query
-	 *
-	 * Generates a platform-specific query string so that the table names can be fetched
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _show_tables()
-	{
-		return "SELECT name FROM sysobjects WHERE type = 'U' ORDER BY name";		
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show columnn query
-	 *
-	 * Generates a platform-specific query string so that the column names can be fetched
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	string
-	 */
-	function _show_columns($table = '')
-	{
-		return "SELECT * FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = '".$this->_escape_table($table)."'";	
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Field data query
-	 *
-	 * Generates a platform-specific query so that the column data can be retrieved
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	object
-	 */
-	function _field_data($table)
-	{
-		$sql = "SELECT TOP 1 FROM ".$this->_escape_table($table);
-		$query = $this->query($sql);
-		return $query->field_data();
-	}
-	
-	
+	}	
 
 }
 
diff --git a/system/database/drivers/mssql/mssql_utility.php b/system/database/drivers/mssql/mssql_utility.php
index a76e1f1..96d1128 100644
--- a/system/database/drivers/mssql/mssql_utility.php
+++ b/system/database/drivers/mssql/mssql_utility.php
@@ -22,20 +22,71 @@
  * @author		Rick Ellis
  * @link		http://www.codeigniter.com/user_guide/database/
  */
-class CI_DB_mssql_utility {
+class CI_DB_mssql_utility extends CI_DB_utility {
+
 	
 	/**
-	 * Some function
+	 * Version number query string
 	 *
 	 * @access	public
-	 * @return	integer
+	 * @return	string
 	 */
-	function something()
+	function _version()
 	{
+		return "SELECT version() AS ver";
 	}
 	
 	// --------------------------------------------------------------------
 
+	/**
+	 * Show table query
+	 *
+	 * Generates a platform-specific query string so that the table names can be fetched
+	 *
+	 * @access	public
+	 * @return	string
+	 */
+	function _show_tables()
+	{
+		return "SELECT name FROM sysobjects WHERE type = 'U' ORDER BY name";		
+	}
+	
+	// --------------------------------------------------------------------
+
+	/**
+	 * Show columnn query
+	 *
+	 * Generates a platform-specific query string so that the column names can be fetched
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	string
+	 */
+	function _show_columns($table = '')
+	{
+		return "SELECT * FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = '".$this->db->_escape_table($table)."'";	
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Field data query
+	 *
+	 * Generates a platform-specific query so that the column data can be retrieved
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	object
+	 */
+	function _field_data($table)
+	{
+		$sql = "SELECT TOP 1 FROM ".$this->db->_escape_table($table);
+		$query = $this->db->query($sql);
+		return $query->field_data();
+	}
+	
+
+
 }
 
 ?>
\ No newline at end of file
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index fc7f678..545ac19 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -410,69 +410,7 @@
 	{
 		mysql_close($conn_id);
 	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Version number query string
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _version()
-	{
-		return "SELECT version() AS ver";
-	}
 	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show table query
-	 *
-	 * Generates a platform-specific query string so that the table names can be fetched
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _show_tables()
-	{	  
-		return "SHOW TABLES FROM `".$this->database."`";		
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show columnn query
-	 *
-	 * Generates a platform-specific query string so that the column names can be fetched
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	string
-	 */
-	function _show_columns($table = '')
-	{
-		return "SHOW COLUMNS FROM ".$this->_escape_table($table);
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Field data query
-	 *
-	 * Generates a platform-specific query so that the column data can be retrieved
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	object
-	 */
-	function _field_data($table)
-	{
-		$sql = "SELECT * FROM ".$this->_escape_table($table)." LIMIT 1";
-		$query = $this->query($sql);
-		return $query->field_data();
-	}
-
 }
 
 ?>
\ No newline at end of file
diff --git a/system/database/drivers/mysql/mysql_utility.php b/system/database/drivers/mysql/mysql_utility.php
index 8dd7648..9bf2f5a 100644
--- a/system/database/drivers/mysql/mysql_utility.php
+++ b/system/database/drivers/mysql/mysql_utility.php
@@ -22,20 +22,70 @@
  * @author		Rick Ellis
  * @link		http://www.codeigniter.com/user_guide/database/
  */
-class CI_DB_mysql_utility {
+class CI_DB_mysql_utility extends CI_DB_utility {
 	
+
 	/**
-	 * Some function
+	 * Version number query string
 	 *
 	 * @access	public
-	 * @return	integer
+	 * @return	string
 	 */
-	function something()
+	function _version()
 	{
+		return "SELECT version() AS ver";
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Show table query
+	 *
+	 * Generates a platform-specific query string so that the table names can be fetched
+	 *
+	 * @access	public
+	 * @return	string
+	 */
+	function _show_tables()
+	{
+		return "SHOW TABLES FROM `".$this->db->database."`";		
 	}
 	
 	// --------------------------------------------------------------------
 
+	/**
+	 * Show columnn query
+	 *
+	 * Generates a platform-specific query string so that the column names can be fetched
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	string
+	 */
+	function _show_columns($table = '')
+	{
+		return "SHOW COLUMNS FROM ".$this->db->_escape_table($table);
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Field data query
+	 *
+	 * Generates a platform-specific query so that the column data can be retrieved
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	object
+	 */
+	function _field_data($table)
+	{
+		$sql = "SELECT * FROM ".$this->db->_escape_table($table)." LIMIT 1";
+		$query = $this->db->query($sql);
+		return $query->field_data();
+	}
+
+
 }
 
 ?>
\ No newline at end of file
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index 9593841..adc482d 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -412,68 +412,6 @@
 		mysqli_close($conn_id);
 	}
 
-	// --------------------------------------------------------------------
-
-	/**
-	 * Version number query string
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _version()
-	{
-		return "SELECT version() AS ver";
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show table query
-	 *
-	 * Generates a platform-specific query string so that the table names can be fetched
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _show_tables()
-	{	  
-		return "SHOW TABLES FROM `".$this->database."`";		
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show columnn query
-	 *
-	 * Generates a platform-specific query string so that the column names can be fetched
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	string
-	 */
-	function _show_columns($table = '')
-	{
-		return "SHOW COLUMNS FROM ".$this->_escape_table($table);
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Field data query
-	 *
-	 * Generates a platform-specific query so that the column data can be retrieved
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	object
-	 */
-	function _field_data($table)
-	{
-		$sql = "SELECT * FROM ".$this->_escape_table($table)." LIMIT 1";
-		$query = $this->query($sql);
-		return $query->field_data();
-	}
-	
 
 }
 
diff --git a/system/database/drivers/mysqli/mysqli_utility.php b/system/database/drivers/mysqli/mysqli_utility.php
index 02b423c..a1498a3 100644
--- a/system/database/drivers/mysqli/mysqli_utility.php
+++ b/system/database/drivers/mysqli/mysqli_utility.php
@@ -22,20 +22,70 @@
  * @author		Rick Ellis
  * @link		http://www.codeigniter.com/user_guide/database/
  */
-class CI_DB_mysqli_utility {
+class CI_DB_mysqli_utility extends CI_DB_utility {
 	
 	/**
-	 * Some function
+	 * Version number query string
 	 *
 	 * @access	public
-	 * @return	integer
+	 * @return	string
 	 */
-	function something()
+	function _version()
 	{
+		return "SELECT version() AS ver";
 	}
 	
 	// --------------------------------------------------------------------
 
+	/**
+	 * Show table query
+	 *
+	 * Generates a platform-specific query string so that the table names can be fetched
+	 *
+	 * @access	public
+	 * @return	string
+	 */
+	function _show_tables()
+	{
+		return "SHOW TABLES FROM `".$this->db->database."`";		
+	}
+	
+	// --------------------------------------------------------------------
+
+	/**
+	 * Show columnn query
+	 *
+	 * Generates a platform-specific query string so that the column names can be fetched
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	string
+	 */
+	function _show_columns($table = '')
+	{
+		return "SHOW COLUMNS FROM ".$this->db->_escape_table($table);
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Field data query
+	 *
+	 * Generates a platform-specific query so that the column data can be retrieved
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	object
+	 */
+	function _field_data($table)
+	{
+		$sql = "SELECT * FROM ".$this->db->_escape_table($table)." LIMIT 1";
+		$query = $this->db->query($sql);
+		return $query->field_data();
+	}
+	
+
+
 }
 
 ?>
\ No newline at end of file
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index bfc38a4..f7f4bd1 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -539,69 +539,6 @@
         ocilogoff($conn_id);
     }
 
-    // --------------------------------------------------------------------
-
-    /**
-     * Version number query string
-     *
-     * @access  public
-     * @return  string
-     */
-    function _version()
-    {
-        $ver = ociserverversion($this->conn_id);
-        return $ver;
-    }
-
-    // --------------------------------------------------------------------
-
-    /**
-     * Show table query
-     *
-     * Generates a platform-specific query string so that the table names can be fetched
-     *
-     * @access  public
-     * @return  string
-     */
-    function _show_tables()
-    {
-        return "select TABLE_NAME FROM ALL_TABLES";
-    }
-
-    // --------------------------------------------------------------------
-
-    /**
-     * Show columnn query
-     *
-     * Generates a platform-specific query string so that the column names can be fetched
-     *
-     * @access  public
-     * @param   string  the table name
-     * @return  string
-     */
-    function _show_columns($table = '')
-    {
-        return "SELECT COLUMN_NAME FROM all_tab_columns WHERE table_name = '$table'";
-    }
-
-    // --------------------------------------------------------------------
-
-    /**
-     * Field data query
-     *
-     * Generates a platform-specific query so that the column data can be retrieved
-     *
-     * @access  public
-     * @param   string  the table name
-     * @return  object
-     */
-    function _field_data($table)
-    {
-        $sql = "SELECT * FROM ".$this->_escape_table($table)." where rownum = 1";
-        $query = $this->query($sql);
-        return $query->field_data();
-    }
-
 
 }
 
diff --git a/system/database/drivers/oci8/oci8_utility.php b/system/database/drivers/oci8/oci8_utility.php
index f1e327a..fdd585d 100644
--- a/system/database/drivers/oci8/oci8_utility.php
+++ b/system/database/drivers/oci8/oci8_utility.php
@@ -22,19 +22,70 @@
  * @author		Rick Ellis
  * @link		http://www.codeigniter.com/user_guide/database/
  */
-class CI_DB_oci8_utility {
-	
-	/**
-	 * Some function
-	 *
-	 * @access	public
-	 * @return	integer
-	 */
-	function something()
-	{
-	}
-	
-	// --------------------------------------------------------------------
+class CI_DB_oci8_utility extends CI_DB_utility {
+
+
+
+    /**
+     * Version number query string
+     *
+     * @access  public
+     * @return  string
+     */
+    function _version()
+    {
+        return ociserverversion($this->conn_id);
+    }
+
+    // --------------------------------------------------------------------
+
+    /**
+     * Show table query
+     *
+     * Generates a platform-specific query string so that the table names can be fetched
+     *
+     * @access  public
+     * @return  string
+     */
+    function _show_tables()
+    {
+        return "select TABLE_NAME FROM ALL_TABLES";
+    }
+
+    // --------------------------------------------------------------------
+
+    /**
+     * Show columnn query
+     *
+     * Generates a platform-specific query string so that the column names can be fetched
+     *
+     * @access  public
+     * @param   string  the table name
+     * @return  string
+     */
+    function _show_columns($table = '')
+    {
+        return "SELECT COLUMN_NAME FROM all_tab_columns WHERE table_name = '$table'";
+    }
+
+    // --------------------------------------------------------------------
+
+    /**
+     * Field data query
+     *
+     * Generates a platform-specific query so that the column data can be retrieved
+     *
+     * @access  public
+     * @param   string  the table name
+     * @return  object
+     */
+    function _field_data($table)
+    {
+        $sql = "SELECT * FROM ".$this->db->_escape_table($table)." where rownum = 1";
+        $query = $this->db->query($sql);
+        return $query->field_data();
+    }
+
 
 }
 
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index c05abd0..bef6258 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -386,68 +386,6 @@
 		odbc_close($conn_id);
 	}
 
-	// --------------------------------------------------------------------
-
-	/**
-	 * Version number query string
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _version()
-	{
-		return "SELECT version() AS ver";
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show table query
-	 *
-	 * Generates a platform-specific query string so that the table names can be fetched
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _show_tables()
-	{	  
-		return "SHOW TABLES FROM `".$this->database."`";		
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show columnn query
-	 *
-	 * Generates a platform-specific query string so that the column names can be fetched
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	string
-	 */
-	function _show_columns($table = '')
-	{
-		return "SHOW COLUMNS FROM ".$this->_escape_table($table);
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Field data query
-	 *
-	 * Generates a platform-specific query so that the column data can be retrieved
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	object
-	 */
-	function _field_data($table)
-	{
-		$sql = "SELECT TOP 1 FROM ".$this->_escape_table($table);
-		$query = $this->query($sql);
-		return $query->field_data();
-	}
-
 	
 }
 
diff --git a/system/database/drivers/odbc/odbc_utility.php b/system/database/drivers/odbc/odbc_utility.php
index f2b5602..837c8c8 100644
--- a/system/database/drivers/odbc/odbc_utility.php
+++ b/system/database/drivers/odbc/odbc_utility.php
@@ -22,20 +22,70 @@
  * @author		Rick Ellis
  * @link		http://www.codeigniter.com/database/
  */
-class CI_DB_odbc_utility {
-	
+class CI_DB_odbc_utility extends CI_DB_utility {
+
 	/**
-	 * Some function
+	 * Version number query string
 	 *
 	 * @access	public
-	 * @return	integer
+	 * @return	string
 	 */
-	function something()
+	function _version()
 	{
+		return "SELECT version() AS ver";
 	}
 	
 	// --------------------------------------------------------------------
 
+	/**
+	 * Show table query
+	 *
+	 * Generates a platform-specific query string so that the table names can be fetched
+	 *
+	 * @access	public
+	 * @return	string
+	 */
+	function _show_tables()
+	{
+		return "SHOW TABLES FROM `".$this->db->database."`";		
+	}
+	
+	// --------------------------------------------------------------------
+
+	/**
+	 * Show columnn query
+	 *
+	 * Generates a platform-specific query string so that the column names can be fetched
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	string
+	 */
+	function _show_columns($table = '')
+	{
+		return "SHOW COLUMNS FROM ".$this->db->_escape_table($table);
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Field data query
+	 *
+	 * Generates a platform-specific query so that the column data can be retrieved
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	object
+	 */
+	function _field_data($table)
+	{
+		$sql = "SELECT TOP 1 FROM ".$this->db->_escape_table($table);
+		$query = $this->db->query($sql);
+		return $query->field_data();
+	}
+
+
+
 }
 
 ?>
\ No newline at end of file
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 0381718..9c8a18e 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -419,66 +419,6 @@
 		pg_close($conn_id);
 	}
 
-	// --------------------------------------------------------------------
-
-	/**
-	 * Version number query string
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _version()
-	{
-		return "SELECT version() AS ver";
-	}
-
-	/**
-	 * Show table query
-	 *
-	 * Generates a platform-specific query string so that the table names can be fetched
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _show_tables()
-	{	  
-		return "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'";	
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show columnn query
-	 *
-	 * Generates a platform-specific query string so that the column names can be fetched
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	string
-	 */
-	function _show_columns($table = '')
-	{
-		return "SELECT column_name FROM information_schema.columns WHERE table_name ='".$this->_escape_table($table)."'"; 	
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Field data query
-	 *
-	 * Generates a platform-specific query so that the column data can be retrieved
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	object
-	 */
-	function _field_data($table)
-	{
-		$sql = "SELECT * FROM ".$this->_escape_table($table)." LIMIT 1";
-		$query = $this->query($sql);
-		return $query->field_data();
-	}
-
 
 }
 
diff --git a/system/database/drivers/postgre/postgre_utility.php b/system/database/drivers/postgre/postgre_utility.php
index 760be81..cfc475f 100644
--- a/system/database/drivers/postgre/postgre_utility.php
+++ b/system/database/drivers/postgre/postgre_utility.php
@@ -22,20 +22,70 @@
  * @author		Rick Ellis
  * @link		http://www.codeigniter.com/user_guide/database/
  */
-class CI_DB_postgre_utility {
+class CI_DB_postgre_utility extends CI_DB_utility {
+
 	
 	/**
-	 * Some function
+	 * Version number query string
 	 *
 	 * @access	public
-	 * @return	integer
+	 * @return	string
 	 */
-	function something()
+	function _version()
 	{
+		return "SELECT version() AS ver";
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Show table query
+	 *
+	 * Generates a platform-specific query string so that the table names can be fetched
+	 *
+	 * @access	public
+	 * @return	string
+	 */
+	function _show_tables()
+	{	  
+		return "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'";	
 	}
 	
 	// --------------------------------------------------------------------
 
+	/**
+	 * Show columnn query
+	 *
+	 * Generates a platform-specific query string so that the column names can be fetched
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	string
+	 */
+	function _show_columns($table = '')
+	{
+		return "SELECT column_name FROM information_schema.columns WHERE table_name ='".$this->db->_escape_table($table)."'"; 	
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Field data query
+	 *
+	 * Generates a platform-specific query so that the column data can be retrieved
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	object
+	 */
+	function _field_data($table)
+	{
+		$sql = "SELECT * FROM ".$this->db->_escape_table($table)." LIMIT 1";
+		$query = $this->db->query($sql);
+		return $query->field_data();
+	}
+
+
 }
 
 ?>
\ No newline at end of file
diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index f8318b8..6039845 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -413,69 +413,6 @@
 		sqlite_close($conn_id);
 	}
 
-	// --------------------------------------------------------------------
-
-	/**
-	 * Version number query string
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _version()
-	{
-		return sqlite_libversion();
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show table query
-	 *
-	 * Generates a platform-specific query string so that the table names can be fetched
-	 *
-	 * @access	public
-	 * @return	string
-	 */
-	function _show_tables()
-	{
-		return "SELECT name from sqlite_master WHERE type='table'";
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Show columnn query
-	 *
-	 * Generates a platform-specific query string so that the column names can be fetched
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	string
-	 */
-	function _show_columns($table = '')
-	{
-		// Not supported
-		return FALSE;
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Field data query
-	 *
-	 * Generates a platform-specific query so that the column data can be retrieved
-	 *
-	 * @access	public
-	 * @param	string	the table name
-	 * @return	object
-	 */
-	function _field_data($table)
-	{
-		$sql = "SELECT * FROM ".$this->_escape_table($table)." LIMIT 1";
-		$query = $this->query($sql);
-		return $query->field_data();
-	}
-
 
 }
 
diff --git a/system/database/drivers/sqlite/sqlite_utility.php b/system/database/drivers/sqlite/sqlite_utility.php
index 3cbec6f..2b99df9 100644
--- a/system/database/drivers/sqlite/sqlite_utility.php
+++ b/system/database/drivers/sqlite/sqlite_utility.php
@@ -22,20 +22,71 @@
  * @author		Rick Ellis
  * @link		http://www.codeigniter.com/user_guide/database/
  */
-class CI_DB_sqlite_utility {
-	
+class CI_DB_sqlite_utility extends CI_DB_utility {
+
 	/**
-	 * Some function
+	 * Version number query string
 	 *
 	 * @access	public
-	 * @return	integer
+	 * @return	string
 	 */
-	function something()
+	function _version()
 	{
+		return sqlite_libversion();
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Show table query
+	 *
+	 * Generates a platform-specific query string so that the table names can be fetched
+	 *
+	 * @access	public
+	 * @return	string
+	 */
+	function _show_tables()
+	{
+		return "SELECT name from sqlite_master WHERE type='table'";
 	}
 	
 	// --------------------------------------------------------------------
 
+	/**
+	 * Show columnn query
+	 *
+	 * Generates a platform-specific query string so that the column names can be fetched
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	string
+	 */
+	function _show_columns($table = '')
+	{
+		// Not supported
+		return FALSE;
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Field data query
+	 *
+	 * Generates a platform-specific query so that the column data can be retrieved
+	 *
+	 * @access	public
+	 * @param	string	the table name
+	 * @return	object
+	 */
+	function _field_data($table)
+	{
+		$sql = "SELECT * FROM ".$this->db->_escape_table($table)." LIMIT 1";
+		$query = $this->db->query($sql);
+		return $query->field_data();
+	}
+
+
+
 }
 
 ?>
\ No newline at end of file
diff --git a/system/libraries/Controller.php b/system/libraries/Controller.php
index b91cf3b..5fdbd9f 100644
--- a/system/libraries/Controller.php
+++ b/system/libraries/Controller.php
@@ -384,7 +384,7 @@
 		require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver'.EXT);
 
 		// Instantiate the DB adapter
-		$driver = 'CI_DB_'. $params['dbdriver'].'_driver';
+		$driver = 'CI_DB_'.$params['dbdriver'].'_driver';
 		$DB = new $driver($params);
 		
 		if ($return === TRUE)
@@ -397,7 +397,49 @@
 		$obj->db =& $DB;
 	}
   	// END _ci_init_database()
-  	
+  
+  
+	// --------------------------------------------------------------------
+
+	/**
+	 * Initialize Database Utilities Class
+	 *
+	 * @access	private
+	 * @param	mixed	database platform
+	 * @param	bool	whether to return the object
+	 * @return	void
+	 */
+	function _ci_init_dbutils($db = '', $return = FALSE)
+	{
+		if ($this->_ci_is_loaded('dbutils') == TRUE AND $return == FALSE)
+		{
+			return;
+		}
+
+		if ($this->_ci_is_loaded('db') == FALSE)
+		{
+			$this->_ci_init_database();
+		}
+	
+		require_once(BASEPATH.'database/DB_utility'.EXT);
+		require_once(BASEPATH.'database/drivers/'.$this->db->dbdriver.'/'.$this->db->dbdriver.'_utility'.EXT);
+		
+
+		// Instantiate the DB adapter
+		$driver = 'CI_DB_'.$this->db->dbdriver.'_utility';
+		$DB = new $driver();
+		
+		if ($return === TRUE)
+		{
+			return $DB;
+		}
+		
+		$obj =& get_instance();
+		$obj->ci_is_loaded[] = 'dbutils';
+		$obj->dbutil =& $DB;
+	}
+  	// END _ci_init_database()
+  
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index d966e28..f4a9f82 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -108,7 +108,7 @@
 	 * @param	string	the DB credentials
 	 * @param	bool	whether to return the DB object
 	 * @param	bool	whether to enable active record (this allows us to override the config setting)
-	 * @return	mixed
+	 * @return	object
 	 */	
 	function database($db = '', $return = FALSE, $active_record = FALSE)
 	{
@@ -125,6 +125,29 @@
 		}
 	}
 	// END database()
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Database Utilities Loader
+	 *
+	 * @access	public
+	 * @param	string	the DB platform
+	 * @param	bool	whether to return the DB object
+	 * @return	object
+	 */	
+	function dbutils($db = '', $return = FALSE)
+	{
+		$obj =& get_instance();
+		
+		if ( ! is_bool($return))
+		{
+			$return = FALSE;
+		}
+	
+		return $obj->_ci_init_dbutils($db, $return);
+	}
+	// END dbutils()
 	
 	// --------------------------------------------------------------------