diff --git a/pom.xml b/pom.xml
index 3d64677..ecd8a97 100644
--- a/pom.xml
+++ b/pom.xml
@@ -164,6 +164,12 @@
     <!-- Apache Sling -->
     <dependency>
       <groupId>org.apache.sling</groupId>
+      <artifactId>org.apache.sling.api</artifactId>
+      <version>2.16.2</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.sling</groupId>
       <artifactId>org.apache.sling.commons.threads</artifactId>
       <version>3.2.0</version>
       <scope>provided</scope>
@@ -199,6 +205,12 @@
     </dependency>
     <dependency>
       <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.service.cm</artifactId>
+      <version>1.5.0</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.osgi</groupId>
       <artifactId>org.osgi.service.component</artifactId>
       <version>1.3.0</version>
       <scope>provided</scope>
@@ -207,7 +219,7 @@
       <groupId>org.osgi</groupId>
       <artifactId>org.osgi.service.event</artifactId>
       <version>1.3.1</version>
-      <scope>provided</scope>
+      <scope>test</scope>
     </dependency>
     <!-- logging -->
     <dependency>
@@ -249,56 +261,6 @@
       <version>${org.ops4j.pax.exam.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-all</artifactId>
-      <version>1.10.19</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-simple</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>org.osgi.service.cm</artifactId>
-      <version>1.5.0</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.sling</groupId>
-      <artifactId>org.apache.sling.jcr.resource</artifactId>
-      <version>2.9.0</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.sling</groupId>
-      <artifactId>org.apache.sling.resourceresolver</artifactId>
-      <version>1.5.6</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.sling</groupId>
-      <artifactId>org.apache.sling.api</artifactId>
-      <version>2.16.2</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpcore-osgi</artifactId>
-      <version>4.4.5</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient-osgi</artifactId>
-      <version>4.5.2</version>
-      <scope>test</scope>
-    </dependency>
-
   </dependencies>
 
 </project>
diff --git a/src/test/java/org/apache/sling/jcr/oak/server/it/OakServerTestSupport.java b/src/test/java/org/apache/sling/jcr/oak/server/it/OakServerTestSupport.java
index 53aa268..e9d5496 100644
--- a/src/test/java/org/apache/sling/jcr/oak/server/it/OakServerTestSupport.java
+++ b/src/test/java/org/apache/sling/jcr/oak/server/it/OakServerTestSupport.java
@@ -18,18 +18,6 @@
  */
 package org.apache.sling.jcr.oak.server.it;
 
-import static org.apache.sling.testing.paxexam.SlingOptions.jackrabbitSling;
-import static org.apache.sling.testing.paxexam.SlingOptions.scr;
-import static org.apache.sling.testing.paxexam.SlingOptions.slingJcr;
-import static org.apache.sling.testing.paxexam.SlingOptions.tikaSling;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.ops4j.pax.exam.CoreOptions.composite;
-import static org.ops4j.pax.exam.CoreOptions.junitBundles;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.factoryConfiguration;
-import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
-
 import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -46,13 +34,24 @@
 import org.apache.jackrabbit.commons.JcrUtils;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.jcr.api.SlingRepository;
-import org.apache.sling.testing.paxexam.SlingOptions;
 import org.apache.sling.testing.paxexam.TestSupport;
 import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.util.PathUtils;
 import org.osgi.framework.BundleContext;
 
+import static org.apache.sling.testing.paxexam.SlingOptions.scr;
+import static org.apache.sling.testing.paxexam.SlingOptions.slingJcr;
+import static org.apache.sling.testing.paxexam.SlingOptions.slingJcrRepoinit;
+import static org.apache.sling.testing.paxexam.SlingOptions.versionResolver;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.factoryConfiguration;
+import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
+
 public abstract class OakServerTestSupport extends TestSupport {
 
     @Inject
@@ -162,53 +161,23 @@
     }
 
     protected Option launchpad() {
-        SlingOptions.versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.jcr.base");
-        SlingOptions.versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.jcr.resource");
-        SlingOptions.versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.resourceresolver");
-        SlingOptions.versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.api");
-        SlingOptions.versionResolver.setVersionFromProject("org.apache.jackrabbit", "oak-core");
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "oak-commons", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "oak-core"));
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "oak-blob", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "oak-core"));
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "oak-jcr", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "oak-core"));
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "oak-segment", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "oak-core"));
-        SlingOptions.versionResolver.setVersionFromProject("org.apache.jackrabbit", "jackrabbit-api");
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "jackrabbit-data", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "jackrabbit-api"));
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "jackrabbit-jcr-commons", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "jackrabbit-api"));
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "jackrabbit-jcr-rmi", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "jackrabbit-api"));
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "jackrabbit-spi", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "jackrabbit-api"));
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "jackrabbit-spi-commons", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "jackrabbit-api"));
-        SlingOptions.versionResolver.setVersion("org.apache.jackrabbit", "jackrabbit-webdav", SlingOptions.versionResolver.getVersion("org.apache.jackrabbit", "jackrabbit-api"));
-        SlingOptions.versionResolver.setVersion("org.apache.felix", "org.apache.felix.http.jetty", "3.1.6"); // SLING-6080 – Java 7
-        SlingOptions.versionResolver.setVersion("org.apache.felix", "org.apache.felix.http.whiteboard", "2.3.2"); // SLING-6080 – Java 7
+        versionResolver.setVersion("org.apache.felix", "org.apache.felix.http.jetty", "3.1.6"); // SLING-6080 – Java 7
+        versionResolver.setVersion("org.apache.felix", "org.apache.felix.http.whiteboard", "2.3.2"); // SLING-6080 – Java 7
         final String repoinit = String.format("raw:file:%s/src/test/resources/repoinit.txt", PathUtils.getBaseDir());
         final String slingHome = String.format("%s/sling", workingDirectory());
         final String repositoryHome = String.format("%s/repository", slingHome);
