diff --git a/system/database/DB_utility.php b/system/database/DB_utility.php
index 2748a44..e239d75 100644
--- a/system/database/DB_utility.php
+++ b/system/database/DB_utility.php
@@ -460,10 +460,9 @@
 								return TRUE;
 					break;
 				default		:
-								require BASEPATH.'libraries/Zip.php';
-								$zip = new Zip;
-								$zip->add_file($this->_backup($prefs), $prefs['filename'].'.sql');
-								write_file($path, $zip->output_zipfile());
+								$obj->load->library('zip');
+								$obj->zip->add_data($prefs['filename'].'.sql', $this->_backup($prefs));
+								$obj->zip->archive($path);
 								return TRUE;
 					break;			
 			}
@@ -472,65 +471,59 @@
 
 		// ------------------------------------------------------
 				
-		// Set the mime type used in the server header
-		switch ($prefs['format'])
-		{
-			case 'zip'  : $mime = 'application/x-zip';	
-				break;
-			case 'gzip' : $mime = 'application/x-gzip';
-				break;
-			default     :						
-						if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE") || strstr($_SERVER['HTTP_USER_AGENT'], "OPERA")) 
-						{
-							$mime = 'application/octetstream';
-						}
-						else
-						{
-							$mime = 'application/octet-stream';
-						}
-				break;
-		}	
 		
 		// Grab the super object
 		$obj =& get_instance();
 		
 		// Remap the file extensions
 		$ext = array('gzip' => 'gz', 'zip' => 'zip', 'txt' => 'sql');	
+				
+		// Is a Zip file requested?	
+		if ($prefs['format'] == 'zip')
+		{
+			$obj->load->library('zip');
+			$obj->zip->add_data($prefs['filename'].'.sql', $this->_backup($prefs));
+			$obj->zip->download($prefs['filename'].'.'.$ext[$prefs['format']]);
+			return TRUE;
+		}
+		
+		
+		// Set the mime type
+		switch ($prefs['format'])
+		{
+			case 'gzip' : $mime = 'application/x-gzip';
+				break;
+			default     : $mime = (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE") || strstr($_SERVER['HTTP_USER_AGENT'], "OPERA")) ? 'application/octetstream' : 'application/octet-stream';
+				break;
+		}	
 	
-		// Send headers
+		$filename = $prefs['filename'].'.sql.'.$ext[$prefs['format']];
+	
 		if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))
 		{
-			$obj->output->set_header('Content-Type: '.$mime);
-			$obj->output->set_header('Content-Disposition: inline; filename="'.$prefs['filename'].'.'.$ext[$prefs['format']].'"');
-			$obj->output->set_header('Content-Transfer-Encoding: binary');
-			$obj->output->set_header('Expires: 0');
-			$obj->output->set_header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
-			$obj->output->set_header('Pragma: public');
+			header('Content-Type: '.$mime);
+			header('Content-Disposition: inline; filename="'.$filename.'"');
+			header('Expires: 0');
+			header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+			header("Content-Transfer-Encoding: binary");
+			header('Pragma: public');
 		} 
 		else 
 		{
-			$obj->output->set_header('Content-Type: '.$mime);
-			$obj->output->set_header('Content-Disposition: attachment; filename="'.$prefs['filename'].'.'.$ext[$prefs['format']].'"');
-			$obj->output->set_header('Content-Transfer-Encoding: binary');
-			$obj->output->set_header('Expires: 0');
-			$obj->output->set_header('Pragma: no-cache');
+			header('Content-Type: '.$mime);
+			header('Content-Disposition: attachment; filename="'.$filename.'"');
+			header("Content-Transfer-Encoding: binary");
+			header('Expires: 0');
+			header('Pragma: no-cache');
 		}
 
-
 		// Write the file based on type
 		switch ($prefs['format'])
 		{
-			case 'gzip' : 	$obj->output->set_output(gzencode($this->_backup($prefs)));
+			case 'gzip' : 	echo gzencode($this->_backup($prefs));
 				break;
-			case 'txt'	: 	$obj->output->set_output($this->_backup($prefs));
+			case 'txt'	: 	echo $this->_backup($prefs);
 				break;
-			default		:
-							require BASEPATH.'libraries/Zip.php';
-						
-							$zip = new Zip;
-							$zip->add_file($this->_backup($prefs), $prefs['filename'].'.sql');
-							$obj->output->set_output($zip->output_zipfile());
-				break;			
 		}
 
 		return TRUE;
diff --git a/system/libraries/Zip.php b/system/libraries/Zip.php
index a116999..2183883 100644
--- a/system/libraries/Zip.php
+++ b/system/libraries/Zip.php
@@ -227,7 +227,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Write File
+	 * Write File to the specified direcotry
 	 *
 	 * Lets you write a file
 	 *
@@ -236,9 +236,9 @@
 	 * @param	string	the data to be encoded
 	 * @return	bool
 	 */	
-	function write_zip($filepath)
+	function archive($filepath)
 	{
-		if ( ! ($fp = fopen($filepath, "wb")))
+		if ( ! ($fp = @fopen($filepath, "wb")))
 		{
 			return FALSE;
 		}
diff --git a/user_guide/database/utilities.html b/user_guide/database/utilities.html
index 3efa04f..cbd8be7 100644
--- a/user_guide/database/utilities.html
+++ b/user_guide/database/utilities.html
@@ -274,12 +274,6 @@
 </code>

 

 

-<p class="important"><strong>VERY IMPORTANT:</strong> If you are using the <dfn>download</dfn> action to send the file to your desktop,

-DO NOT display any data in the controller in which you are triggering the backup.  Since Code Igniter buffers all output, any data

-sent to the browser will be included in your export file.  This issue ONLY applies to downloads.  If you are using any other action

-you can display data in your controller.</p>

-

-

 <h3>Description of Backup Preferences</h3>

 

 <table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">

diff --git a/user_guide/general/changelog.html b/user_guide/general/changelog.html
index aab14d5..3f991e0 100644
--- a/user_guide/general/changelog.html
+++ b/user_guide/general/changelog.html
@@ -78,6 +78,7 @@
 <li>Added $query->field_names() function</li>

 <li>Added $this->db->platform() function</li>

 <li>Added "is_numeric" to validation</li>

+<li>Added two more protocols to the URI handler to make it more reliable when the $config['uri_protocol'] item is set to AUTO.</li>

 

 <li><strong>Deprecated "init" folder</strong>.  Initialization happens automatically now.  <a href="creating_libraries.html">Please see documentation</a>.</li>

 <li><strong>Deprecated</strong> $this->db->field_names()  USE  $this->db->list_fields()</li>