diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index ff5ffbf..abe3a1c 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -681,17 +681,30 @@
 		// We'll test for both lowercase and capitalized versions of the file name

 		foreach (array(ucfirst($class), strtolower($class)) as $class)

 		{

-			// Is this a class extension request?

-			if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT))

+			$subclass = APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT;

+

+			// Is this a class extension request?			

+			if (file_exists($subclass))

 			{

-				if ( ! file_exists(BASEPATH.'libraries/'.ucfirst($class).EXT))

+				$baseclass = BASEPATH.'libraries/'.ucfirst($class).EXT;

+				

+				if ( ! file_exists($baseclass))

 				{

 					log_message('error', "Unable to load the requested class: ".$class);

 					show_error("Unable to load the requested class: ".$class);

 				}

+

+				// Safety:  Was the class already loaded by a previous call?

+				if (in_array($subclass, $this->_ci_classes))

+				{

+					$is_duplicate = TRUE;

+					log_message('debug', $class." class already loaded. Second attempt ignored.");

+					return;

+				}

 	

-				include(BASEPATH.'libraries/'.ucfirst($class).EXT);

-				include(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT);

+				include($baseclass);				

+				include($subclass);

+				$this->_ci_classes[] = $subclass;

 	

 				return $this->_ci_init_class($class, config_item('subclass_prefix'), $params);			

 			}

@@ -701,24 +714,24 @@
 			for ($i = 1; $i < 3; $i++)

 			{

 				$path = ($i % 2) ? APPPATH : BASEPATH;	

-				$fp = $path.'libraries/'.$class.EXT;

+				$filepath = $path.'libraries/'.$class.EXT;

 				

 				// Does the file exist?  No?  Bummer...

-				if ( ! file_exists($fp))

+				if ( ! file_exists($filepath))

 				{

 					continue;

 				}

 				

 				// Safety:  Was the class already loaded by a previous call?

-				if (in_array($fp, $this->_ci_classes))

+				if (in_array($filepath, $this->_ci_classes))

 				{

 					$is_duplicate = TRUE;

 					log_message('debug', $class." class already loaded. Second attempt ignored.");

 					return;

 				}

 				

-				include($fp);

-				$this->_ci_classes[] = $fp;

+				include($filepath);

+				$this->_ci_classes[] = $filepath;

 				return $this->_ci_init_class($class, '', $params);

 			}

 		} // END FOREACH