diff --git a/relast2uml.base/.gitignore b/grammar2uml/.gitignore
similarity index 100%
rename from relast2uml.base/.gitignore
rename to grammar2uml/.gitignore
diff --git a/relast2uml.base/build.gradle b/grammar2uml/build.gradle
similarity index 65%
rename from relast2uml.base/build.gradle
rename to grammar2uml/build.gradle
index ddeda5fc43e9cb33b34100a7ae6f333bdcc8940f..44378a3b612dff552da7c45bafdf0a00b5976f65 100644
--- a/relast2uml.base/build.gradle
+++ b/grammar2uml/build.gradle
@@ -1,9 +1,10 @@
 apply plugin: 'jastadd'
 apply plugin: 'application'
+apply plugin: 'idea'
 
 sourceCompatibility = 1.8
 
-mainClassName = 'org.jastadd.relast2uml.compiler.Compiler'
+mainClassName = 'org.jastadd.grammar2uml.compiler.Compiler'
 
 repositories {
     jcenter()
@@ -29,7 +30,7 @@ dependencies {
     testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.12.1'
 }
 
-def versionFile = 'src/main/resources/relast2umlVersion.properties'
+def versionFile = 'src/main/resources/grammar2umlVersion.properties'
 def oldProps = new Properties()
 
 try {
@@ -55,16 +56,15 @@ jar {
 
     from {
         configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
     }
 
-    archiveBaseName = 'relast2uml'
+    archiveBaseName = 'grammar2uml'
 }
 
-sourceSets {
-    main {
-        java.srcDir "src/gen/java"
-    }
-}
+File genSrc = file("src/gen/java")
+sourceSets.main.java.srcDir genSrc
+idea.module.generatedSourceDirs += genSrc
 
 test {
     useJUnitPlatform()
@@ -72,59 +72,53 @@ test {
     maxHeapSize = '1G'
 }
 
-jar {
-    from {
-        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
-    }
-}
-
 task relast(type: JavaExec) {
     group = 'Build'
     main = "-jar"
 
     doFirst {
         delete "src/gen/jastadd/*.ast"
-        delete "src/gen/jastadd/Relast2Uml.jadd"
-        delete "src/gen/jastadd/Relast2UmlRefResolver.jadd"
-        delete "src/gen/jastadd/Relast2UmlResolverStubs.jrag"
+        delete "src/gen/jastadd/Grammar2Uml.jadd"
+        delete "src/gen/jastadd/Grammar2UmlRefResolver.jadd"
+        delete "src/gen/jastadd/Grammar2UmlResolverStubs.jrag"
         mkdir  "src/gen/jastadd/"
     }
 
     args = [
             "../libs/relast.jar",
             "../relast.preprocessor/src/main/jastadd/RelAst.relast",
-            "./src/main/jastadd/Relast2Uml.relast",
+            "./src/main/jastadd/Grammar2Uml.relast",
             "./src/main/jastadd/MustacheNodes.relast",
             "--listClass=java.util.ArrayList",
             "--jastAddList=JastAddList",
             "--useJastAddNames",
             "--file",
             "--resolverHelper",
-            "--grammarName=./src/gen/jastadd/Relast2Uml"
+            "--grammarName=./src/gen/jastadd/Grammar2Uml"
     ]
 
 //    inputs.files file("../libs/relast.jar"),
 //            file("../relast.preprocessor/src/main/jastadd/RelAST.relast"),
-//            file("./src/main/jastadd/Relast2Uml.relast")
+//            file("./src/main/jastadd/Grammar2Uml.relast")
 //            file("./src/main/jastadd/MustacheNodes.relast")
-//    outputs.files file("./src/gen/jastadd/Relast2Uml.ast"),
-//            file("./src/gen/jastadd/Relast2Uml.jadd"),
-//            file("./src/gen/jastadd/Relast2UmlRefResolver.jadd"),
-//            file('./src/gen/jastadd/Relast2UmlResolverStubs.jrag')
+//    outputs.files file("./src/gen/jastadd/Grammar2Uml.ast"),
+//            file("./src/gen/jastadd/Grammar2Uml.jadd"),
+//            file("./src/gen/jastadd/Grammar2UmlRefResolver.jadd"),
+//            file('./src/gen/jastadd/Grammar2UmlResolverStubs.jrag')
 }
 
 jastadd {
     configureModuleBuild()
     modules {
         //noinspection GroovyAssignabilityCheck
-        module("Relast2Uml") {
+        module("Grammar2Uml") {
 
             java {
                 basedir ".."
                 include "relast.preprocessor/main/**/*.java"
                 include "relast.preprocessor/gen/**/*.java"
-                include "relast2uml.base/src/main/**/*.java"
-                include "relast2uml.base/src/gen/**/*.java"
+                include "grammar2uml/src/main/**/*.java"
+                include "grammar2uml/src/gen/**/*.java"
             }
 
             jastadd {
@@ -132,23 +126,23 @@ jastadd {
                 include "relast.preprocessor/src/main/jastadd/**/*.ast"
                 include "relast.preprocessor/src/main/jastadd/**/*.jadd"
                 include "relast.preprocessor/src/main/jastadd/**/*.jrag"
-                include "relast2uml.base/src/main/jastadd/**/*.ast"
-                include "relast2uml.base/src/main/jastadd/**/*.jadd"
-                include "relast2uml.base/src/main/jastadd/**/*.jrag"
-                include "relast2uml.base/src/gen/jastadd/**/*.ast"
-                include "relast2uml.base/src/gen/jastadd/**/*.jadd"
-                include "relast2uml.base/src/gen/jastadd/**/*.jrag"
+                include "grammar2uml/src/main/jastadd/**/*.ast"
+                include "grammar2uml/src/main/jastadd/**/*.jadd"
+                include "grammar2uml/src/main/jastadd/**/*.jrag"
+                include "grammar2uml/src/gen/jastadd/**/*.ast"
+                include "grammar2uml/src/gen/jastadd/**/*.jadd"
+                include "grammar2uml/src/gen/jastadd/**/*.jrag"
             }
 
             scanner {
                 basedir ".."
-                include "relast2uml.base/src/main/jastadd/scanner/Header.flex",               [-5]
+                include "grammar2uml/src/main/jastadd/scanner/Header.flex",               [-5]
                 include "relast.preprocessor/src/main/jastadd/scanner/Preamble.flex",      [-4]
                 include "relast.preprocessor/src/main/jastadd/scanner/Macros.flex",        [-3]
-                include "relast2uml.base/src/main/jastadd/scanner/Macros.flex",               [-3]
+                include "grammar2uml/src/main/jastadd/scanner/Macros.flex",               [-3]
                 include "relast.preprocessor/src/main/jastadd/scanner/RulesPreamble.flex", [-2]
-                include "relast2uml.base/src/main/jastadd/scanner/MappingContent.flex",       [-1]
-                include "relast2uml.base/src/main/jastadd/scanner/Keywords.flex"
+                include "grammar2uml/src/main/jastadd/scanner/MappingContent.flex",       [-1]
+                include "grammar2uml/src/main/jastadd/scanner/Keywords.flex"
                 include "relast.preprocessor/src/main/jastadd/scanner/Keywords.flex"
                 include "relast.preprocessor/src/main/jastadd/scanner/Symbols.flex",        [1]
                 include "relast.preprocessor/src/main/jastadd/scanner/RulesPostamble.flex", [2]
@@ -156,9 +150,9 @@ jastadd {
 
             parser {
                 basedir ".."
-                include "relast2uml.base/src/main/jastadd/parser/Preamble.parser"
+                include "grammar2uml/src/main/jastadd/parser/Preamble.parser"
                 include "relast.preprocessor/src/main/jastadd/parser/RelAst.parser"
-                include "relast2uml.base/src/main/jastadd/parser/Relast2Uml.parser"
+                include "grammar2uml/src/main/jastadd/parser/Grammar2Uml.parser"
             }
         }
     }
@@ -174,18 +168,18 @@ jastadd {
 
     }
 
-    module = "Relast2Uml"
+    module = "Grammar2Uml"
 
-    astPackage = 'org.jastadd.relast2uml.ast'
+    astPackage = 'org.jastadd.grammar2uml.ast'
 
-    parser.name = 'Relast2UmlParser'
+    parser.name = 'Grammar2UmlParser'
 
     genDir = 'src/gen/java'
 
     buildInfoDir = 'src/gen-res'
 
-    scanner.genDir = "src/gen/java/org/jastadd/relast2uml/scanner"
-    parser.genDir = "src/gen/java/org/jastadd/relast2uml/parser"
+    scanner.genDir = "src/gen/java/org/jastadd/grammar2uml/scanner"
+    parser.genDir = "src/gen/java/org/jastadd/grammar2uml/parser"
 
     jastaddOptions = ["--lineColumnNumbers", "--List=JastAddList", "--safeLazy", "--visitCheck=true", "--rewrite=cnta", "--cache=all"]
 }
diff --git a/relast2uml.base/src/main/jastadd/Analysis.jrag b/grammar2uml/src/main/jastadd/Analysis.jrag
similarity index 100%
rename from relast2uml.base/src/main/jastadd/Analysis.jrag
rename to grammar2uml/src/main/jastadd/Analysis.jrag
diff --git a/relast2uml.base/src/main/jastadd/Errors.jrag b/grammar2uml/src/main/jastadd/Errors.jrag
similarity index 95%
rename from relast2uml.base/src/main/jastadd/Errors.jrag
rename to grammar2uml/src/main/jastadd/Errors.jrag
index cf993e59b544cf90d2a861ad9394a94e3ac1d01f..6a67912cee04483dec1f7727b97f8bdc6b19a8c1 100644
--- a/relast2uml.base/src/main/jastadd/Errors.jrag
+++ b/grammar2uml/src/main/jastadd/Errors.jrag
@@ -3,9 +3,9 @@ import java.util.TreeSet;
 import java.util.LinkedList;
 
 aspect Errors {
-  coll Set<ErrorMessage> Relast2Uml.errors()
+  coll Set<ErrorMessage> Grammar2Uml.errors()
     [new TreeSet<ErrorMessage>()]
-    root Relast2Uml;
+    root Grammar2Uml;
 }
 
 aspect ErrorMessage {
diff --git a/relast2uml.base/src/main/jastadd/Relast2Uml.relast b/grammar2uml/src/main/jastadd/Grammar2Uml.relast
similarity index 61%
rename from relast2uml.base/src/main/jastadd/Relast2Uml.relast
rename to grammar2uml/src/main/jastadd/Grammar2Uml.relast
index a8733a0cd0000d0f1b1af4f98365830d2e1c7aa0..9eab1230a1f5abd9fffbb7784043e1a457a14248 100644
--- a/relast2uml.base/src/main/jastadd/Relast2Uml.relast
+++ b/grammar2uml/src/main/jastadd/Grammar2Uml.relast
@@ -1,4 +1,4 @@
-Relast2Uml ::= Program <FileName> Folder* ;
+Grammar2Uml ::= Program <FileName> Folder* ;
 
 Folder ::= <Name:String> ;
 rel Folder.Type* <-> TypeDecl.SourceFolder?;
diff --git a/relast2uml.base/src/main/jastadd/MustacheNodes.relast b/grammar2uml/src/main/jastadd/MustacheNodes.relast
similarity index 79%
rename from relast2uml.base/src/main/jastadd/MustacheNodes.relast
rename to grammar2uml/src/main/jastadd/MustacheNodes.relast
index 93c7c7bea964246bc7cf052c2fe88f8480a0f4ab..d4b684c6a23d885c5aca80ebb54aef3f6d4aa402 100644
--- a/relast2uml.base/src/main/jastadd/MustacheNodes.relast
+++ b/grammar2uml/src/main/jastadd/MustacheNodes.relast
@@ -1,4 +1,4 @@
-MRelast2Uml ::= Folder:MFolder* OtherType:MTypeDecl* Containment:MContainment* Relation:MRelation* Inheritance:MInheritance* ;
+MGrammar2Uml ::= Folder:MFolder* OtherType:MTypeDecl* Containment:MContainment* Relation:MRelation* Inheritance:MInheritance* ;
 MFolder ::= InnerTypeDecl:MTypeDecl*;
 MTypeDecl ::= InnerTokenComponent:MTokenComponent*;
 MTokenComponent;
@@ -9,7 +9,7 @@ MListContainment : MContainment;
 MRelation ::= <Label> <LeftModifier> <RightModifier> <Bidirectional:boolean>;
 MInheritance ;
 
-rel MRelast2Uml.Relast2Uml -> Relast2Uml;
+rel MGrammar2Uml.Grammar2Uml -> Grammar2Uml;
 rel MFolder.Folder -> Folder;
 rel MTypeDecl.Type -> TypeDecl;
 rel MTokenComponent.Token -> TokenComponent;
diff --git a/relast2uml.base/src/main/jastadd/NameResolution.jrag b/grammar2uml/src/main/jastadd/NameResolution.jrag
similarity index 100%
rename from relast2uml.base/src/main/jastadd/NameResolution.jrag
rename to grammar2uml/src/main/jastadd/NameResolution.jrag
diff --git a/grammar2uml/src/main/jastadd/Navigation.jrag b/grammar2uml/src/main/jastadd/Navigation.jrag
new file mode 100644
index 0000000000000000000000000000000000000000..980904b34bb59d293da2512d5fea1d8375f457c0
--- /dev/null
+++ b/grammar2uml/src/main/jastadd/Navigation.jrag
@@ -0,0 +1,20 @@
+aspect Navigation {
+
+  // --- program ---
+  eq Grammar2Uml.getChild().program() = getProgram();
+  eq MGrammar2Uml.getChild().program() = getGrammar2Uml().program();
+
+  // --- grammar2uml ---
+  inh Grammar2Uml ASTNode.grammar2uml();
+  eq Grammar2Uml.getChild().grammar2uml() = this;
+  eq MGrammar2Uml.getChild().grammar2uml() = getGrammar2Uml();
+
+  // --- containedFile ---
+  eq Grammar2Uml.getChild().containedFile() = null;
+  eq MGrammar2Uml.getChild().containedFile() = null;
+
+  // --- containedFileName ---
+  eq Grammar2Uml.getChild().containedFileName() = getFileName();
+  eq Program.getChild().containedFileName() = null;
+  eq MGrammar2Uml.getChild().containedFileName() = null;
+}
diff --git a/relast2uml.base/src/main/jastadd/backend/Configuration.jadd b/grammar2uml/src/main/jastadd/backend/Configuration.jadd
similarity index 100%
rename from relast2uml.base/src/main/jastadd/backend/Configuration.jadd
rename to grammar2uml/src/main/jastadd/backend/Configuration.jadd
diff --git a/relast2uml.base/src/main/jastadd/backend/Generation.jadd b/grammar2uml/src/main/jastadd/backend/Generation.jadd
similarity index 94%
rename from relast2uml.base/src/main/jastadd/backend/Generation.jadd
rename to grammar2uml/src/main/jastadd/backend/Generation.jadd
index b33d9a10405dcb2e164bfed651155a364d6056fa..7001c2f290bd9d8dd5a132f3c1d248c941055747 100644
--- a/relast2uml.base/src/main/jastadd/backend/Generation.jadd
+++ b/grammar2uml/src/main/jastadd/backend/Generation.jadd
@@ -86,9 +86,9 @@ aspect AttributesForMustache {
   }
 
   // --- toMustache ---
-  syn lazy MRelast2Uml Relast2Uml.toMustache() {
-    MRelast2Uml result = new MRelast2Uml();
-    result.setRelast2Uml(this);
+  syn lazy MGrammar2Uml Grammar2Uml.toMustache() {
+    MGrammar2Uml result = new MGrammar2Uml();
+    result.setGrammar2Uml(this);
     for (Folder folder : getFolderList()) {
       result.addFolder(folder.toMustache());
     }
@@ -164,9 +164,9 @@ aspect AttributesForMustache {
 }
 
 aspect AspectGeneration {
-  syn String Relast2Uml.generateAspect() = toMustache().generateAspect();
+  syn String Grammar2Uml.generateAspect() = toMustache().generateAspect();
 
-  syn String MRelast2Uml.generateAspect() {
+  syn String MGrammar2Uml.generateAspect() {
     StringBuilder sb = new StringBuilder();
     com.github.mustachejava.reflect.ReflectionObjectHandler roh = new com.github.mustachejava.reflect.ReflectionObjectHandler() {
       @Override
@@ -185,8 +185,8 @@ aspect AspectGeneration {
     };
     com.github.mustachejava.DefaultMustacheFactory mf = new com.github.mustachejava.DefaultMustacheFactory();
 //    mf.setObjectHandler(roh);
-    com.github.mustachejava.Mustache m = mf.compile("relast2uml.mustache");
-    m.execute(new java.io.PrintWriter(new org.jastadd.relast2uml.compiler.AppendableWriter(sb)), this);
+    com.github.mustachejava.Mustache m = mf.compile("grammar2uml.mustache");
+    m.execute(new java.io.PrintWriter(new org.jastadd.grammar2uml.compiler.AppendableWriter(sb)), this);
     return sb.toString();
   }
 }
diff --git a/relast2uml.base/src/main/jastadd/parser/Relast2Uml.parser b/grammar2uml/src/main/jastadd/parser/Grammar2Uml.parser
similarity index 78%
rename from relast2uml.base/src/main/jastadd/parser/Relast2Uml.parser
rename to grammar2uml/src/main/jastadd/parser/Grammar2Uml.parser
index 6a2707b2f263b4174ccb4ca1537894e250a153ba..df2865f7f39906268d759884ec359a046d02f3ae 100644
--- a/relast2uml.base/src/main/jastadd/parser/Relast2Uml.parser
+++ b/grammar2uml/src/main/jastadd/parser/Grammar2Uml.parser
@@ -1,6 +1,6 @@
-Relast2Uml relast2uml
-  = folder.f relast2uml.r   {: r.getFolderList().insertChild(f, 0); return r; :}
-  |                         {: return new Relast2Uml(); :}
+Grammar2Uml grammar2uml
+  = folder.f grammar2uml.r  {: r.getFolderList().insertChild(f, 0); return r; :}
+  |                         {: return new Grammar2Uml(); :}
 ;
 
 Folder folder
diff --git a/grammar2uml/src/main/jastadd/parser/Preamble.parser b/grammar2uml/src/main/jastadd/parser/Preamble.parser
new file mode 100644
index 0000000000000000000000000000000000000000..6d8af56847d11654ce2e75845dd5a27c317d273d
--- /dev/null
+++ b/grammar2uml/src/main/jastadd/parser/Preamble.parser
@@ -0,0 +1,7 @@
+%header {:
+package org.jastadd.grammar2uml.parser;
+import org.jastadd.grammar2uml.ast.*;
+:};
+
+%goal goal;
+%goal grammar2uml;
diff --git a/grammar2uml/src/main/jastadd/scanner/Header.flex b/grammar2uml/src/main/jastadd/scanner/Header.flex
new file mode 100644
index 0000000000000000000000000000000000000000..5050ac3e25313c07411bc53ed2b49a3c66bc3c86
--- /dev/null
+++ b/grammar2uml/src/main/jastadd/scanner/Header.flex
@@ -0,0 +1,20 @@
+package org.jastadd.grammar2uml.scanner;
+
+import org.jastadd.grammar2uml.parser.Grammar2UmlParser.Terminals;
+%%
+
+%public
+%final
+%class Grammar2UmlScanner
+%extends beaver.Scanner
+
+%type beaver.Symbol
+%function nextToken
+%yylexthrow beaver.Scanner.Exception
+%scanerror Grammar2UmlScanner.ScannerError
+
+%x COMMENT
+%s DECLARATION
+
+%line
+%column
diff --git a/relast2uml.base/src/main/jastadd/scanner/Keywords.flex b/grammar2uml/src/main/jastadd/scanner/Keywords.flex
similarity index 100%
rename from relast2uml.base/src/main/jastadd/scanner/Keywords.flex
rename to grammar2uml/src/main/jastadd/scanner/Keywords.flex
diff --git a/relast2uml.base/src/main/jastadd/scanner/Macros.flex b/grammar2uml/src/main/jastadd/scanner/Macros.flex
similarity index 100%
rename from relast2uml.base/src/main/jastadd/scanner/Macros.flex
rename to grammar2uml/src/main/jastadd/scanner/Macros.flex
diff --git a/relast2uml.base/src/main/jastadd/scanner/MappingContent.flex b/grammar2uml/src/main/jastadd/scanner/MappingContent.flex
similarity index 100%
rename from relast2uml.base/src/main/jastadd/scanner/MappingContent.flex
rename to grammar2uml/src/main/jastadd/scanner/MappingContent.flex
diff --git a/relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/AppendableWriter.java b/grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/AppendableWriter.java
similarity index 93%
rename from relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/AppendableWriter.java
rename to grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/AppendableWriter.java
index 70db05d0d7dd0eaefeac7d6d7cb5918392b64d6a..318f67fa93eccbdf25a30ced491e59115235f9da 100644
--- a/relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/AppendableWriter.java
+++ b/grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/AppendableWriter.java
@@ -1,4 +1,4 @@
-package org.jastadd.relast2uml.compiler;
+package org.jastadd.grammar2uml.compiler;
 
 import java.io.IOException;
 import java.io.Writer;
diff --git a/relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/Compiler.java b/grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/Compiler.java
similarity index 72%
rename from relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/Compiler.java
rename to grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/Compiler.java
index a90e48ff9f722303c95cbba82d6272f202794408..7b96d64fcd8c3504071992af6062ab24ef312fd5 100644
--- a/relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/Compiler.java
+++ b/grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/Compiler.java
@@ -1,16 +1,16 @@
-package org.jastadd.relast2uml.compiler;
+package org.jastadd.grammar2uml.compiler;
 
 import beaver.Parser;
 import org.jastadd.option.BooleanOption;
 import org.jastadd.option.ValueOption;
 import org.jastadd.relast.compiler.AbstractCompiler;
 import org.jastadd.relast.compiler.CompilerException;
-import org.jastadd.relast2uml.ast.ErrorMessage;
-import org.jastadd.relast2uml.ast.GrammarFile;
-import org.jastadd.relast2uml.ast.Program;
-import org.jastadd.relast2uml.ast.Relast2Uml;
-import org.jastadd.relast2uml.parser.Relast2UmlParser;
-import org.jastadd.relast2uml.scanner.Relast2UmlScanner;
+import org.jastadd.grammar2uml.ast.ErrorMessage;
+import org.jastadd.grammar2uml.ast.GrammarFile;
+import org.jastadd.grammar2uml.ast.Program;
+import org.jastadd.grammar2uml.ast.Grammar2Uml;
+import org.jastadd.grammar2uml.parser.Grammar2UmlParser;
+import org.jastadd.grammar2uml.scanner.Grammar2UmlScanner;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -24,14 +24,14 @@ import java.util.ResourceBundle;
 public class Compiler extends AbstractCompiler {
 
   private ValueOption optionOutputFile;
-  private ValueOption optionInputRelast2Uml;
+  private ValueOption optionInputGrammar2Uml;
   private BooleanOption optionDefaultFolders;
   private BooleanOption optionHelp;
   private BooleanOption optionVersion;
   private BooleanOption optionVerbose;
 
   public Compiler() {
-    super("relast2uml", false);
+    super("grammar2uml", false);
   }
 
   /**
@@ -47,7 +47,7 @@ public class Compiler extends AbstractCompiler {
    */
   private String readVersion() {
     try {
-      ResourceBundle resources = ResourceBundle.getBundle("relast2umlVersion");
+      ResourceBundle resources = ResourceBundle.getBundle("grammar2umlVersion");
       return resources.getString("version");
     } catch (MissingResourceException e) {
       return "version ?";
@@ -85,8 +85,8 @@ public class Compiler extends AbstractCompiler {
             .defaultValue("uml.md")
             .acceptAnyValue()
             .needsValue(false));
-    optionInputRelast2Uml = addOption(
-        new ValueOption("inputRelast2Uml", "relast2uml definition file.")
+    optionInputGrammar2Uml = addOption(
+        new ValueOption("inputGrammar2Uml", "grammar2uml definition file.")
             .needsValue(true));
     optionDefaultFolders = addOption(
         new BooleanOption("defaultFolders",
@@ -103,16 +103,16 @@ public class Compiler extends AbstractCompiler {
         .defaultValue(false));
   }
 
-  private Relast2Uml parseProgram() throws CompilerException {
+  private Grammar2Uml parseProgram() throws CompilerException {
     Program program = new Program();
-    Relast2Uml relast2Uml;
+    Grammar2Uml grammar2Uml;
 
     for (String inputGrammarFileName : getConfiguration().getFiles()) {
       printMessage("Parsing " + inputGrammarFileName);
       GrammarFile inputGrammar;
       try (BufferedReader reader = Files.newBufferedReader(Paths.get(inputGrammarFileName))) {
-        Relast2UmlScanner scanner = new Relast2UmlScanner(reader);
-        Relast2UmlParser parser = new Relast2UmlParser();
+        Grammar2UmlScanner scanner = new Grammar2UmlScanner(reader);
+        Grammar2UmlParser parser = new Grammar2UmlParser();
         inputGrammar = (GrammarFile) parser.parse(scanner);
         if (optionVerbose.value()) {
           inputGrammar.dumpTree(System.out);
@@ -124,29 +124,29 @@ public class Compiler extends AbstractCompiler {
       }
     }
 
-    if (optionInputRelast2Uml.isMatched()) {
-      String inputRelast2UmlFileName = optionInputRelast2Uml.value();
-      try (BufferedReader reader = Files.newBufferedReader(Paths.get(inputRelast2UmlFileName))) {
-        Relast2UmlScanner scanner = new Relast2UmlScanner(reader);
-        Relast2UmlParser parser = new Relast2UmlParser();
-        relast2Uml = (Relast2Uml) parser.parse(scanner, Relast2UmlParser.AltGoals.relast2uml);
-        relast2Uml.setFileName(inputRelast2UmlFileName);
+    if (optionInputGrammar2Uml.isMatched()) {
+      String inputGrammar2UmlFileName = optionInputGrammar2Uml.value();
+      try (BufferedReader reader = Files.newBufferedReader(Paths.get(inputGrammar2UmlFileName))) {
+        Grammar2UmlScanner scanner = new Grammar2UmlScanner(reader);
+        Grammar2UmlParser parser = new Grammar2UmlParser();
+        grammar2Uml = (Grammar2Uml) parser.parse(scanner, Grammar2UmlParser.AltGoals.grammar2uml);
+        grammar2Uml.setFileName(inputGrammar2UmlFileName);
       } catch (IOException | Parser.Exception e) {
-        throw new CompilerException("Could not parse relast2uml file " + inputRelast2UmlFileName, e);
+        throw new CompilerException("Could not parse grammar2uml file " + inputGrammar2UmlFileName, e);
       }
     } else {
       // no special setting given
-      relast2Uml = new Relast2Uml();
-      relast2Uml.setFileName("<none>");
+      grammar2Uml = new Grammar2Uml();
+      grammar2Uml.setFileName("<none>");
     }
-    relast2Uml.setProgram(program);
-    relast2Uml.treeResolveAll();
+    grammar2Uml.setProgram(program);
+    grammar2Uml.treeResolveAll();
     if (optionDefaultFolders.value()) {
       for (GrammarFile grammarFile : program.getGrammarFileList()) {
-        relast2Uml.addFolder(grammarFile.defaultFolder());
+        grammar2Uml.addFolder(grammarFile.defaultFolder());
       }
     }
-    return relast2Uml;
+    return grammar2Uml;
   }
 
   @Override
@@ -160,7 +160,7 @@ public class Compiler extends AbstractCompiler {
       return 0;
     }
 
-    printMessage("Running relast2uml " + readVersion());
+    printMessage("Running grammar2uml " + readVersion());
 
     String output;
     if (optionOutputFile.isMatched()) {
@@ -180,18 +180,18 @@ public class Compiler extends AbstractCompiler {
       throw new CompilerException("No input grammars specified!");
     }
 
-    Relast2Uml relast2uml = parseProgram();
+    Grammar2Uml grammar2uml = parseProgram();
 
-    if (!relast2uml.errors().isEmpty()) {
+    if (!grammar2uml.errors().isEmpty()) {
       System.err.println("Errors:");
-      for (ErrorMessage e : relast2uml.errors()) {
+      for (ErrorMessage e : grammar2uml.errors()) {
         System.err.println(e);
       }
       System.exit(1);
     }
 
     printMessage("Writing output file " + output);
-    writeToFile(output, relast2uml.generateAspect());
+    writeToFile(output, grammar2uml.generateAspect());
     return 0;
   }
 }
diff --git a/relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/SimpleMain.java b/grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/SimpleMain.java
similarity index 78%
rename from relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/SimpleMain.java
rename to grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/SimpleMain.java
index f2c36da68a2efe800c0d4e48dc56111dc8468517..ff422991c640c7308c89a990c9baa71e031cd9e6 100644
--- a/relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/SimpleMain.java
+++ b/grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/SimpleMain.java
@@ -1,9 +1,9 @@
-package org.jastadd.relast2uml.compiler;
+package org.jastadd.grammar2uml.compiler;
 
 import beaver.Parser;
-import org.jastadd.relast2uml.ast.*;
-import org.jastadd.relast2uml.parser.Relast2UmlParser;
-import org.jastadd.relast2uml.scanner.Relast2UmlScanner;
+import org.jastadd.grammar2uml.ast.*;
+import org.jastadd.grammar2uml.parser.Grammar2UmlParser;
+import org.jastadd.grammar2uml.scanner.Grammar2UmlScanner;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -15,7 +15,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 /**
- * Testing Relast2Uml without parser.
+ * Testing Grammar2Uml without parser.
  *
  * @author rschoene - Initial contribution
  */
@@ -29,8 +29,8 @@ public class SimpleMain {
   private static void createManualAST() {
     System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
     System.setProperty("mustache.debug", "true");
-    Relast2Uml model = new Relast2Uml();
-    Path path = Paths.get("relast2uml.base", "src", "test", "resources", "Example.relast");
+    Grammar2Uml model = new Grammar2Uml();
+    Path path = Paths.get("grammar2uml.base", "src", "test", "resources", "Example.relast");
     System.out.println("path.toFile().getAbsolutePath() = " + path.toFile().getAbsolutePath());
     Program program = parseProgram(path);
     model.setProgram(program);
@@ -57,8 +57,8 @@ public class SimpleMain {
 
   private static Program parseProgram(Path path) {
     try (BufferedReader reader = Files.newBufferedReader(path)) {
-      Relast2UmlScanner scanner = new Relast2UmlScanner(reader);
-      Relast2UmlParser parser = new Relast2UmlParser();
+      Grammar2UmlScanner scanner = new Grammar2UmlScanner(reader);
+      Grammar2UmlParser parser = new Grammar2UmlParser();
       GrammarFile grammarFile = (GrammarFile) parser.parse(scanner);
       Program program = new Program();
       program.addGrammarFile(grammarFile);
diff --git a/relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/Utils.java b/grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/Utils.java
similarity index 90%
rename from relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/Utils.java
rename to grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/Utils.java
index 1a7c04f2926fc0a23dc4f69810f0c2c1ba6ed49b..e10374b3155f7a394cf44a32a1dc06315d455382 100644
--- a/relast2uml.base/src/main/java/org/jastadd/relast2uml/compiler/Utils.java
+++ b/grammar2uml/src/main/java/org/jastadd/grammar2uml/compiler/Utils.java
@@ -1,4 +1,4 @@
-package org.jastadd.relast2uml.compiler;
+package org.jastadd.grammar2uml.compiler;
 
 import java.util.*;
 import java.util.function.Predicate;
diff --git a/relast2uml.base/src/main/resources/Containment.mustache b/grammar2uml/src/main/resources/Containment.mustache
similarity index 100%
rename from relast2uml.base/src/main/resources/Containment.mustache
rename to grammar2uml/src/main/resources/Containment.mustache
diff --git a/relast2uml.base/src/main/resources/Folder.mustache b/grammar2uml/src/main/resources/Folder.mustache
similarity index 100%
rename from relast2uml.base/src/main/resources/Folder.mustache
rename to grammar2uml/src/main/resources/Folder.mustache
diff --git a/relast2uml.base/src/main/resources/Inheritance.mustache b/grammar2uml/src/main/resources/Inheritance.mustache
similarity index 100%
rename from relast2uml.base/src/main/resources/Inheritance.mustache
rename to grammar2uml/src/main/resources/Inheritance.mustache
diff --git a/relast2uml.base/src/main/resources/Relation.mustache b/grammar2uml/src/main/resources/Relation.mustache
similarity index 100%
rename from relast2uml.base/src/main/resources/Relation.mustache
rename to grammar2uml/src/main/resources/Relation.mustache
diff --git a/relast2uml.base/src/main/resources/TypeDecl.mustache b/grammar2uml/src/main/resources/TypeDecl.mustache
similarity index 100%
rename from relast2uml.base/src/main/resources/TypeDecl.mustache
rename to grammar2uml/src/main/resources/TypeDecl.mustache
diff --git a/relast2uml.base/src/main/resources/relast2uml.mustache b/grammar2uml/src/main/resources/grammar2uml.mustache
similarity index 100%
rename from relast2uml.base/src/main/resources/relast2uml.mustache
rename to grammar2uml/src/main/resources/grammar2uml.mustache
diff --git a/relast2uml.base/src/main/resources/relast2umlVersion.properties b/grammar2uml/src/main/resources/grammar2umlVersion.properties
similarity index 100%
rename from relast2uml.base/src/main/resources/relast2umlVersion.properties
rename to grammar2uml/src/main/resources/grammar2umlVersion.properties
diff --git a/relast2uml.base/src/main/resources/log4j2.xml b/grammar2uml/src/main/resources/log4j2.xml
similarity index 100%
rename from relast2uml.base/src/main/resources/log4j2.xml
rename to grammar2uml/src/main/resources/log4j2.xml
diff --git a/relast2uml.base/src/test/java/org/jastadd/relast2uml/test/CompilerTest.java b/grammar2uml/src/test/java/org/jastadd/grammar2uml/test/CompilerTest.java
similarity index 86%
rename from relast2uml.base/src/test/java/org/jastadd/relast2uml/test/CompilerTest.java
rename to grammar2uml/src/test/java/org/jastadd/grammar2uml/test/CompilerTest.java
index 08174e4053964ff5154671bb8afe764d7f14c314..bf5af06acffe0e527a2f13e7890a6a8eee6bc683 100644
--- a/relast2uml.base/src/test/java/org/jastadd/relast2uml/test/CompilerTest.java
+++ b/grammar2uml/src/test/java/org/jastadd/grammar2uml/test/CompilerTest.java
@@ -1,7 +1,7 @@
-package org.jastadd.relast2uml.test;
+package org.jastadd.grammar2uml.test;
 
 import org.jastadd.relast.compiler.CompilerException;
-import org.jastadd.relast2uml.compiler.Compiler;
+import org.jastadd.grammar2uml.compiler.Compiler;
 import org.junit.jupiter.api.Test;
 
 import java.io.File;
@@ -22,9 +22,9 @@ public class CompilerTest {
 
     System.out.println("Running test in directory '" + Paths.get(".").toAbsolutePath() + "'.");
     assertTrue(Paths.get(inputGrammar).toFile().exists(), "input grammar does not exist");
-    assertTrue(Paths.get(inputRelast2Uml).toFile().exists(), "input relast2uml does not exist");
+    assertTrue(Paths.get(inputRelast2Uml).toFile().exists(), "input grammar2uml does not exist");
     assertFalse(Paths.get(inputGrammar).toFile().isDirectory(), "input grammar is a directory");
-    assertFalse(Paths.get(inputRelast2Uml).toFile().isDirectory(), "input relast2uml is a directory");
+    assertFalse(Paths.get(inputRelast2Uml).toFile().isDirectory(), "input grammar2uml is a directory");
 
     File outputFile = Paths.get(output).toFile();
     File outputDirFile = outputFile.getParentFile();
@@ -44,6 +44,6 @@ public class CompilerTest {
 
   @Test
   void transformMinimalExample() throws CompilerException {
-    transform("src/test/resources/Example.relast", "src/test/resources/Example.relast2uml", "src/test/resources/uml.md");
+    transform("src/test/resources/Example.relast", "src/test/resources/Example.grammar2uml", "src/test/resources/uml.md");
   }
 }
diff --git a/relast2uml.base/src/test/resources/.gitignore b/grammar2uml/src/test/resources/.gitignore
similarity index 100%
rename from relast2uml.base/src/test/resources/.gitignore
rename to grammar2uml/src/test/resources/.gitignore
diff --git a/relast2uml.base/src/test/resources/Example.relast2uml b/grammar2uml/src/test/resources/Example.grammar2uml
similarity index 100%
rename from relast2uml.base/src/test/resources/Example.relast2uml
rename to grammar2uml/src/test/resources/Example.grammar2uml
diff --git a/relast2uml.base/src/test/resources/Example.relast b/grammar2uml/src/test/resources/Example.relast
similarity index 100%
rename from relast2uml.base/src/test/resources/Example.relast
rename to grammar2uml/src/test/resources/Example.relast
diff --git a/relast2uml.base/src/test/resources/log4j2.xml b/grammar2uml/src/test/resources/log4j2.xml
similarity index 100%
rename from relast2uml.base/src/test/resources/log4j2.xml
rename to grammar2uml/src/test/resources/log4j2.xml
diff --git a/relast2uml.base/src/main/jastadd/Navigation.jrag b/relast2uml.base/src/main/jastadd/Navigation.jrag
deleted file mode 100644
index 052410f4447c25aca0770fe97c1ba4d7cc1e9efa..0000000000000000000000000000000000000000
--- a/relast2uml.base/src/main/jastadd/Navigation.jrag
+++ /dev/null
@@ -1,19 +0,0 @@
-aspect Navigation {
-
-  // --- program ---
-  eq Relast2Uml.getChild().program() = getProgram();
-  eq MRelast2Uml.getChild().program() = getRelast2Uml().program();
-
-  // --- relast2uml ---
-  inh Relast2Uml ASTNode.relast2uml();
-  eq Relast2Uml.getChild().relast2uml() = this;
-  eq MRelast2Uml.getChild().relast2uml() = getRelast2Uml();
-
-  // --- containedFile ---
-  eq Relast2Uml.getChild().containedFile() = null;
-
-  // --- containedFileName ---
-  eq Relast2Uml.getChild().containedFileName() = getFileName();
-  eq Program.getChild().containedFileName() = null;
-  eq MRelast2Uml.getChild().containedFileName() = null;
-}
diff --git a/relast2uml.base/src/main/jastadd/parser/Preamble.parser b/relast2uml.base/src/main/jastadd/parser/Preamble.parser
deleted file mode 100644
index 77d6d2b5d96a4e66781b93ff2e299de21cc4b199..0000000000000000000000000000000000000000
--- a/relast2uml.base/src/main/jastadd/parser/Preamble.parser
+++ /dev/null
@@ -1,7 +0,0 @@
-%header {:
-package org.jastadd.relast2uml.parser;
-import org.jastadd.relast2uml.ast.*;
-:};
-
-%goal goal;
-%goal relast2uml;
diff --git a/relast2uml.base/src/main/jastadd/scanner/Header.flex b/relast2uml.base/src/main/jastadd/scanner/Header.flex
deleted file mode 100644
index 7c076bf3f48634ab54a550423951225d0b940638..0000000000000000000000000000000000000000
--- a/relast2uml.base/src/main/jastadd/scanner/Header.flex
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.jastadd.relast2uml.scanner;
-
-import org.jastadd.relast2uml.parser.Relast2UmlParser.Terminals;
-%%
-
-%public
-%final
-%class Relast2UmlScanner
-%extends beaver.Scanner
-
-%type beaver.Symbol
-%function nextToken
-%yylexthrow beaver.Scanner.Exception
-%scanerror Relast2UmlScanner.ScannerError
-
-%x COMMENT
-%s DECLARATION
-
-%line
-%column
diff --git a/settings.gradle b/settings.gradle
index 4737356612d25382408eb63d8dc372361edb6eb5..eb0d566fd20cf8b162d936b2b7ec901310be1418 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,4 @@
 rootProject.name = 'relast2uml'
 
 include 'relast.preprocessor'
-include 'relast2uml.base'
+include 'grammar2uml'