diff --git a/statemachine.solution/build.gradle b/statemachine.solution/build.gradle
index c3cd01ee142c60cbdb00f3729ac19b3149638097..4fb46120bd6bdc2271d6b377df225f6797e98a4c 100644
--- a/statemachine.solution/build.gradle
+++ b/statemachine.solution/build.gradle
@@ -24,7 +24,7 @@ sourceSets.main.java.srcDir genSrc
 
 jar {
     from { sourceSets.main.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
-    manifest.attributes('Main-Class': 'de.tudresden.inf.st.statemachine.Main')
+    manifest.attributes('Main-Class': 'de.tudresden.inf.st.statemachine.BankMain')
 }
 
 dependencies {
@@ -38,15 +38,15 @@ dependencies {
 
 // Default run configuration
 run {
-    mainClassName = 'de.tudresden.inf.st.statemachine.Main'
+    mainClassName = 'de.tudresden.inf.st.statemachine.BankMain'
 }
 
 // Generated files
-def ecoreFile = "./src/main/resources/StateMachine.relast"
-def relastFile = "./src/gen/jastadd/StateMachine.relast"
+def roleragFile = "./src/main/resources/Bank.relast"
+def relastFile = "./src/gen/jastadd/Bank.relast"
 
 // First phase: Ecore -> RelAst
-task ecoreToRelast(type: JavaExec) {
+task roleragToRelast(type: JavaExec) {
     group = 'Build'
     main = "-jar"
 
@@ -58,9 +58,9 @@ task ecoreToRelast(type: JavaExec) {
 
     //args "../libs/ecore2relast-0.1.jar", ecoreFile, relastFile
     args "../libs/RoleRag-0.2.0.jar", "--inputBaseDir=src/main/resources",
-            "--outputBaseDir=src/gen/jastadd", "StateMachine.relast"
+            "--outputBaseDir=src/gen/jastadd", "Bank.relast"
 
-    inputs.files file(ecoreFile)
+    inputs.files file(roleragFile)
     outputs.files file(relastFile)
 }
 
@@ -93,7 +93,7 @@ task relastToJastAdd(type: JavaExec) {
     main = "-jar"
 
     args "../libs/relast.jar",
-            "--grammarName=./src/gen/jastadd/StateMachine",
+            "--grammarName=./src/gen/jastadd/Bank",
             "--useJastAddNames",
             "--listClass=ArrayList",
             "--jastAddList=JastAddList",
@@ -102,14 +102,14 @@ task relastToJastAdd(type: JavaExec) {
             relastFile
 
     inputs.files relastFile
-    outputs.files file("./src/gen/jastadd/StateMachine.ast"), file("./src/gen/jastadd/StateMachine.jadd")
+    outputs.files file("./src/gen/jastadd/Bank.ast"), file("./src/gen/jastadd/Bank.jadd")
 }
 
 // Third phase: JastAdd -> Java (using JastAdd Gradle plugin)
 jastadd {
     configureModuleBuild()
     modules {
-        module("statemachine") {
+        module("bank") {
 
             java {
                 basedir "src/"
@@ -128,11 +128,11 @@ jastadd {
             }
 
             scanner {
-                include "src/main/jastadd/StateMachineScanner.flex"
+                include "src/main/jastadd/BankScanner.flex"
             }
 
             parser {
-                include "src/main/jastadd/StateMachineParser.parser"
+                include "src/main/jastadd/BankParser.parser"
             }
         }
     }
@@ -142,11 +142,11 @@ jastadd {
         delete "src/gen-res/BuildInfo.properties"
     }
 
-    module = "statemachine"
+    module = "bank"
 
     astPackage = 'de.tudresden.inf.st.statemachine.jastadd.model'
 
-    parser.name = 'StateMachineParser'
+    parser.name = 'BankParser'
 
     genDir = 'src/gen/java'
 
@@ -160,7 +160,7 @@ jastadd {
 }
 
 // Workflow configuration for phases
-relastToJastAdd.dependsOn ecoreToRelast
+relastToJastAdd.dependsOn roleragToRelast
 generateAst.dependsOn relastToJastAdd
 
 //// always run jastadd
diff --git a/statemachine.solution/src/main/jastadd/BankParser.parser b/statemachine.solution/src/main/jastadd/BankParser.parser
new file mode 100644
index 0000000000000000000000000000000000000000..fcf625fceccfdd1af9270befff7332fe839a173f
--- /dev/null
+++ b/statemachine.solution/src/main/jastadd/BankParser.parser
@@ -0,0 +1,26 @@
+%header {:
+// this code is inlined before the generated parser
+package de.tudresden.inf.st.statemachine.jastadd.parser;
+import de.tudresden.inf.st.statemachine.jastadd.model.*;
+import java.util.*;
+:};
+// Documentation links: http://beaver.sourceforge.net/spec.html and https://bitbucket.org/jastadd/jastaddparser
+
+%embed {:
+ // this code is inlined in the generated parser class
+ State initial;
+ List<State> finals = new ArrayList<>();
+:};
+
+%goal goal;
+
+// Productions with semantic actions building the JastAdd AST
+
+bank goal =
+  NAME.name
+    {:
+      Bank result = new Bank();
+      result.setName(name);
+      return result;
+    :}
+  ;
diff --git a/statemachine.solution/src/main/jastadd/BankScanner.flex b/statemachine.solution/src/main/jastadd/BankScanner.flex
new file mode 100644
index 0000000000000000000000000000000000000000..dbbccf626add052a39763ae670f65b50dca2b7e9
--- /dev/null
+++ b/statemachine.solution/src/main/jastadd/BankScanner.flex
@@ -0,0 +1,46 @@
+package de.tudresden.inf.st.statemachine.jastadd.scanner;
+
+import de.tudresden.inf.st.statemachine.jastadd.parser.BankParser.Terminals; // The terminals are implicitly defined in the parser
+%%
+// Documentation links: https://www.jflex.de/manual.html and http://beaver.sourceforge.net/scanners.html
+
+// define the signature for the generated scanner
+%public
+%final
+%class BankScanner
+%extends beaver.Scanner
+
+// the interface between the scanner and the parser is the nextToken() method
+%type beaver.Symbol
+%function nextToken
+%yylexthrow beaver.Scanner.Exception
+
+// store line and column information in the tokens
+%line
+%column
+
+// this code will be inlined in the body of the generated scanner class
+%{
+  private beaver.Symbol sym(short id) {
+    return new beaver.Symbol(id, yyline + 1, yycolumn + 1, yylength(), yytext());
+  }
+%}
+
+WhiteSpace = [ ] | \t | \f | \n | \r | \r\n
+Identifier = [:jletter:][:jletterdigit:]*
+
+%%
+
+// discard whitespace information
+{WhiteSpace}  { }
+
+// token definitions
+"initial"     { return sym(Terminals.INITIAL); }
+"final"       { return sym(Terminals.FINAL); }
+"state"       { return sym(Terminals.STATE); }
+"trans"       { return sym(Terminals.TRANS); }
+{Identifier}  { return sym(Terminals.NAME); }
+";"           { return sym(Terminals.SEMI); }
+":"           { return sym(Terminals.COLON); }
+"->"          { return sym(Terminals.ARROW); }
+<<EOF>>       { return sym(Terminals.EOF); }
diff --git a/statemachine.solution/src/main/java/de/tudresden/inf/st/statemachine/BankMain.java b/statemachine.solution/src/main/java/de/tudresden/inf/st/statemachine/BankMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6e16f8202012549f8544e5fd3d9b20ee1a13fe0
--- /dev/null
+++ b/statemachine.solution/src/main/java/de/tudresden/inf/st/statemachine/BankMain.java
@@ -0,0 +1,43 @@
+package de.tudresden.inf.st.statemachine;
+
+import beaver.Parser;
+import de.tudresden.inf.st.jastadd.dumpAst.ast.Dumper;
+//import de.tudresden.inf.st.statemachine.jastadd.model.State;
+//import de.tudresden.inf.st.statemachine.jastadd.model.StateMachine;
+//import de.tudresden.inf.st.statemachine.jastadd.model.Transition;
+import de.tudresden.inf.st.statemachine.jastadd.model.Bank;
+
+import java.io.IOException;
+import java.nio.file.Paths;
+import java.util.Set;
+
+public class BankMain {
+
+  @SuppressWarnings("WeakerAccess")
+  public static Object DrAST_root_node;
+
+  public static void main(String[] args) throws IOException, Parser.Exception {
+    Bank bank;
+    if (args.length == 0) {
+      bank = createExample();
+    } else {
+      // load the file given as first argument
+      bank = ParserUtils.load(Paths.get(args[0]));
+    }
+
+    System.out.println("Bankname: " + bank.getName());
+  }
+
+  private static Bank createExample() {
+    // manual construction of a simple statemachine
+    // (S) -- e --> (B) -- 1 --> (E)
+    //  ^            |
+    //  \            /
+    //  `---- 2 ----*
+    Bank b = new Bank();
+    b.setName("Peters Bank");
+
+    return b;
+  }
+
+}
diff --git a/statemachine.solution/src/main/resources/Bank.relast b/statemachine.solution/src/main/resources/Bank.relast
new file mode 100644
index 0000000000000000000000000000000000000000..7446e71dcdada607ed03681bcb8e803755a54e2b
--- /dev/null
+++ b/statemachine.solution/src/main/resources/Bank.relast
@@ -0,0 +1 @@
+Bank ::= <Name>;
diff --git a/statemachine.solution/src/main/resources/Example.relast b/statemachine.solution/src/main/resources/Example.relast
deleted file mode 100644
index 41f688a9b1d75f13fdad593bf7e606a50c6f3d5f..0000000000000000000000000000000000000000
--- a/statemachine.solution/src/main/resources/Example.relast
+++ /dev/null
@@ -1,9 +0,0 @@
-StateMachine ::= Element*;
-abstract Element ::= <Label:String>;
-State : Element ::=;
-Transition : Element ::=;
-
-rel StateMachine.initial -> State;
-rel StateMachine.final* -> State;
-rel State.outgoing* <-> Transition.from;
-rel State.incoming* <-> Transition.to;