diff --git a/build.gradle b/build.gradle
index a5099b23fec17d89768aace3a39639c3cf733282..739984f0c5a9b43747ed83293d069c9fd2dabd9f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ plugins {
 }
 
 group 'org.jastadd.preprocessor'
-version '0.2.6'
+version '0.2.7'
 
 gradlePlugin {
     plugins {
diff --git a/src/main/java/org/jastadd/preprocessor/testing/plugin/JastAddConfiguration.java b/src/main/java/org/jastadd/preprocessor/testing/plugin/JastAddConfiguration.java
index 54f43a86c5a574a5290100361c3aa515244e191b..1fbd3ea164a3f7d347d04901b3a896545706b3fa 100644
--- a/src/main/java/org/jastadd/preprocessor/testing/plugin/JastAddConfiguration.java
+++ b/src/main/java/org/jastadd/preprocessor/testing/plugin/JastAddConfiguration.java
@@ -1,12 +1,10 @@
 package org.jastadd.preprocessor.testing.plugin;
 
-import org.gradle.api.tasks.Input;
-import org.gradle.api.tasks.InputFiles;
-import org.gradle.api.tasks.Optional;
-import org.gradle.api.tasks.OutputDirectory;
+import org.gradle.api.tasks.*;
 
 import java.io.File;
 import java.nio.file.Paths;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -51,4 +49,9 @@ public interface JastAddConfiguration {
   default File getOutputDirOrDefault() {
     return getOutputDir() != null ? getOutputDir() : Paths.get("src", "test", "java-gen").toFile();
   }
+  @OutputDirectory
+  default File getPackageOutputDir() {
+    return getOutputDirOrDefault().toPath().resolve(getPackageName().replace('.', File.separatorChar)).toFile();
+  }
+
 }
diff --git a/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastTest.java b/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastTest.java
index e61b7d6cab544633bfbabbd6c8ea45f724903cae..2bb4c2a81fc78b8936cdb25f5101d7fda729d751 100644
--- a/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastTest.java
+++ b/src/main/java/org/jastadd/preprocessor/testing/plugin/RelastTest.java
@@ -18,7 +18,6 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collectors;
 
 import static groovy.lang.Closure.DELEGATE_FIRST;
 
@@ -47,12 +46,14 @@ public abstract class RelastTest extends DefaultTask {
     return Paths.get(getProject().getProjectDir().getAbsolutePath(), filename);
   }
 
+  @SuppressWarnings("unused")
   public void relast(Closure<?> c) {
     c.setResolveStrategy(DELEGATE_FIRST);
     c.setDelegate(getRelast());
     c.call();
   }
 
+  @SuppressWarnings("unused")
   public void jastadd(Closure<?> c) {
     c.setResolveStrategy(DELEGATE_FIRST);
     c.setDelegate(getJastadd());
@@ -85,7 +86,7 @@ public abstract class RelastTest extends DefaultTask {
       deleteSpec.delete(getJastadd().getOutputDirOrDefault().toPath().resolve(getJastadd().getPackageName()));
     });
     // create output directories, if not existing
-    createDirectory(pathToAbsoluteProject(getJastadd().getOutputDirOrDefault().getName()));
+    createDirectory(pathToAbsoluteProject(getJastadd().getOutputDirOrDefault().getPath()));
     createDirectory(pathToAbsoluteProject(getRelast().getGrammarName()).getParent());
     if (getRelast().isVerbose()) {
       System.out.println("Pre processing, running relast");
@@ -150,7 +151,7 @@ public abstract class RelastTest extends DefaultTask {
           javaExecSpec.setClasspath(runtimeClasspath);
           javaExecSpec.setMain("org.jastadd.JastAdd");
           List<Object> args = new ArrayList<>();
-          args.add("--o=" + pathToAbsoluteProject(getJastadd().getOutputDirOrDefault().getName()));
+          args.add("--o=" + pathToAbsoluteProject(getJastadd().getOutputDirOrDefault().getPath()));
           args.add("--package=" + getJastadd().getPackageName());
           if (getJastadd().getJastAddList() != null) {
             args.add("--List=" + getJastadd().getJastAddList());