RDoing some horrible things with reflection to get around backwards compatibility issues an updating compatibility information
diff --git a/org.apache.sling.repoinit.webconsole/bnd.bnd b/org.apache.sling.repoinit.webconsole/bnd.bnd
index b6f5040..e69de29 100644
--- a/org.apache.sling.repoinit.webconsole/bnd.bnd
+++ b/org.apache.sling.repoinit.webconsole/bnd.bnd
@@ -1 +0,0 @@
-Import-Package: !java.*,org.apache.sling.repoinit.parser.operations;version="[1.0,10.0)",org.apache.sling.repoinit.parser;version="[1.0,2.0)",org.apache.sling.jcr.repoinit;version="[1.0,2.0)",*
\ No newline at end of file
diff --git a/org.apache.sling.repoinit.webconsole/pom.xml b/org.apache.sling.repoinit.webconsole/pom.xml
index 3a6e72a..571d87c 100644
--- a/org.apache.sling.repoinit.webconsole/pom.xml
+++ b/org.apache.sling.repoinit.webconsole/pom.xml
@@ -17,7 +17,7 @@
     <version>1.0.0-SNAPSHOT</version>
 
     <properties>
-        <sling.java.version>11</sling.java.version>
+        <sling.java.version>8</sling.java.version>
     </properties>
 
     <build>
@@ -153,29 +153,10 @@
             <artifactId>slf4j-api</artifactId>
         </dependency>
 
-        <!-- Repoinit Deps -->
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.repoinit.parser</artifactId>
-            <version>1.1.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.jcr.repoinit</artifactId>
-            <version>1.1.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.testing.sling-mock.junit4</artifactId>
-            <version>3.0.2</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
-            <version>2.9.0</version>
+            <version>2.8.4</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -219,6 +200,24 @@
             <groupId>commons-fileupload</groupId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.repoinit.parser</artifactId>
+            <version>1.2.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.jcr.repoinit</artifactId>
+            <version>1.1.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.testing.sling-mock.junit4</artifactId>
+            <version>3.0.2</version>
+            <scope>test</scope>
+        </dependency>
 
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/org.apache.sling.repoinit.webconsole/src/main/java/org/apache/sling/repoinit/webconsole/RepoInitWebConsole.java b/org.apache.sling.repoinit.webconsole/src/main/java/org/apache/sling/repoinit/webconsole/RepoInitWebConsole.java
index a54d511..89c3bdc 100644
--- a/org.apache.sling.repoinit.webconsole/src/main/java/org/apache/sling/repoinit/webconsole/RepoInitWebConsole.java
+++ b/org.apache.sling.repoinit.webconsole/src/main/java/org/apache/sling/repoinit/webconsole/RepoInitWebConsole.java
@@ -17,9 +17,13 @@
 package org.apache.sling.repoinit.webconsole;
 
 import java.io.IOException;
+import java.io.Reader;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 
+import javax.jcr.Session;
 import javax.servlet.Servlet;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -35,11 +39,10 @@
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
 import org.apache.felix.webconsole.WebConsoleConstants;
 import org.apache.sling.jcr.api.SlingRepository;
