diff --git a/system/db/eloquent.php b/system/db/eloquent.php
index 3e7b012..fce85ea 100644
--- a/system/db/eloquent.php
+++ b/system/db/eloquent.php
@@ -295,31 +295,15 @@ abstract class Eloquent {
 		$model = get_class($this);
 
 		// Since the model was instantiated using "new", a query instance has not been set.
+		// Only models being used for querying have their query instances set by default.
 		$this->query = Query::table(static::table($model));
 
-		// Set the creation and update timestamps.
 		if (property_exists($model, 'timestamps') and $model::$timestamps)
 		{
-			$this->updated_at = date('Y-m-d H:i:s');
-
-			if ( ! $this->exists)
-			{
-				$this->created_at = $this->updated_at;
-			}
-		}
-
-		// If the model already exists in the database, we only need to update it.
-		// Otherwise, we'll insert the model into the database.
-		if ($this->exists)
-		{
-			$result = $this->query->where('id', '=', $this->attributes['id'])->update($this->dirty) == 1;
+			$this->timestamp();
 		}
-		else
-		{
-			$this->attributes['id'] = $this->query->insert_get_id($this->attributes);
 
-			$result = $this->exists = is_numeric($this->id);
-		}		
+		$result = ($this->exists) ? $this->update() : $this->insert();
 
 		$this->dirty = array();
 
@@ -327,6 +311,28 @@ abstract class Eloquent {
 	}
 
 	/**
+	 * Update an existing model in the database.
+	 *
+	 * @return bool
+	 */
+	private function update()
+	{
+		return $this->query->where('id', '=', $this->attributes['id'])->update($this->dirty) == 1;
+	}
+
+	/**
+	 * Insert a new model into the database.
+	 *
+	 * @return bool
+	 */
+	private function insert()
+	{
+		$this->attributes['id'] = $this->query->insert_get_id($this->attributes);
+
+		return $this->exists = is_numeric($this->id);
+	}
+
+	/**
 	 * Delete a model from the database.
 	 *
 	 * @param  int  $id
@@ -343,19 +349,32 @@ abstract class Eloquent {
 	}
 
 	/**
+	 * Set the creation and update timestamps on the model.
+	 *
+	 * @return void
+	 */
+	private function timestamp()
+	{
+		$this->updated_at = date('Y-m-d H:i:s');
+
+		if ( ! $this->exists)
+		{
+			$this->created_at = $this->updated_at;
+		}
+	}
+
+	/**
 	 * Magic method for retrieving model attributes.
 	 */
 	public function __get($key)
 	{
-		// Check the ignored attributes first. These attributes hold all of the
-		// loaded relationships for the model.
+		// The ignored attributes hold all of the loaded relationships for the model.
 		if (array_key_exists($key, $this->ignore))
 		{
 			return $this->ignore[$key];
 		}
 
-		// Is the attribute actually a relationship method? If it is, return the
-		// models for the relationship.
+		// If the attribute is a relationship method, return the related models.
 		if (method_exists($this, $key))
 		{
 			$model = $this->$key();