diff --git a/mail-archive/stats/pom.xml b/mail-archive/stats/pom.xml
index ba14201..736f628 100644
--- a/mail-archive/stats/pom.xml
+++ b/mail-archive/stats/pom.xml
@@ -55,6 +55,9 @@
                         <Sling-Initial-Content>
                             initial-content; uninstall:=true
                         </Sling-Initial-Content>
+                        <Embed-Dependency>
+                            org.apache.felix.utils;inline=org/apache/felix/utils/json/JSONWriter.class
+                        </Embed-Dependency>
                     </instructions>
                 </configuration>
             </plugin>
@@ -63,6 +66,12 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.utils</artifactId>
+            <version>1.9.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
         </dependency>
@@ -115,11 +124,6 @@
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.commons.json</artifactId>
-            <version>2.0.6</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.mailarchive.server</artifactId>
             <version>0.1.0-SNAPSHOT</version>
             <scope>provided</scope>
diff --git a/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/StatsDataServlet.java b/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/StatsDataServlet.java
index 5686dad..cd754bc 100644
--- a/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/StatsDataServlet.java
+++ b/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/StatsDataServlet.java
@@ -27,13 +27,12 @@
 import javax.servlet.ServletException;
 
 import org.apache.felix.scr.annotations.sling.SlingServlet;
+import org.apache.felix.utils.json.JSONWriter;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.io.JSONWriter;
 
 @SuppressWarnings("serial")
 @SlingServlet(
@@ -85,7 +84,6 @@
             // from those that have the stats data resource type
             {
                 final JSONWriter w = new JSONWriter(response.getWriter());
-                w.setTidy(true);
                 out.write("var statsData = ");
                 w.array();
                 dumpStatsData(request.getResource(), w, layers);
@@ -97,7 +95,6 @@
             // Output the layers array in JSON
             {
                 final JSONWriter w = new JSONWriter(response.getWriter());
-                w.setTidy(true);
                 out.write("var layers = ");
                 w.array();
                 for(String layer : layers) {
@@ -107,7 +104,7 @@
                 out.write(";");
             }
             
-        } catch(JSONException je) {
+        } catch(IOException je) {
             throw new ServletException("JSONException in doGet", je);
         }
     }
@@ -115,7 +112,7 @@
     /** Dump stats data to w if r is a stats data resource,
      *  and recurse into children
      */
-    private void dumpStatsData(Resource r, JSONWriter w, Set<String> layers) throws JSONException {
+    private void dumpStatsData(Resource r, JSONWriter w, Set<String> layers) throws IOException {
         if(MailStatsProcessorImpl.DATA_RESOURCE_TYPE.equals(r.getResourceType())) {
             final ValueMap m = r.adaptTo(ValueMap.class);
             if(m != null) {
