diff --git a/.gitmodules b/.gitmodules
index 58efd108e858ae06dde5f626286bd3d73f9dde4e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +0,0 @@
-[submodule "relast-preprocessor"]
-	path = relast-preprocessor
-	url = ../relast-preprocessor.git
-	branch = develop
diff --git a/gradle.properties b/gradle.properties
index 10f87a12d6325a7c2aecf6e7c23f1c6dcae731f8..9c88607945e343af388683de801766b36845c4de 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,3 +1,3 @@
-log4j_version = 2.14.0
+log4j_version = 2.17.2
 mustache_java_version = 0.9.10
 preprocessor_version = 0.1.0-41
diff --git a/ragconnect.base/build.gradle b/ragconnect.base/build.gradle
index 21b7e3c276c390735e1fddcd68a80bc18eb87fe1..1c1f1ff566b90b33b0f7cb7ba81f78b5606428fe 100644
--- a/ragconnect.base/build.gradle
+++ b/ragconnect.base/build.gradle
@@ -70,6 +70,7 @@ File mustacheGrammar = file('../relast-preprocessor/src/main/jastadd/mustache/Mu
 task relast(type: JavaExec) {
     group = 'Build'
     classpath = configurations.relast
+    //noinspection GroovyAssignabilityCheck, GroovyAccessibility
     mainClass = 'org.jastadd.relast.compiler.Compiler'
 
     dependsOn extractJastAddSources
@@ -193,6 +194,7 @@ jar {
 task fatJar(type: Jar) {
     dependsOn jar
     group = "build"
+    //noinspection GroovyAssignabilityCheck, GroovyAccessibility
     archiveAppendix = "fatjar"
     from sourceSets.main.output
     from {
@@ -237,8 +239,10 @@ task setDevVersionForCI() {
 
 publishing {
     publications {
+        //noinspection GroovyAssignabilityCheck
         maven(MavenPublication) {
-            artifactId = 'ragconnect'
+            artifactId = 'ragconnect' as Publication
+            //noinspection GroovyAssignabilityCheck
             from components.java
         }
     }
@@ -250,6 +254,7 @@ publishing {
                 value = System.getenv("CI_JOB_TOKEN")
             }
             authentication {
+                //noinspection GroovyAssignabilityCheck
                 header(HttpHeaderAuthentication)
             }
         }
diff --git a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java
index b70f3a715c1fc2f6fa11fbc568027bcaf9df042b..8d4ab2ce26452684112ecebc9885591f82124cb4 100644
--- a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java
+++ b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java
@@ -154,7 +154,7 @@ public class Compiler extends AbstractCompiler {
    */
   private String readVersion() {
     try {
-      ResourceBundle resources = ResourceBundle.getBundle("ragConnectVersion");
+      ResourceBundle resources = ResourceBundle.getBundle("ragconnectVersion");
       return resources.getString("version");
     } catch (MissingResourceException e) {
       return "version ?";
diff --git a/ragconnect.tests/build.gradle b/ragconnect.tests/build.gradle
index 207c4b53ed5a5a8fde27ff57085d8ff565ff6467..0096b918bbef986cc9da63dc560c2c0d7e152142 100644
--- a/ragconnect.tests/build.gradle
+++ b/ragconnect.tests/build.gradle
@@ -9,7 +9,7 @@ buildscript {
     }
     dependencies {
         classpath 'org.jastadd:jastaddgradle:1.13.3'
-        classpath 'org.jastadd.preprocessor:testing:0.2.13-27'
+        classpath 'org.jastadd.preprocessor:testing:0.3.0-37'
     }
 }
 
@@ -37,11 +37,16 @@ repositories {
     }
 }
 
+configurations {
+    ragconnect
+    relast
+}
+
 dependencies {
-    implementation project(':ragconnect.base')
+    ragconnect project(':ragconnect.base')
 
     implementation group: 'org.jastadd', name: 'jastadd2', version: '2.3.5-dresden-5'
-    implementation group: 'org.jastadd', name: 'relast', version: "0.3.0-137"
+    relast group: 'org.jastadd', name: 'relast', version: "0.3.0-137"
 
     testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.4.0'
     testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.4.0'
@@ -71,6 +76,11 @@ File genSrc = file("src/test/java-gen")
 sourceSets.test.java.srcDir genSrc
 idea.module.generatedSourceDirs += genSrc
 
+preprocessorTesting {
+    relastCompilerConfiguration = configurations.relast
+    ragconnectCompilerConfiguration = configurations.ragconnect
+}
+
 // --- Tests ---
 test {
     useJUnitPlatform {
@@ -143,7 +153,6 @@ task compileExampleTest(type: RagConnectTest) {
         inputFiles = [file('src/test/01-input/example/Test.jadd')]
     }
 }
-compileExampleTest.outputs.upToDateWhen { false }
 
 // --- Test: default-only-read ---
 task compileDefaultOnlyRead(type: RagConnectTest) {
@@ -659,7 +668,6 @@ task compileRelationIncremental(type: RagConnectTest) {
 // --- Task order ---
 classes.dependsOn(':ragconnect.base:jar')
 //compileAttributeIncremental.outputs.upToDateWhen { false }
-compileRelationIncremental.outputs.upToDateWhen { false }
 
 // --- Misc ---
 static ArrayList<String> defaultRagConnectOptionsAnd(ArrayList<String> options = []) {
diff --git a/relast-preprocessor b/relast-preprocessor
deleted file mode 160000
index cee30f5c8a1b356118f5ed78302a1df64fe76897..0000000000000000000000000000000000000000
--- a/relast-preprocessor
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit cee30f5c8a1b356118f5ed78302a1df64fe76897
diff --git a/settings.gradle b/settings.gradle
index 8a597cfa491920744bb8b5e1d3f103fb4fc95bb1..4340995b2e4d75b931edf7ea1d104c4900da748a 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -6,6 +6,5 @@ pluginManagement {
 
 rootProject.name = 'ragconnect'
 
-include 'relast-preprocessor'
 include 'ragconnect.base'
 include 'ragconnect.tests'