-import org.apache.sling.jcr.repoinit.JcrRepoInitOpsProcessor;
-import org.apache.sling.repoinit.parser.RepoInitParser;
-import org.apache.sling.repoinit.parser.RepoInitParsingException;
-import org.apache.sling.repoinit.parser.operations.Operation;
+import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.ComponentContext;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
@@ -53,20 +56,43 @@
 public class RepoInitWebConsole extends AbstractWebConsolePlugin {
 
     public static final String CONSOLE_LABEL = "repoinit";
-    public static final String CONSOLE_TITLE = "RepoInit";
-    private final RepoInitParser parser;
+    public static final String CONSOLE_TITLE = "Repository Initialization";
     private final SlingRepository slingRepository;
-    private final JcrRepoInitOpsProcessor processor;
+    private final BundleContext context;
     static final String RES_LOC = CONSOLE_LABEL + "/res/ui";
 
     @Activate
-    public RepoInitWebConsole(@Reference RepoInitParser parser, @Reference SlingRepository slingRepository,
-            @Reference JcrRepoInitOpsProcessor processor) throws IOException {
-        this.parser = parser;
-        this.processor = processor;
+    public RepoInitWebConsole(ComponentContext context, @Reference SlingRepository slingRepository) throws IOException {
+        this.context = context.getBundleContext();
         this.slingRepository = slingRepository;
     }
 
+    @SuppressWarnings("unchecked")
+    private List<?> parse(Reader reader) throws NoSuchMethodException, SecurityException, IllegalAccessException,
+            IllegalArgumentException, InvocationTargetException {
+        ServiceReference<?> reference = context.getServiceReference("org.apache.sling.repoinit.parser.RepoInitParser");
+        try {
+            Object parser = context.getService(reference);
+            Method method = parser.getClass().getDeclaredMethod("parse", Reader.class);
+            return (List<Object>) method.invoke(parser, reader);
+        } finally {
+            context.ungetService(reference);
+        }
+    }
+
+    private void process(Session session, List<?> operations) throws IllegalAccessException, IllegalArgumentException,
+            InvocationTargetException, NoSuchMethodException, SecurityException {
+        ServiceReference<?> reference = context
+                .getServiceReference("org.apache.sling.jcr.repoinit.JcrRepoInitOpsProcessor");
+        try {
+            Object processor = context.getService(reference);
+            Method method = processor.getClass().getDeclaredMethod("apply", Session.class, List.class);
+            method.invoke(processor, session, operations);
+        } finally {
+            context.ungetService(reference);
+        }
+    }
+
     @Override
     public String getLabel() {
         return CONSOLE_LABEL;
@@ -97,13 +123,17 @@
         }
     }
 
+    @SuppressWarnings("deprecated")
     @Override
     protected void doPost(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
-        List<Operation> operations;
+        List<?> operations;
         try {
-            operations = parser.parse(request.getReader());
-        } catch (RepoInitParsingException e) {
+            operations = parse(request.getReader());
+        } catch (InvocationTargetException e) {
+            handleException(response, "Failed to parse RepoInit Statement: ", (Exception) e.getCause());
+            return;
+        } catch (Exception e) {
             handleException(response, "Failed to parse RepoInit Statement: ", e);
             return;
         }
@@ -111,12 +141,17 @@
 
         if ("true".equals(request.getParameter("execute"))) {
             try {
-                processor.apply(slingRepository.loginAdministrative(null), operations);
+
+                process(slingRepository.loginAdministrative(null), operations);
+            } catch (InvocationTargetException e) {
+                response.setStatus(400);
+                apiResponse.setErrorMessage("Failed to apply statements", (Exception) e.getCause());
             } catch (Exception e) {
                 response.setStatus(400);
                 apiResponse.setErrorMessage("Failed to apply statements", e);
             }
         }
+
         writeResponse(response, apiResponse);
     }
 
@@ -145,11 +180,11 @@
         protected boolean succeeded;
 
         @JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
-        protected final List<Operation> operations;
+        protected final List<?> operations;
 
         protected String errorMessage;
 
-        public ApiResponse(List<Operation> operations) {
+        public ApiResponse(List<?> operations) {
             this.succeeded = true;
             this.operations = operations;
             errorMessage = null;
@@ -168,11 +203,11 @@
             return errorMessage;
         }
 
-        public List<Operation> getOperations() {
+        public List<?> getOperations() {
             return operations;
         }
 
-        public void setErrorMessage(String message, Exception e){
+        public void setErrorMessage(String message, Exception e) {
             this.succeeded = false;
             this.errorMessage = message + " [" + e.getClass().getSimpleName() + "]: " + e.getMessage();
         }
diff --git a/org.apache.sling.repoinit.webconsole/src/main/resources/tpl/main.html b/org.apache.sling.repoinit.webconsole/src/main/resources/tpl/main.html
index 4daa5ca..f6b1ebe 100644
--- a/org.apache.sling.repoinit.webconsole/src/main/resources/tpl/main.html
+++ b/org.apache.sling.repoinit.webconsole/src/main/resources/tpl/main.html
@@ -21,7 +21,7 @@
   }
 </style>
 <p class="statline ui-state-highlight">Source</p>
-<p>Use this console to test and verify RepoInit Statements on your Apache Sling instance</p>
+<p>Test and verify Repository Initialization (repoint) scripts</p>
 <div class="wrapper">
   <textarea id="source"></textarea>
 </div>
diff --git a/org.apache.sling.repoinit.webconsole/src/test/java/org/apache/sling/repoinit/webconsole/RepoInitWebConsoleTest.java b/org.apache.sling.repoinit.webconsole/src/test/java/org/apache/sling/repoinit/webconsole/RepoInitWebConsoleTest.java
index 6aaeeb3..1b3a6e2 100644
--- a/org.apache.sling.repoinit.webconsole/src/test/java/org/apache/sling/repoinit/webconsole/RepoInitWebConsoleTest.java
+++ b/org.apache.sling.repoinit.webconsole/src/test/java/org/apache/sling/repoinit/webconsole/RepoInitWebConsoleTest.java
@@ -50,19 +50,24 @@
     private RepoInitParser parser;
     private SlingRepository slingRepository;
     private JcrRepoInitOpsProcessor processor;
+    private RepoInitWebConsole webConsole;
 
     @Before
-    public void setup() throws RepoInitParsingException, LoginException, RepositoryException {
+    public void setup() throws RepoInitParsingException, LoginException, RepositoryException, IOException {
         context.request().setServletPath("/system/console/");
         this.parser = mock(RepoInitParser.class);
+        context.registerService(RepoInitParser.class, parser);
         this.slingRepository = mock(SlingRepository.class);
         when(slingRepository.loginAdministrative(null)).thenReturn(mock(Session.class));
         this.processor = mock(JcrRepoInitOpsProcessor.class);
         when(parser.parse(any())).thenReturn(Collections.emptyList());
+        context.registerService(JcrRepoInitOpsProcessor.class, processor);
+
+        webConsole = new RepoInitWebConsole(context.componentContext(), slingRepository);
+        
     }
 
     public void testDoGetRequest(String resource, String type) throws ServletException, IOException {
-        RepoInitWebConsole webConsole = new RepoInitWebConsole(parser, slingRepository, processor);
         context.request().setPathInfo("repoinit/" + resource);
         webConsole.doGet(context.request(), context.response());
         assertEquals(200, context.response().getStatus());
@@ -88,7 +93,6 @@
 
     @Test
     public void testGetHtml() throws ServletException, IOException {
-        RepoInitWebConsole webConsole = new RepoInitWebConsole(parser, slingRepository, processor);
         context.request().setPathInfo("repoinit");
         webConsole.doGet(context.request(), context.response());
         assertEquals(200, context.response().getStatus());
@@ -99,14 +103,12 @@
 
     @Test
     public void testConsoleInfo() throws IOException {
-        RepoInitWebConsole webConsole = new RepoInitWebConsole(parser, slingRepository, processor);
         assertEquals(RepoInitWebConsole.CONSOLE_LABEL, webConsole.getLabel());
         assertEquals(RepoInitWebConsole.CONSOLE_TITLE, webConsole.getTitle());
     }
 
     @Test
     public void testPostValid() throws ServletException, IOException {
-        RepoInitWebConsole webConsole = new RepoInitWebConsole(parser, slingRepository, processor);
 
         context.request().setContent("create user".getBytes());
         webConsole.doPost(context.request(), context.response());
@@ -119,7 +121,6 @@
     @Test
     public void testPostFailure() throws ServletException, IOException, RepoInitParsingException {
         when(parser.parse(any())).thenThrow(new RepoInitParsingException("Failed because bad", null));
-        RepoInitWebConsole webConsole = new RepoInitWebConsole(parser, slingRepository, processor);
 
         context.request().setContent("create user".getBytes());
         webConsole.doPost(context.request(), context.response());
@@ -133,7 +134,6 @@
 
     @Test
     public void testPostExecute() throws ServletException, IOException, RepoInitParsingException {
-        RepoInitWebConsole webConsole = new RepoInitWebConsole(parser, slingRepository, processor);
 
         context.request().setContent("create user".getBytes());
         context.request().addRequestParameter("execute", "true");
@@ -148,7 +148,6 @@
     @Test
     public void testPostExecuteFailure() throws ServletException, IOException, RepoInitParsingException {
         doThrow(new RuntimeException("ERROR")).when(processor).apply(any(), any());
-        RepoInitWebConsole webConsole = new RepoInitWebConsole(parser, slingRepository, processor);
 
         context.request().setContent("create user".getBytes());
         context.request().addRequestParameter("execute", "true");