diff --git a/pom.xml b/pom.xml
index 899c68c..d6089a5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,6 +48,13 @@
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Embed-Dependency>
+                            org.apache.felix.utils;inline=org/apache/felix/utils/json/JSONWriter.class
+                        </Embed-Dependency>
+                    </instructions>
+                </configuration>
            </plugin>
         </plugins>
     </build>
@@ -55,6 +62,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.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.annotations</artifactId>
         </dependency>
         <dependency>
@@ -86,11 +99,5 @@
             <version>2.4</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.commons.json</artifactId>
-            <version>2.0.6</version>
-            <scope>provided</scope>
-        </dependency>
     </dependencies>
 </project>
diff --git a/src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java b/src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java
index f19cdf7..a2c6454 100644
--- a/src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java
+++ b/src/main/java/org/apache/sling/tooling/support/source/impl/SourceReferencesServlet.java
@@ -37,8 +37,7 @@
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.io.JSONWriter;
+import org.apache.felix.utils.json.JSONWriter;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.wiring.BundleRevision;
@@ -141,12 +140,12 @@
             }
             
             w.endArray();
-        } catch (JSONException e) {
+        } catch (IOException e) {
             throw new ServletException(e);
         }
     }
 
-    private void collectMavenSourceReferences(JSONWriter w, Bundle bundle) throws IOException, JSONException {
+    private void collectMavenSourceReferences(JSONWriter w, Bundle bundle) throws IOException {
         
         Enumeration<?> entries = bundle.findEntries("/META-INF/maven", "pom.properties", true);
         
@@ -162,7 +161,7 @@
         }
     }
     
-    private void writeMavenGav(JSONWriter w, String groupId, String artifactId, String version) throws JSONException {
+    private void writeMavenGav(JSONWriter w, String groupId, String artifactId, String version) throws IOException {
         
         w.object();
         w.key(KEY_TYPE).value(VALUE_TYPE_MAVEN);
@@ -172,7 +171,7 @@
         w.endObject();
     }
     
-    private void writeMavenGav(JSONWriter w, InputStream in) throws IOException, JSONException {
+    private void writeMavenGav(JSONWriter w, InputStream in) throws IOException {
         
         Properties p = new Properties();
         p.load(in);
@@ -203,7 +202,7 @@
         return embeddedJars;
     }
     
-    private void collectMavenSourceRerefences(JSONWriter w, URL entry) throws IOException, JSONException {
+    private void collectMavenSourceRerefences(JSONWriter w, URL entry) throws IOException {
         
         InputStream wrappedIn = entry.openStream();
         try {