+        final String localIndexDir = String.format("%s/index", repositoryHome);
         return composite(
             scr(),
             slingJcr(),
-            jackrabbitSling(),
-            tikaSling(),
-
-            mavenBundle().groupId("org.apache.httpcomponents").artifactId("httpcore-osgi").versionAsInProject(),
-            mavenBundle().groupId("org.apache.httpcomponents").artifactId("httpclient-osgi").versionAsInProject(),
-
-            mavenBundle().groupId("org.apache.jackrabbit").artifactId("oak-core").version(SlingOptions.versionResolver),
-            mavenBundle().groupId("org.apache.jackrabbit").artifactId("oak-commons").version(SlingOptions.versionResolver),
-            mavenBundle().groupId("org.apache.jackrabbit").artifactId("oak-blob").version(SlingOptions.versionResolver),
-            mavenBundle().groupId("org.apache.jackrabbit").artifactId("oak-jcr").version(SlingOptions.versionResolver),
-            mavenBundle().groupId("com.google.guava").artifactId("guava").version(SlingOptions.versionResolver),
-            mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.jaas").version(SlingOptions.versionResolver),
-            mavenBundle().groupId("org.apache.jackrabbit").artifactId("oak-segment").version(SlingOptions.versionResolver),
-            // repoinit (temp)
-            mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.jcr.repoinit").version("1.1.0"),
-            mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.repoinit.parser").version("1.1.0"),
-            mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.provisioning.model").version("1.7.0"),
+            slingJcrRepoinit(),
+            mavenBundle().groupId("org.apache.jackrabbit").artifactId("oak-segment").version(versionResolver),
             newConfiguration("org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService")
                 .put("repository.home", repositoryHome)
                 .put("name", "Default NodeStore")
                 .asOption(),
-            newConfiguration("org.apache.sling.resourceresolver.impl.observation.OsgiObservationBridge")
-                .put("enabled", true)
+            newConfiguration("org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService")
+                .put("localIndexDir", localIndexDir)
                 .asOption(),
             newConfiguration("org.apache.sling.jcr.repoinit.impl.RepositoryInitializer")
                 .put("references", new String[]{repoinit})
diff --git a/src/test/resources/repoinit.txt b/src/test/resources/repoinit.txt
index 782ffd1..e8ea15e 100644
--- a/src/test/resources/repoinit.txt
+++ b/src/test/resources/repoinit.txt
@@ -22,3 +22,9 @@
 set ACL for everyone
   allow jcr:read on /content
 end
+
+create service user sling-readall
+
+set ACL for sling-readall
+    allow   jcr:read    on /
+end
