diff --git a/spec/jastadd/Backend.jadd b/spec/jastadd/Backend.jadd
index 835e9ec593d0fed28fb41ff2dc08d34d362b966f..b0c6eeded5d8e169604c84f83a7e85cefc505a08 100644
--- a/spec/jastadd/Backend.jadd
+++ b/spec/jastadd/Backend.jadd
@@ -1,6 +1,7 @@
 aspect BackendAbstractGrammar {
 
 	public static String ASTNode.listClass = "ArrayList";
+	public static String ASTNode.jastAddListType = "List";
 
 	public String Program.generateAbstractGrammar() {
 		StringBuilder sb = new StringBuilder();
@@ -120,7 +121,7 @@ aspect BackendAspect {
 		return getTypeUse() + " " + getID();
 	}
 	public String ListComponent.constructorParameter() {
-		return "List<" + getTypeUse() + "> " + getID();
+		return ASTNode.jastAddListType + "<" + getTypeUse() + "> " + getID();
 	}
 	public String OptComponent.constructorParameter() {
 		return "Opt<" + getTypeUse() + "> " + getID();
diff --git a/src/java/org/jastadd/relast/compiler/Compiler.java b/src/java/org/jastadd/relast/compiler/Compiler.java
index f5ff3c327dda7c0885be70a3ff9814da38ac32a3..f152514b0dc68115a6cbbdd408dbb2214551a1a4 100644
--- a/src/java/org/jastadd/relast/compiler/Compiler.java
+++ b/src/java/org/jastadd/relast/compiler/Compiler.java
@@ -18,11 +18,12 @@ import org.jastadd.relast.compiler.options.CommandLine.CommandLineException;
 import beaver.Parser;
 
 public class Compiler {
-	protected ArrayList<Option<?>> options;
-	protected FlagOption optionWriteToFile;
-	protected FlagOption optionPrintAST;
-	protected StringOption optionListClass;
-	protected CommandLine commandLine;
+	private ArrayList<Option<?>> options;
+	private FlagOption optionWriteToFile;
+	private FlagOption optionPrintAST;
+	private StringOption optionListClass;
+	private StringOption optionJastAddList;
+	private CommandLine commandLine;
 
 	public Compiler(String args[]) throws CommandLineException {
 		options = new ArrayList<>();
@@ -51,9 +52,14 @@ public class Compiler {
 
 			if (optionListClass.isSet()) {
 				System.out.println("ListClass is set to " + optionListClass.getValue());
-				p.listClass = optionListClass.getValue();
+				ASTNode.listClass = optionListClass.getValue();
 			}
 
+			if (optionJastAddList.isSet()) {
+        System.out.println("JastAdd List type is set to " + optionJastAddList.getValue());
+        ASTNode.jastAddListType = optionJastAddList.getValue();
+      }
+
 			if (optionWriteToFile.isSet()) {
 				File file = new File(filename);
 				String absPath = file.getAbsolutePath();
@@ -81,9 +87,14 @@ public class Compiler {
 	}
 
 	protected void addOptions() {
-		optionWriteToFile = addOption(new FlagOption("file", "write output to files <filename>Gen.ast and <filename>Gen.jadd"));
-		optionPrintAST = addOption(new FlagOption("ast", "print AST"));
-		optionListClass = addOption(new StringOption("listClass", "determine the class name of the nonterminal reference list"));
+		optionWriteToFile = addOption(new FlagOption("file",
+				"write output to files <filename>Gen.ast and <filename>Gen.jadd"));
+		optionPrintAST = addOption(new FlagOption("ast",
+				"print AST"));
+		optionListClass = addOption(new StringOption("listClass",
+				"determine the class name of the nonterminal reference list"));
+		optionJastAddList = addOption(new StringOption("jastAddList",
+				"set the name of the List type in JastAdd (has to match the option '--List' or its default List)"));
 	}
 
 	protected <OptionType extends Option<?>> OptionType addOption(OptionType option) {