diff --git a/system/codeigniter/Common.php b/system/codeigniter/Common.php
index 07b468f..a82d486 100644
--- a/system/codeigniter/Common.php
+++ b/system/codeigniter/Common.php
@@ -50,57 +50,27 @@
 	{
 		return $objects[$class];
 	}
-	
-	// This is a special case.  It's a class in the Base5.php file
-	// which we don't need to load.  We only instantiate it.
-	if ($class == 'Instance')
-	{
-		$objects[$class] =& new $class();
-		return $objects[$class];
-	}
-		
+			
 	// If the requested class does not exist in the application/libraries
-	// folder we'll load the native class from the system/libraries folder.
-	
-	$is_subclass = FALSE;	
-	if ( ! file_exists(APPPATH.'libraries/'.$class.EXT))
+	// folder we'll load the native class from the system/libraries folder.	
+	if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT))
 	{
-		require(BASEPATH.'libraries/'.$class.EXT);		
+		require(BASEPATH.'libraries/'.$class.EXT);	
+		require(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT);
+		$is_subclass = TRUE;	
 	}
 	else
 	{
-		// A core class can either be extended or replaced by putting an
-		// 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 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.
-		
-		// Note: I'm not thrilled with this approach since it requires us to
-		// read the top part of the file (I set a character limit of 5000 bytes,
-		// which correlates to roughly the first 100 lines of code), but
-		// I can't think of a better way to allow classes to be extended or
-		// 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 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."/i", fread($fp, '6000')))
+		if (file_exists(APPPATH.'libraries/'.$class.EXT))
 		{
-			require(BASEPATH.'libraries/'.$class.EXT);	
-			require(APPPATH.'libraries/'.$class.EXT);
-			$is_subclass = TRUE;
+			require(APPPATH.'libraries/'.$class.EXT);	
+			$is_subclass = FALSE;	
 		}
 		else
 		{
-			require(APPPATH.'libraries/'.$class.EXT);
+			require(BASEPATH.'libraries/'.$class.EXT);
+			$is_subclass = FALSE;
 		}
-		fclose($fp);	
 	}
 
 	if ($instantiate == FALSE)
@@ -111,7 +81,7 @@
 		
 	if ($is_subclass == TRUE)
 	{
-		$name = 'MY_'.$class;
+		$name = config_item('subclass_prefix').$class;
 		$objects[$class] =& new $name();
 		return $objects[$class];
 	}
@@ -151,6 +121,30 @@
 	return $main_conf[0];
 }
 
+/**
+* Gets a config item
+*
+* @access	public
+* @return	mixed
+*/
+function &config_item($item)
+{
+	static $config_item = array();
+
+	if ( ! isset($config_item[$item]))
+	{
+		$config =& get_config();
+		
+		if ( ! isset($config[$item]))
+		{
+			return FALSE;
+		}
+		$config_item[$item] = $config[$item];
+	}
+
+	return $config_item[$item];
+}
+
 
 /**
 * Error Handler