diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs
index 45b45b23fa..483f8b6c30 100644
--- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs
+++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs
@@ -37,6 +37,7 @@ using log4net.Appender;
 using log4net.Core;
 using log4net.Repository;
 using OpenSim.Framework.Console;
+using OpenSim.Framework.Servers;
 using OpenSim.Framework.Statistics;
 using Timer=System.Timers.Timer;
 
@@ -458,9 +459,9 @@ namespace OpenSim.Framework.Servers
             }
         }
 
-        public string StatReport()
+        public string StatReport(OSHttpRequest httpRequest)
         {
-            return m_stats.XReport();
+            return m_stats.XReport((DateTime.Now - m_startuptime).ToString() , m_version );
         }
             
         protected void RemovePIDFile()
diff --git a/OpenSim/Framework/Statistics/BaseStatsCollector.cs b/OpenSim/Framework/Statistics/BaseStatsCollector.cs
index ca0907df29..38e2dd5981 100644
--- a/OpenSim/Framework/Statistics/BaseStatsCollector.cs
+++ b/OpenSim/Framework/Statistics/BaseStatsCollector.cs
@@ -52,7 +52,7 @@ namespace OpenSim.Framework.Statistics
             return sb.ToString();
         }
         
-        public virtual string XReport()
+        public virtual string XReport(string uptime, string version)
         {
             return (string) Math.Round(GC.GetTotalMemory(false) / 1024.0 / 1024.0).ToString() ;
         }
diff --git a/OpenSim/Framework/Statistics/Interfaces/IStatsCollector.cs b/OpenSim/Framework/Statistics/Interfaces/IStatsCollector.cs
index ac8133d755..c1a8f73cf1 100644
--- a/OpenSim/Framework/Statistics/Interfaces/IStatsCollector.cs
+++ b/OpenSim/Framework/Statistics/Interfaces/IStatsCollector.cs
@@ -44,6 +44,6 @@ namespace OpenSim.Framework.Statistics
         /// 
         /// A 
         /// 
-        string XReport();
+        string XReport(string uptime, string version);
     }
 }
diff --git a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
index bab2764829..75cc23c856 100644
--- a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
+++ b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
@@ -384,12 +384,12 @@ Asset service request failures: {3}" + Environment.NewLine,
         }
 
         /// 
-        /// Report back collected statistical information.
+        /// Report back collected statistical information as json serialization.
         /// 
         /// 
-        public override string XReport()
+        public override string XReport(string uptime, string version)
         {
-            OSDMap args = new OSDMap(28);
+            OSDMap args = new OSDMap(30);
             args["AssetsInCache"] = OSD.FromReal(AssetsInCache);
             args["TimeAfterCacheMiss"] = OSD.FromReal(assetRequestTimeAfterCacheMiss.Milliseconds / 1000.0);
             args["BlockedMissingTextureRequests"] = OSD.FromReal(BlockedMissingTextureRequests);
@@ -417,14 +417,12 @@ Asset service request failures: {3}" + Environment.NewLine,
             args["OthrFt"] = OSD.FromReal(otherFrameTime);
             args["AgntFt"] = OSD.FromReal(agentFrameTime);
             args["ImgsFt"] = OSD.FromReal(imageFrameTime);
-            args["Memory"] = OSD.FromString(base.XReport());
+            args["Memory"] = OSD.FromString(base.XReport(uptime, version));
+            args["Uptime"] = OSD.FromString(uptime);
+            args["Version"] = OSD.FromString(version);
             
             string strBuffer = "";
-            // byte[] buffer = new byte[1];
-            
             strBuffer = OSDParser.SerializeJsonString(args);
-            // UTF8Encoding str = new UTF8Encoding();
-            // buffer = str.GetBytes(strBuffer);
 
             return strBuffer;
         }
@@ -451,7 +449,7 @@ Asset service request failures: {3}" + Environment.NewLine,
             return m_statsProvider.GetStats();
         }
         
-        public string XReport()
+        public string XReport(string uptime, string version)
         {
             return "";
         }
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index b28e88099a..286c5a1ace 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -810,13 +810,12 @@ namespace OpenSim
         /// 
         /// Handler to supply the current extended status of this sim 
         /// 
-        /// Currently prints the same a "show stats" plus the uptime of the sim
+        /// Sends the statistical data in a json serialization
         public class XSimStatusHandler : IStreamedRequestHandler
         {
             OpenSimBase m_opensim;
         
             public XSimStatusHandler(OpenSimBase sim)
-            // public XSimStatusHandler(BaseOpenSimServer sim)
             {
                 m_opensim = sim;
             }
@@ -824,7 +823,7 @@ namespace OpenSim
             public byte[] Handle(string path, Stream request,
                                  OSHttpRequest httpRequest, OSHttpResponse httpResponse)
             {
-                return Encoding.UTF8.GetBytes(m_opensim.StatReport());
+                return Encoding.UTF8.GetBytes(m_opensim.StatReport(httpRequest));
             }
 
             public string ContentType
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 40f25aeec9..48612ab041 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -10312,7 +10312,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
             return handler.PacketQueue.GetStats();
         }
         
-        public string XReport() 
+        public string XReport(string uptime, string version) 
         {
             return  "";
         }