diff --git a/system/libraries/Upload.php b/system/libraries/Upload.php
index 1a0b0fc..ff0fb1c 100644
--- a/system/libraries/Upload.php
+++ b/system/libraries/Upload.php
@@ -36,7 +36,7 @@
 	var $file_type		= "";
 	var $file_size		= "";
 	var $file_ext		= "";
-	var $file_path		= "";
+	var $upload_path	= "";
 	var $overwrite		= FALSE;
 	var $encrypt_name	= FALSE;
 	var $is_image		= FALSE;
@@ -76,17 +76,51 @@
 	 */	
 	function initialize($config = array())
 	{
-		foreach ($config as $key => $val)
+		$defaults = array(
+							'max_size'			=> 0,
+							'max_width'			=> 0,
+							'max_height'		=> 0,
+							'allowed_types'		=> "",
+							'file_temp'			=> "",
+							'file_name'			=> "",
+							'orig_name'			=> "",
+							'file_type'			=> "",
+							'file_size'			=> "",
+							'file_ext'			=> "",
+							'upload_path'		=> "",
+							'overwrite'			=> FALSE,
+							'encrypt_name'		=> FALSE,
+							'is_image'			=> FALSE,
+							'image_width'		=> '',
+							'image_height'		=> '',
+							'image_type'		=> '',
+							'image_size_str'	=> '',
+							'error_msg'			=> array(),
+							'mimes'				=> array(),
+							'remove_spaces'		=> TRUE,
+							'xss_clean'			=> FALSE,
+							'temp_prefix'		=> "temp_file_"
+						);	
+	
+	
+		foreach ($defaults as $key => $val)
 		{
-			$method = 'set_'.$key;
-			if (method_exists($this, $method))
+			if (isset($config[$key]))
 			{
-				$this->$method($val);
+				$method = 'set_'.$key;
+				if (method_exists($this, $method))
+				{
+					$this->$method($config[$key]);
+				}
+				else
+				{
+					$this->$key = $config[$key];
+				}			
 			}
 			else
 			{
 				$this->$key = $val;
-			}			
+			}
 		}
 	}
 	
@@ -188,7 +222,7 @@
 
 		if ($this->overwrite == FALSE)
 		{
-			$this->file_name = $this->set_filename($this->file_path, $this->file_name);
+			$this->file_name = $this->set_filename($this->upload_path, $this->file_name);
 			
 			if ($this->file_name === FALSE)
 			{
@@ -203,9 +237,9 @@
 		 * we'll use move_uploaded_file().  One of the two should
 		 * reliably work in most environments
 		 */
-		if ( ! @copy($this->file_temp, $this->file_path.$this->file_name))
+		if ( ! @copy($this->file_temp, $this->upload_path.$this->file_name))
 		{
-			if ( ! @move_uploaded_file($this->file_temp, $this->file_path.$this->file_name))
+			if ( ! @move_uploaded_file($this->file_temp, $this->upload_path.$this->file_name))
 			{
 				 $this->set_error('upload_destination_error');
 				 return FALSE;
@@ -229,7 +263,7 @@
 		 * file was an image).  We use this information
 		 * in the "data" function.
 		 */
-		$this->set_image_properties($this->file_path.$this->file_name);
+		$this->set_image_properties($this->upload_path.$this->file_name);
 
 		return TRUE;
 	}
@@ -250,8 +284,8 @@
 		return array (
 						'file_name'			=> $this->file_name,
 						'file_type'			=> $this->file_type,
-						'file_path'			=> $this->file_path,
-						'full_path'			=> $this->file_path.$this->file_name,
+						'file_path'			=> $this->upload_path,
+						'full_path'			=> $this->upload_path.$this->file_name,
 						'raw_name'			=> str_replace($this->file_ext, '', $this->file_name),
 						'orig_name'			=> $this->orig_name,
 						'file_ext'			=> $this->file_ext,
@@ -275,7 +309,7 @@
 	 */	
 	function set_upload_path($path)
 	{
-		$this->file_path = $path;
+		$this->upload_path = $path;
 	}
 	
 	// --------------------------------------------------------------------
@@ -564,30 +598,30 @@
 	 */	
 	function validate_upload_path()
 	{
-		if ($this->file_path == '')
+		if ($this->upload_path == '')
 		{
 			$this->set_error('upload_no_filepath');
 			return FALSE;
 		}
 		
-		if (function_exists('realpath') AND @realpath($this->file_path) !== FALSE)
+		if (function_exists('realpath') AND @realpath($this->upload_path) !== FALSE)
 		{
-			$this->file_path = str_replace("\\", "/", realpath($this->file_path));
+			$this->upload_path = str_replace("\\", "/", realpath($this->upload_path));
 		}
 
-		if ( ! @is_dir($this->file_path))
+		if ( ! @is_dir($this->upload_path))
 		{
 			$this->set_error('upload_no_filepath');
 			return FALSE;
 		}
 
-		if ( ! is_writable($this->file_path))
+		if ( ! is_writable($this->upload_path))
 		{
 			$this->set_error('upload_not_writable');
 			return FALSE;
 		}
 
-		$this->file_path = preg_replace("/(.+?)\/*$/", "\\1/",  $this->file_path);
+		$this->upload_path = preg_replace("/(.+?)\/*$/", "\\1/",  $this->upload_path);
 		return TRUE;
 	}
 	
@@ -668,7 +702,7 @@
 	 */	
 	function do_xss_clean()
 	{		
-		$file = $this->file_path.$this->file_name;
+		$file = $this->upload_path.$this->file_name;
 		
 		if (filesize($file) == 0)
 		{