diff --git a/system/libraries/Model.php b/system/libraries/Model.php
index 240db43..dfb48a5 100644
--- a/system/libraries/Model.php
+++ b/system/libraries/Model.php
@@ -26,6 +26,8 @@
  */
 class Model {
 
+	var $_parent_name = '';
+
 	/**
 	 * Constructor
 	 *
@@ -33,7 +35,17 @@
 	 */
 	function Model()
 	{
-		$this->_assign_libraries();
+		// If the magic __get() method is used in a Model references can't be used.
+		$this->_assign_libraries( (method_exists($this, '__get')) ? FALSE : TRUE );
+		
+		// We don't want to assign the model object to itself when using the
+		// assign_libraries function below so we'll grab the name of the model parent
+		$methods = get_class_methods($this);
+		if (isset($methods[0]))
+		{
+			$this->_parent_name = $methods[0];
+		}
+		
 		log_message('debug', "Model Class Initialized");
 	}
 
@@ -42,17 +54,30 @@
 	 *
 	 * Creates local references to all currently instantiated objects
 	 * so that any syntax that can be legally used in a controller
-	 * can be used within models.
+	 * can be used within models.  
 	 *
 	 * @access private
 	 */	
-	function _assign_libraries()
+	function _assign_libraries($use_reference = TRUE)
 	{
-		$CI =& get_instance();	
-		
+		$CI =& get_instance();				
 		foreach (array_keys(get_object_vars($CI)) as $key)
 		{
-			$this->$key =& $CI->$key;						
+			if ( ! isset($this->$key) AND $key != $this->_parent_name)
+			{
+				// In some cases using references can cause
+				// problems so we'll conditionally use them
+				if ($use_reference == TRUE)
+				{
+					// Needed to prevent reference errors with some configurations
+					$this->$key = '';
+					$this->$key =& $CI->$key;
+				}
+				else
+				{
+					$this->$key = $CI->$key;
+				}
+			}
 		}		
 	}