diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php
index 3cbbbfe..23a6bf7 100644
--- a/system/libraries/Calendar.php
+++ b/system/libraries/Calendar.php
@@ -48,6 +48,7 @@
 	function CI_Calendar()
 	{		
 		$this->CI =& get_instance();
+		
 		if ( ! in_array('calendar_lang'.EXT, $this->CI->lang->is_loaded, TRUE))
 		{
 			$this->CI->lang->load('calendar');
@@ -56,7 +57,6 @@
 		$this->local_time = time();
 		log_message('debug', "Calendar Class Initialized");
 	}
-	// END CI_Calendar()
 	
 	// --------------------------------------------------------------------
 	
@@ -79,7 +79,6 @@
 			}
 		}
 	} 
-	// END initialize()
 	
 	// --------------------------------------------------------------------
 
@@ -241,7 +240,6 @@
 
 		return $out;
     }
-	// END generate()
 	
 	// --------------------------------------------------------------------
 
@@ -275,7 +273,6 @@
 
 		return $this->CI->lang->line($month);
 	}
-	// END get_month_name()
 	
 	// --------------------------------------------------------------------
  
@@ -315,7 +312,6 @@
 	
 		return $days;
 	}
- 	// END get_day_names()
  	
 	// --------------------------------------------------------------------
 
@@ -357,7 +353,6 @@
         
         return $date;
     }
- 	// END adjust_date()
  	
 	// --------------------------------------------------------------------
 
@@ -378,6 +373,7 @@
             return 0;
         }
         
+        // Is the year a leap year?
         if ($month == 2)
         {        
 			if ($year % 400 == 0 OR ($year % 4 == 0 AND $year % 100 != 0))
@@ -388,7 +384,6 @@
     
         return $days_in_month[$month - 1];
     }
-	// END get_total_days()
 	
 	// --------------------------------------------------------------------
 
@@ -426,7 +421,6 @@
 						'table_close' => '</table>'
 					);	
 	}
-	// END default_template()
 	
 	// --------------------------------------------------------------------
 
@@ -465,7 +459,6 @@
 			}
 		} 	
  	}
-	// END parse_template()
 
 }
 
diff --git a/system/libraries/Encrypt.php b/system/libraries/Encrypt.php
index 2a1de6f..50b3fab 100644
--- a/system/libraries/Encrypt.php
+++ b/system/libraries/Encrypt.php
@@ -27,6 +27,7 @@
  * @link		http://www.codeigniter.com/user_guide/libraries/encryption.html
  */
 class CI_Encrypt {
+
 	var $encryption_key	= '';
 	var $_hash_type	= 'sha1';
 	var $_mcrypt_exists = FALSE;
@@ -246,10 +247,9 @@
 	 */
 	function mcrypt_encode($data, $key) 
 	{	
-		$this->_get_mcrypt();
-		$init_size = mcrypt_get_iv_size($this->_mcrypt_cipher, $this->_mcrypt_mode);
+		$init_size = mcrypt_get_iv_size($this->_get_cipher(), $this->_get_mode());
 		$init_vect = mcrypt_create_iv($init_size, MCRYPT_RAND);
-		return mcrypt_encrypt($this->_mcrypt_cipher, $key, $data, $this->_mcrypt_mode, $init_vect);
+		return mcrypt_encrypt($this->_get_cipher(), $key, $data, $this->_get_mode(), $init_vect);
 	}
   	
 	// --------------------------------------------------------------------
@@ -264,10 +264,9 @@
 	 */	
 	function mcrypt_decode($data, $key) 
 	{
-		$this->_get_mcrypt();
-		$init_size = mcrypt_get_iv_size($this->_mcrypt_cipher, $this->_mcrypt_mode);
+		$init_size = mcrypt_get_iv_size($this->_get_cipher(), $this->_get_mode());
 		$init_vect = mcrypt_create_iv($init_size, MCRYPT_RAND);
-		return rtrim(mcrypt_decrypt($this->_mcrypt_cipher, $key, $data, $this->_mcrypt_mode, $init_vect), "\0");
+		return rtrim(mcrypt_decrypt($this->_get_cipher(), $key, $data, $this->_get_mode(), $init_vect), "\0");
 	}
   	
 	// --------------------------------------------------------------------
@@ -301,22 +300,37 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Get Mcrypt value
+	 * Get Mcrypt Cypher Value
 	 *
 	 * @access	private
-	 * @param	string
 	 * @return	string
 	 */	
-	function _get_mcrypt()
+	function _get_cypher()
 	{
 		if ($this->_mcrypt_cipher == '') 
 		{
 			$this->_mcrypt_cipher = MCRYPT_RIJNDAEL_256;
 		}
+
+		return $this->_mcrypt_cipher;
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Get Mcrypt MOde Value
+	 *
+	 * @access	private
+	 * @return	string
+	 */	
+	function _get_mode()
+	{
 		if ($this->_mcrypt_mode == '') 
 		{
 			$this->_mcrypt_mode = MCRYPT_MODE_ECB;
 		}
+		
+		return $this->_mcrypt_mode;
 	}
   	
 	// --------------------------------------------------------------------
diff --git a/system/libraries/Image_lib.php b/system/libraries/Image_lib.php
index 79b2f9c..16583c0 100644
--- a/system/libraries/Image_lib.php
+++ b/system/libraries/Image_lib.php
@@ -148,6 +148,7 @@
 			$this->set_error('imglib_source_image_required');
 			return FALSE;       	
 		}
+		
 		/*
 		 * Is getimagesize() Available?
 		 *
diff --git a/system/libraries/Input.php b/system/libraries/Input.php
index 98c2cbd..0d3c87b 100644
--- a/system/libraries/Input.php
+++ b/system/libraries/Input.php
@@ -179,6 +179,7 @@
 	 *
 	 * @access	public
 	 * @param	string
+	 * @param	bool
 	 * @return	string
 	 */
 	function post($index = '', $xss_clean = FALSE)
@@ -213,6 +214,7 @@
 	 *
 	 * @access	public
 	 * @param	string
+	 * @param	bool
 	 * @return	string
 	 */
 	function cookie($index = '', $xss_clean = FALSE)
@@ -244,6 +246,31 @@
 			return $_COOKIE[$index];
 		}
 	}
