diff --git a/system/libraries/Profiler.php b/system/libraries/Profiler.php
index 026bfac..265aaf0 100644
--- a/system/libraries/Profiler.php
+++ b/system/libraries/Profiler.php
@@ -29,6 +29,13 @@
  */
 class CI_Profiler {
 
+	var $obj;
+ 	
+ 	function CI_Profiler()
+ 	{
+ 		$this->obj =& get_instance();
+ 		$this->obj->load->language('profiler');
+ 	}
  	
 	// --------------------------------------------------------------------
 
@@ -45,27 +52,134 @@
 	 */
  	function _compile_benchmarks()
  	{
- 		$obj =& get_instance();
- 	
-  		$times = array();
- 		foreach ($obj->benchmark->marker as $key => $val)
+  		$profile = array();
+ 		foreach ($this->obj->benchmark->marker as $key => $val)
  		{
  			// We match the "end" marker so that the list ends
  			// up in the order that it was defined
  			if (preg_match("/(.+?)_end/i", $key, $match))
  			{ 			
- 				if (isset($obj->benchmark->marker[$match[1].'_end']))
+ 				if (isset($this->obj->benchmark->marker[$match[1].'_end']))
  				{
- 					$times[$match[1]] = $obj->benchmark->elapsed_time($match[1].'_start', $key);
+ 					$profile[$match[1]] = $this->obj->benchmark->elapsed_time($match[1].'_start', $key);
  				}
  			}
  		}
- 	
- 		return $times;
+
+		// Build a table containing the profile data.
+		// Note: At some point we should turn this into a template that can
+		// be modified.  We also might want to make this data available to be logged
+	
+		$output  = "\n\n";
+		$output .= '<fieldset style="border:1px solid #990000;padding:6px 0 10px 10px;margin:0 0 20px 0;background-color:#efefef">';
+		$output .= "\n";
+		$output .= '<legend style="color:#990000;">&nbsp;&nbsp;'.$this->obj->lang->line('profiler_benchmarks').'&nbsp;&nbsp;</legend>';
+		$output .= "\n";			
+		$output .= "\n\n<table cellpadding='4' cellspacing='1' border='0'>\n";
+		
+		foreach ($profile as $key => $val)
+		{
+			$key = ucwords(str_replace(array('_', '-'), ' ', $key));
+			$output .= "<tr><td style='color:#0000;font-weight:bold;'>".$key."&nbsp;&nbsp;</td><td style='color:#990000;font-weight:normal;'>".$val."</td></tr>\n";
+		}
+		
+		$output .= "</table>\n";
+		$output .= "</fieldset>\n\n";
+ 		
+ 		return $output;
  	}
  	
 	// --------------------------------------------------------------------
 
+
+	function _compile_queries()
+	{
+		$output  = "\n\n";
+		$output .= '<fieldset style="border:1px solid #0000FF;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#efefef">';
+		$output .= "\n";
+		$output .= '<legend style="color:#0000FF;">&nbsp;&nbsp;'.$this->obj->lang->line('profiler_queries').'&nbsp;&nbsp;</legend>';
+		$output .= "\n";		
+		
+		if ( ! class_exists('CI_DB_driver'))
+		{
+			$output .= "<div style='color:#0000FF;font-weight:normal;padding:4px 0 0 0;'>".$this->obj->lang->line('profiler_no_db')."</div>";
+		}
+		else
+		{
+			if (count($this->obj->db->queries) == 0)
+			{
+				$output .= "<div style='color:#0000FF;font-weight:normal;padding:4px 0 4px 0;'>".$this->obj->lang->line('profiler_no_queries')."</div>";
+			}
+			else
+			{
+				foreach ($this->obj->db->queries as $val)
+				{
+					$output .= '<div style="padding:0;margin:12px 0 12px 0;background-color:#efefef;color:#000">';
+					$output .= $val;
+					$output .= "</div>\n";
+				}	
+			}
+		}
+		
+		$output .= "</fieldset>\n\n";		
+		
+		return $output;
+	}
+	
+	// --------------------------------------------------------------------
+	
+	function _compile_post()
+	{
+		$output  = "\n\n";
+		$output .= '<fieldset style="border:1px solid #009900;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#efefef">';
+		$output .= "\n";
+		$output .= '<legend style="color:#009900;">&nbsp;&nbsp;'.$this->obj->lang->line('profiler_post_data').'&nbsp;&nbsp;</legend>';
+		$output .= "\n";
+				
+		if (count($_POST) == 0)
+		{
+			$output .= "<div style='color:#009900;font-weight:normal;padding:4px 0 4px 0'>".$this->obj->lang->line('profiler_no_post')."</div>";
+		}
+		else
+		{
+			$output .= "\n\n<table cellpadding='4' cellspacing='1' border='0'>\n";
+		
+			foreach ($_POST as $key => $val)
+			{
+				if ( ! is_numeric($key))
+				{
+					$key = "'".$key."'";
+				}
+			
+				$output .= "<tr><td style='color:#0000;'>&#36;_POST[".$key."]&nbsp;&nbsp;</td><td style='color:#009900;font-weight:normal;'>".htmlspecialchars(stripslashes($val))."</td></tr>\n";
+			}
+			
+			$output .= "</table>\n";
+		}
+		$output .= "</fieldset>\n\n";
+
+		return $output;	
+	}
+	
+	// --------------------------------------------------------------------
+	
+	/**
+	 * Run the Auto-profiler
+	 *
+	 * @access	private
+	 * @return	string
+	 */	
+	function run($output = '')
+	{	
+		$output = '<br style="margin:0;padding:0;clear:both;" />';
+	
+		$output .= $this->_compile_benchmarks();
+		$output .= $this->_compile_post();
+		$output .= $this->_compile_queries();
+		
+		return $output;
+	}
+
 }
 
 // END CI_Profiler class