diff --git a/system/codeigniter/Common.php b/system/codeigniter/Common.php
index 124ad9a..d2342de 100644
--- a/system/codeigniter/Common.php
+++ b/system/codeigniter/Common.php
@@ -72,7 +72,7 @@
 		// identically named file in the application/libraries folder. 
 		// We need to determine, however, if the class being requested is
 		// a sub-class of an existing library or an independent instance
-		// since each needs to be handled slightly differently. 
+		// since each needs to be handled slightly different. 
 		// To do this we'll open the requested class and read the top portion
 		// of it. If the class extends a base class we will load the base first.
 		// If it doesn't extend the base we'll only load the requested class.
@@ -84,12 +84,12 @@
 		// replaced on-the-fly with nothing required for the user to do
 		// except write the declaration.  Fortunately PHP is ridiculously fast
 		// at file reading operations so I'm not able to discern a performance
-		// hit based on my benchmarks, assuming a reasonable number of core
+		// hit based on my benchmarks, assuming only a small number of core
 		// files are being extended, which will usually be the case.
 		
 		$fp	= fopen(APPPATH.'libraries/'.$class.EXT, "rb");
 		
-		if (preg_match("/MY_".$class."\s+extends\s+CI_".$class."/", fread($fp, '6000')))
+		if (preg_match("/MY_".$class."\s+extends\s+CI_".$class."/i", fread($fp, '6000')))
 		{
 			require(BASEPATH.'libraries/'.$class.EXT);	
 			require(APPPATH.'libraries/'.$class.EXT);
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index 5102cc7..81af466 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -555,37 +555,6 @@
 
 	// --------------------------------------------------------------------
 
-	// --------------------------------------------------------------------
-
-	/**
-	 * List databases
-	 *
-	 * @access	public
-	 * @return	bool
-	 */
-	function list_databases()
-	{	
-		// Is there a cached result?
-		if (isset($this->cache['db_names']))
-		{
-			return $this->cache['db_names'];
-		}
-	
-		$query = $this->query($this->_list_database());
-		$dbs = array();
-		if ($query->num_rows() > 0)
-		{
-			foreach ($query->result_array() as $row)
-			{
-				$dbs[] = current($row);
-			}
-		}
-			
-		return $this->cache['db_names'] =& $dbs;
-	}
-
-	// --------------------------------------------------------------------
-
 	/**
 	 * Returns an array of table names
 	 * 
@@ -694,6 +663,20 @@
     	
 		return $this->cache['field_names'][$table] =& $retval;
     }
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Determine if a particular field exists
+	 * @access	public
+	 * @param	string
+	 * @param	string
+	 * @return	boolean
+	 */
+	function field_exists($field_name, $table_name)
+	{	
+		return ( ! in_array($field_name, $this->list_fields($table_name))) ? FALSE : TRUE;
+	}
     
 	// --------------------------------------------------------------------
 
diff --git a/system/database/DB_utility.php b/system/database/DB_utility.php
index dc56d65..e568bce 100644
--- a/system/database/DB_utility.php
+++ b/system/database/DB_utility.php
@@ -87,6 +87,35 @@
 	// --------------------------------------------------------------------
 
 	/**
+	 * List databases
+	 *
+	 * @access	public
+	 * @return	bool
+	 */
+	function list_databases()
+	{	
+		// Is there a cached result?
+		if (isset($this->cache['db_names']))
+		{
+			return $this->cache['db_names'];
+		}
+	
+		$query = $this->db->query($this->_list_database());
+		$dbs = array();
+		if ($query->num_rows() > 0)
+		{
+			foreach ($query->result_array() as $row)
+			{
+				$dbs[] = current($row);
+			}
+		}
+			
+		return $this->cache['db_names'] =& $dbs;
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
 	 * Optimize Table
 	 *
 	 * @access	public
diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php
index 8b82ee3..cb2f48d 100644
--- a/system/database/drivers/mssql/mssql_driver.php
+++ b/system/database/drivers/mssql/mssql_driver.php
@@ -258,19 +258,6 @@
 		$row = $query->row();
 		return $row->numrows;
 	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * List databases
-	 *
-	 * @access	private
-	 * @return	bool
-	 */
-	function _list_databases()
-	{
-		return "EXEC sp_helpdb"; // Can also be: EXEC sp_databases 
-	}
 
 	// --------------------------------------------------------------------
 
diff --git a/system/database/drivers/mssql/mssql_utility.php b/system/database/drivers/mssql/mssql_utility.php
index ad13167..388dbe1 100644
--- a/system/database/drivers/mssql/mssql_utility.php
+++ b/system/database/drivers/mssql/mssql_utility.php
@@ -67,6 +67,19 @@
 	// --------------------------------------------------------------------
 
 	/**
+	 * List databases
+	 *
+	 * @access	private
+	 * @return	bool
+	 */
+	function _list_databases()
+	{
+		return "EXEC sp_helpdb"; // Can also be: EXEC sp_databases 
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
 	 * Optimize table query
 	 *
 	 * Generates a platform-specific query so that a table can be optimized
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index ecab648..253627c 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -296,19 +296,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * List databases
-	 *
-	 * @access	private
-	 * @return	bool
-	 */
-	function _list_databases()
-	{
-		return "SHOW DATABASES";
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * List table query
 	 *
 	 * Generates a platform-specific query string so that the table names can be fetched
diff --git a/system/database/drivers/mysql/mysql_utility.php b/system/database/drivers/mysql/mysql_utility.php
index a81c915..b387ace 100644
--- a/system/database/drivers/mysql/mysql_utility.php
+++ b/system/database/drivers/mysql/mysql_utility.php
@@ -53,6 +53,19 @@
 	// --------------------------------------------------------------------
 
 	/**
+	 * List databases
+	 *
+	 * @access	private
+	 * @return	bool
+	 */
+	function _list_databases()
+	{
+		return "SHOW DATABASES";
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
 	 * Drop Table
 	 *
 	 * @access	private
@@ -101,7 +114,7 @@
 	 * MySQL Export
 	 *
 	 * @access	private
-	 * @param	array	Any preferences
+	 * @param	array	Preferences
 	 * @return	mixed
 	 */
 	function _backup($params = array())
@@ -217,7 +230,6 @@
 								
 				// Build the INSERT string
 				$output .= 'INSERT INTO '.$table.' ('.$field_str.') VALUES ('.$val_str.');'.$newline;
-	
 			}
 			
 			$output .= $newline.$newline;
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index a2c3803..4fd9f3a 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -288,19 +288,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * List databases
-	 *
-	 * @access	private
-	 * @return	bool
-	 */
-	function _list_databases()
-	{
-		return "SHOW DATABASES";
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * List table query
 	 *
 	 * Generates a platform-specific query string so that the table names can be fetched
diff --git a/system/database/drivers/mysqli/mysqli_utility.php b/system/database/drivers/mysqli/mysqli_utility.php
index f5b98b1..a40441d 100644
--- a/system/database/drivers/mysqli/mysqli_utility.php
+++ b/system/database/drivers/mysqli/mysqli_utility.php
@@ -62,6 +62,19 @@
 	{
 		return "DROP TABLE IF EXISTS ".$this->db->_escape_table($name);
 	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * List databases
+	 *
+	 * @access	private
+	 * @return	bool
+	 */
+	function _list_databases()
+	{
+		return "SHOW DATABASES";
+	}
 	
 	// --------------------------------------------------------------------
 
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index b43b4c4..e83c640 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -399,19 +399,6 @@
         return $row->NUMROWS;
     }
 
-	// --------------------------------------------------------------------
-
-	/**
-	 * List databases
-	 *
-	 * @access	private
-	 * @return	bool
-	 */
-	function _list_databases()
-	{
-		return FALSE;
-	}
-
     // --------------------------------------------------------------------
 
     /**
diff --git a/system/database/drivers/oci8/oci8_utility.php b/system/database/drivers/oci8/oci8_utility.php
index b6503de..b1d539a 100644
--- a/system/database/drivers/oci8/oci8_utility.php
+++ b/system/database/drivers/oci8/oci8_utility.php
@@ -54,6 +54,19 @@
 	// --------------------------------------------------------------------
 
 	/**
+	 * List databases
+	 *
+	 * @access	private
+	 * @return	bool
+	 */
+	function _list_databases()
+	{
+		return FALSE;
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
 	 * Drop Table
 	 *
 	 * @access	private
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index 0f002cc..4bd6e11 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -263,24 +263,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * List databases
-	 *
-	 * @access	private
-	 * @return	bool
-	 */
-	function _list_databases()
-	{
-		// Not sure if ODBC lets you list all databases...	
-		if ($this->db_debug)
-		{
-			return $this->display_error('db_unsuported_feature');
-		}
-		return FALSE;
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * Show table query
 	 *
 	 * Generates a platform-specific query string so that the table names can be fetched
diff --git a/system/database/drivers/odbc/odbc_utility.php b/system/database/drivers/odbc/odbc_utility.php
index 6d0fb79..5a0e365 100644
--- a/system/database/drivers/odbc/odbc_utility.php
+++ b/system/database/drivers/odbc/odbc_utility.php
@@ -66,6 +66,24 @@
 	// --------------------------------------------------------------------
 
 	/**
+	 * List databases
+	 *
+	 * @access	private
+	 * @return	bool
+	 */
+	function _list_databases()
+	{
+		// Not sure if ODBC lets you list all databases...	
+		if ($this->db->db_debug)
+		{
+			return $this->db->display_error('db_unsuported_feature');
+		}
+		return FALSE;
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
 	 * Drop Table
 	 *
 	 * @access	private
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index f143956..340d650 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -290,19 +290,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * List databases
-	 *
-	 * @access	private
-	 * @return	bool
-	 */
-	function _list_databases()
-	{
-		return "SELECT datname FROM pg_database";
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * Show table query
 	 *
 	 * Generates a platform-specific query string so that the table names can be fetched
diff --git a/system/database/drivers/postgre/postgre_utility.php b/system/database/drivers/postgre/postgre_utility.php
index 46c98cc..038aa26 100644
--- a/system/database/drivers/postgre/postgre_utility.php
+++ b/system/database/drivers/postgre/postgre_utility.php
@@ -54,6 +54,19 @@
 	// --------------------------------------------------------------------
 
 	/**
+	 * List databases
+	 *
+	 * @access	private
+	 * @return	bool
+	 */
+	function _list_databases()
+	{
+		return "SELECT datname FROM pg_database";
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
 	 * Drop Table
 	 *
 	 * @access	private
diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index f57c4b8..9da50b6 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -282,28 +282,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * List databases
-	 *
-	 * I don't believe you can do a database listing with SQLite
-	 * since each database is its own file.  I suppose we could
-	 * try reading a directory looking for SQLite files, but 
-	 * that doesn't seem like a terribly good idea
-	 *
-	 * @access	private
-	 * @return	bool
-	 */
-	function _list_databases()
-	{
-		if ($this->db_debug)
-		{
-			return $this->display_error('db_unsuported_feature');
-		}
-		return array();
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * List table query
 	 *
 	 * Generates a platform-specific query string so that the table names can be fetched
diff --git a/system/database/drivers/sqlite/sqlite_utility.php b/system/database/drivers/sqlite/sqlite_utility.php
index 801660d..19b06bd 100644
--- a/system/database/drivers/sqlite/sqlite_utility.php
+++ b/system/database/drivers/sqlite/sqlite_utility.php
@@ -64,6 +64,28 @@
 	// --------------------------------------------------------------------
 
 	/**
+	 * List databases
+	 *
+	 * I don't believe you can do a database listing with SQLite
+	 * since each database is its own file.  I suppose we could
+	 * try reading a directory looking for SQLite files, but 
+	 * that doesn't seem like a terribly good idea
+	 *
+	 * @access	private
+	 * @return	bool
+	 */
+	function _list_databases()
+	{
+		if ($this->db_debug)
+		{
+			return $this->display_error('db_unsuported_feature');
+		}
+		return array();
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
 	 * Drop Table
 	 *
 	 *  Unsupported feature in SQLite
diff --git a/user_guide/database/examples.html b/user_guide/database/examples.html
index c58e9bb..08051ca 100644
--- a/user_guide/database/examples.html
+++ b/user_guide/database/examples.html
@@ -112,6 +112,28 @@
 <p>The above <dfn>result_array()</dfn> function returns an array of standard array indexes.  Example:  $row['title']</p>

 

 

+<h2>Testing for Results</h2>

+

+<p>If you run queries that might <strong>not</strong> produce a result, you are encouraged to test for a result first

+using the <dfn>num_rows()</dfn> function:</p>

+

+<code>

+$query = $this->db->query("YOUR QUERY");<br />

+<br />

+if ($query->num_rows() > 0)<br />

+{<br />

+&nbsp;&nbsp;&nbsp;foreach ($query->result() as $row)<br />

+&nbsp;&nbsp;&nbsp;{<br />

+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row->title;<br />

+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row->name;<br />

+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row->body;<br />

+&nbsp;&nbsp;&nbsp;}<br />

+}

+</code>

+

+

+

+

 <h2>Standard Query With Single Result</h2>

 

 <code>$query = $this->db->query('SELECT name FROM my_table LIMIT 1');<br />

@@ -120,6 +142,19 @@
 echo $row->name;<br />

 </code>

 

+<p>The above <dfn>row()</dfn> function returns an <strong>object</strong>.  Example:  $row->name</p>

+

+

+<h2>Standard Query With Single Result (Array version)</h2>

+

+<code>$query = $this->db->query('SELECT name FROM my_table LIMIT 1');<br />

+<br />

+$row = $query->row_array();<br />

+echo $row->['name'];<br />

+</code>

+

+<p>The above <dfn>row_array()</dfn> function returns an <strong>array</strong>.  Example:  $row->['name']</p>

+

 

 <h2>Standard Insert</h2>

 

@@ -146,7 +181,11 @@
 {<br />

 &nbsp;&nbsp;&nbsp;&nbsp;echo $row->title;<br />

 }</code>

-	

+

+<p>The above <dfn>get()</dfn> function retrieves all the results from the supplied table. 

+The <a href="active_record.html">Active Record</a> class contains a full compliment of functions

+for working with data.</p>

+

 

 <h2>Active Record Insert</h2>

 

diff --git a/user_guide/database/fields.html b/user_guide/database/fields.html
index 260cd22..83abe63 100644
--- a/user_guide/database/fields.html
+++ b/user_guide/database/fields.html
@@ -94,6 +94,23 @@
 </code>

 

 

+<h2>$this->db->field_exists();</h2>

+

+<p>Sometimes it's helpful to know whether a particular field exists befor performing an action.

+Returns a boolean TRUE/FALSE.  Usage example:</p>

+

+<code>

+if ($this->db->field_exists('field_name', 'table_name'))<br />

+{<br />

+&nbsp;&nbsp; // some code...<br />

+}

+</code>

+

+<p>Note:  Replace <em>field_name</em> with the name of the column you are looking for, and replace 

+<em>table_name</em> with the name of the table you are looking for.</p>

+

+

+

 

 <h2>$this->db->field_data();</h2>

 <p>Returns an array of objects containing field information.</p>

diff --git a/user_guide/database/results.html b/user_guide/database/results.html
index 81abc50..75f4357 100644
--- a/user_guide/database/results.html
+++ b/user_guide/database/results.html
@@ -84,6 +84,8 @@
 	&nbsp;&nbsp;&nbsp;echo $row->name;<br />

 	&nbsp;&nbsp;&nbsp;echo $row->body;<br />

 	}</code>

+	

+	<p>The above <dfn>function</dfn> is an alias of <dfn>result_object()</dfn>.</p>

 

 	<p>If you run queries that might <strong>not</strong> produce a result, you are encouraged to test the result first:</p>

 	

@@ -113,10 +115,6 @@
 	&nbsp;&nbsp;&nbsp;echo $row['name'];<br />

 	&nbsp;&nbsp;&nbsp;echo $row['body'];<br />

 	}</code>

-	

-	<h2>result('array')</h2>

-

-	<p>Identical to <dfn>$this->db->result_array()</dfn>.</p>

 

 

 	<h2>row()</h2>