diff --git a/pom.xml b/pom.xml
index 1ecbead..f1eb0d2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,18 +62,15 @@
                     <instructions>
                         <!-- As we're using JCR 2.0 for testing we explicitly have to
                              import version 1.0 here
-                             We need at least 3.1.2 as this allows reading comments from a config
                          -->
                         <Import-Package>
                             javax.jcr.*;version=1.0,
-                            org.apache.sling.installer.api;version="[3.1.2,4)",
                             *
                         </Import-Package>
                         <Private-Package>org.apache.sling.installer.provider.jcr.impl.*</Private-Package>
                         <Sling-Nodetypes>SLING-INF/nodetypes/osgiconfig.cnd</Sling-Nodetypes>
                         <Sling-Namespaces>sling=http://sling.apache.org/jcr/sling/1.0</Sling-Namespaces>
                         <Embed-Dependency>
-                            org.apache.felix.configadmin;inline="org/apache/felix/cm/file/ConfigurationHandler.*",
                             org.apache.sling.commons.osgi;inline="org/apache/sling/commons/osgi/PropertiesUtil.*"
                         </Embed-Dependency>
                     </instructions>
@@ -93,19 +90,12 @@
             <version>1.0.0</version>
             <scope>provided</scope>
         </dependency>
-        <!-- We use a class from the config admin implementation to write config files -->
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.configadmin</artifactId>
-            <version>1.8.6</version>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <!-- this version must embed the same version of org.apache.felix.configadmin as this pom.xml to be able to read
             the .config files being generated by the write back feature -->
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.installer.core</artifactId>
-            <version>3.6.6</version> 
+            <version>3.9.1-SNAPSHOT</version> 
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/installer/provider/jcr/impl/JcrInstaller.java b/src/main/java/org/apache/sling/installer/provider/jcr/impl/JcrInstaller.java
index aa19d2e..f16c567 100644
--- a/src/main/java/org/apache/sling/installer/provider/jcr/impl/JcrInstaller.java
+++ b/src/main/java/org/apache/sling/installer/provider/jcr/impl/JcrInstaller.java
@@ -52,6 +52,8 @@
 import org.apache.sling.installer.api.OsgiInstaller;
 import org.apache.sling.installer.api.UpdateHandler;
 import org.apache.sling.installer.api.UpdateResult;
+import org.apache.sling.installer.api.serializer.ConfigurationSerializer;
+import org.apache.sling.installer.api.serializer.ConfigurationSerializerFactory;
 import org.apache.sling.jcr.api.SlingRepository;
 import org.apache.sling.serviceusermapping.ServiceUserMapped;
 import org.apache.sling.settings.SlingSettingsService;
@@ -775,9 +777,10 @@
             }
 
             // write to a byte array stream
-            final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
             baos.write("# Configuration created by Apache Sling JCR Installer\n".getBytes("UTF-8"));
-            ConfigurationHandler.write(baos, dict);
+            ConfigurationSerializer serializer = ConfigurationSerializerFactory.create(ConfigurationSerializerFactory.Format.JSON);
+            serializer.serialize(dict, baos);
             baos.close();
 
             // get or create file node