+
+	// --------------------------------------------------------------------
+	
+	/**
+	 * Fetch an item from the SERVER array
+	 *
+	 * @access	public
+	 * @param	string
+	 * @param	bool
+	 * @return	string
+	 */
+	function server($index = '', $xss_clean = FALSE)
+	{		
+		if ( ! isset($_SERVER[$index]))
+		{
+			return FALSE;
+		}
+
+		if ($xss_clean === TRUE)
+		{
+			return $this->xss_clean($_SERVER[$index]);
+		}
+		
+		return $_SERVER[$index];
+	}
 	
 	// --------------------------------------------------------------------
 	
@@ -259,15 +286,28 @@
 		{
 			return $this->ip_address;
 		}
-	
-		$cip = (isset($_SERVER['HTTP_CLIENT_IP']) AND $_SERVER['HTTP_CLIENT_IP'] != "") ? $_SERVER['HTTP_CLIENT_IP'] : FALSE;
-		$rip = (isset($_SERVER['REMOTE_ADDR']) AND $_SERVER['REMOTE_ADDR'] != "") ? $_SERVER['REMOTE_ADDR'] : FALSE;
-		$fip = (isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND $_SERVER['HTTP_X_FORWARDED_FOR'] != "") ? $_SERVER['HTTP_X_FORWARDED_FOR'] : FALSE;
-					
-		if ($cip && $rip)	$this->ip_address = $cip;	
-		elseif ($rip)		$this->ip_address = $rip;
-		elseif ($cip)		$this->ip_address = $cip;
-		elseif ($fip)		$this->ip_address = $fip;
+		
+		if ($this->server('REMOTE_ADDR') AND $this->server('HTTP_CLIENT_IP'))
+		{
+			 $this->ip_address = $_SERVER['HTTP_CLIENT_IP'];
+		}
+		elseif ($this->server('REMOTE_ADDR'))
+		{
+			 $this->ip_address = $_SERVER['REMOTE_ADDR'];
+		}
+		elseif ($this->server('HTTP_CLIENT_IP'))
+		{
+			 $this->ip_address = $_SERVER['HTTP_CLIENT_IP'];
+		}
+		elseif ($this->server('HTTP_X_FORWARDED_FOR'))
+		{
+			 $this->ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
+		}
+		
+		if ($this->ip_address === FALSE)
+		{
+			return $this->ip_address = '0.0.0.0';
+		}
 		
 		if (strstr($this->ip_address, ','))
 		{
@@ -279,11 +319,7 @@
 		{
 			$this->ip_address = '0.0.0.0';
 		}
-		
-		unset($cip);
-		unset($rip);
-		unset($fip);
-		
+				
 		return $this->ip_address;
 	}
 	
diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index 90dc0f1..05ee939 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -611,16 +611,7 @@
 		if (substr($class, 0, 3) == 'my_')
 		{
 			$class = preg_replace("/my_(.+)/", "\\1", $class);
-			$extend = TRUE;
-		}
-		else
-		{
-			$extend = FALSE;
-		}
-				
-		// Are we extending one of the base classes?
-		if ($extend == TRUE)
-		{
+
 			// Load the requested library from the main system/libraries folder
 			if (file_exists(BASEPATH.'libraries/'.ucfirst($class).EXT))
 			{
@@ -638,22 +629,20 @@
 			
 			return $this->_ci_init_class($filename, 'MY_', $params);
 		}
-		else
-		{		
-			// Lets search for the requested library file and load it.
-			// For backward compatibility we'll test for filenames that are
-			// both uppercase and lower.
-			foreach (array(ucfirst($class), $class) as $filename)
+
+		// Lets search for the requested library file and load it.
+		// For backward compatibility we'll test for filenames that are
+		// both uppercase and lower.
+		foreach (array(ucfirst($class), $class) as $filename)
+		{
+			for ($i = 1; $i < 3; $i++)
 			{
-				for ($i = 1; $i < 3; $i++)
+				$path = ($i % 2) ? APPPATH : BASEPATH;
+			
+				if (file_exists($path.'libraries/'.$filename.EXT))
 				{
-					$path = ($i % 2) ? APPPATH : BASEPATH;
-				
-					if (file_exists($path.'libraries/'.$filename.EXT))
-					{
-						include_once($path.'libraries/'.$filename.EXT);
-						return $this->_ci_init_class($filename, '', $params);
-					}
+					include_once($path.'libraries/'.$filename.EXT);
+					return $this->_ci_init_class($filename, '', $params);
 				}
 			}
 		}
@@ -686,7 +675,7 @@
 		
 		if ($prefix == '')
 		{
-			$name = ( ! class_exists($class)) ? 'CI_'.$class : $class;
+			$name = (class_exists('CI_'.$class)) ? 'CI_'.$class : $class;
 		}
 		else
 		{
@@ -756,24 +745,28 @@
 		// Load libraries
 		if (isset($autoload['libraries']) AND count($autoload['libraries']) > 0)
 		{
+			// Load the database driver.  
 			if (in_array('database', $autoload['libraries']))
 			{
 				$this->database();
 				$autoload['libraries'] = array_diff($autoload['libraries'], array('database'));
 			}
 
+			// Load the model class.  
 			if (in_array('model', $autoload['libraries']))
 			{
 				$this->model();
 				$autoload['libraries'] = array_diff($autoload['libraries'], array('model'));
 			}
-	
+
+			// Load scaffolding
 			if (in_array('scaffolding', $autoload['libraries']))
 			{
 				$this->scaffolding();
 				$autoload['libraries'] = array_diff($autoload['libraries'], array('scaffolding'));
 			}
 		
+			// Load all other libraries
 			foreach ($autoload['libraries'] as $item)
 			{
 				$this->library($item);
diff --git a/system/libraries/Log.php b/system/libraries/Log.php
index 3927425..eff7cb7 100644
--- a/system/libraries/Log.php
+++ b/system/libraries/Log.php
@@ -61,7 +61,6 @@
 			$this->_date_fmt = $config['log_date_format'];
 		}
 	}
-	// END CI_Log()
 	
 	// --------------------------------------------------------------------
 	
@@ -113,7 +112,7 @@
 		@chmod($filepath, 0666); 		
 		return TRUE;
 	}
-	// END write_log()
+
 }
 // END Log Class
 ?>
\ No newline at end of file
diff --git a/system/libraries/Pagination.php b/system/libraries/Pagination.php
index efbe6c2..b29571e 100644
--- a/system/libraries/Pagination.php
+++ b/system/libraries/Pagination.php
@@ -105,16 +105,21 @@
         {
            return '';
     	}
-    	
+
 		// Calculate the total number of pages
-        $num_pages = intval($this->total_rows / $this->per_page);
+        $num_pages = ceil($this->total_rows / $this->per_page);
+
+    	/*
+			// Calculate the total number of pages
+			$num_pages = intval($this->total_rows / $this->per_page);
+			
+			// Use modulus to see if our division has a remainder. If so, add one to our page number.
+			if ($this->total_rows % $this->per_page) 
+			{
+				$num_pages++;
+			}
+		*/
         
-		// Use modulus to see if our division has a remainder.If so, add one to our page number.
-        if ($this->total_rows % $this->per_page) 
-        {
-            $num_pages++;
-        }
- 
 		// Is there only one page? Hm... nothing more to do here then. 
         if ($num_pages == 1)
         {
diff --git a/system/libraries/Router.php b/system/libraries/Router.php
index 7a4fd38..27e3c27 100644
--- a/system/libraries/Router.php
+++ b/system/libraries/Router.php
@@ -66,7 +66,6 @@
 	 */
 	function _set_route_mapping()
 	{		
-		
 		// Are query strings enabled in the config file?
 		// If so, we're done since segment based URIs are not used with query strings.
 		if ($this->config->item('enable_query_strings') === TRUE AND isset($_GET[$this->config->item('controller_trigger')]))
@@ -120,8 +119,7 @@
 		{
 			$this->uri_string = preg_replace("|".preg_quote($this->config->item('url_suffix'))."$|", "", $this->uri_string);
 		}
-
-
+		
 		// Explode the URI Segments. The individual segments will
 		// be stored in the $this->segments array.	
 		foreach(explode("/", preg_replace("|/*(.+?)/*$|", "\\1", $this->uri_string)) as $val)
diff --git a/system/libraries/Unit.php b/system/libraries/Unit.php
index 6573f42..439424f 100644
--- a/system/libraries/Unit.php
+++ b/system/libraries/Unit.php
@@ -55,7 +55,7 @@
 	function run($test, $expected = TRUE, $test_name = 'undefined')
 	{
 		if ($this->active == FALSE)
-			return;
+			return FALSE;
 			
 		if (in_array($expected, array('is_string', 'is_bool', 'is_true', 'is_false', 'is_int', 'is_numeric', 'is_float', 'is_double', 'is_array', 'is_null'), TRUE))
 		{
diff --git a/system/libraries/Upload.php b/system/libraries/Upload.php
index 13fa8ac..5bb506c 100644
--- a/system/libraries/Upload.php
+++ b/system/libraries/Upload.php
@@ -248,20 +248,20 @@
 	function data()
 	{
 		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,
-					'raw_name'			=> str_replace($this->file_ext, '', $this->file_name),
-					'orig_name'			=> $this->orig_name,
-					'file_ext'			=> $this->file_ext,
-					'file_size'			=> $this->file_size,
-					'is_image'			=> $this->is_image(),
-					'image_width'		=> $this->image_width,
-					'image_height'		=> $this->image_height,
-					'image_type'		=> $this->image_type,
-					'image_size_str'	=> $this->image_size_str,
-				);
+						'file_name'			=> $this->file_name,
+						'file_type'			=> $this->file_type,
+						'file_path'			=> $this->file_path,
+						'full_path'			=> $this->file_path.$this->file_name,
+						'raw_name'			=> str_replace($this->file_ext, '', $this->file_name),
+						'orig_name'			=> $this->orig_name,
+						'file_ext'			=> $this->file_ext,
+						'file_size'			=> $this->file_size,
+						'is_image'			=> $this->is_image(),
+						'image_width'		=> $this->image_width,
+						'image_height'		=> $this->image_height,
+						'image_type'		=> $this->image_type,
+						'image_size_str'	=> $this->image_size_str,
+					);
 	}
 	
 	// --------------------------------------------------------------------
@@ -554,7 +554,7 @@
 	// --------------------------------------------------------------------
 	
 	/**
-	 * VAlidate Upload Path 
+	 * Validate Upload Path 
 	 *
 	 * Verifies that it is a valid upload path with proper permissions.
 	 *
diff --git a/system/libraries/Validation.php b/system/libraries/Validation.php
index 5322be0..07ca35a 100644
--- a/system/libraries/Validation.php
+++ b/system/libraries/Validation.php
@@ -478,7 +478,21 @@
 	{
 		return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
 	}
+
+	// --------------------------------------------------------------------
 	
+	/**
+	 * Validate IP Address
+	 *
+	 * @access	public
+	 * @param	string
+	 * @return	string
+	 */
+	function valid_ip($ip)
+	{
+		return ( ! preg_match( "/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip)) ? FALSE : TRUE;
+	}
+
 	// --------------------------------------------------------------------
 	
 	/**
diff --git a/system/libraries/Zip.php b/system/libraries/Zip.php
index 2183883..e13c713 100644
--- a/system/libraries/Zip.php
+++ b/system/libraries/Zip.php
@@ -41,7 +41,8 @@
 	{
 		log_message('debug', "Zip Compression Class Initialized");
 	}
-	
+
+	// --------------------------------------------------------------------
 
 	/**
 	 * Add Directory