diff --git a/settings.gradle b/settings.gradle
index 0c705c21afae601469f6caa4c7e1c6c2b48d37e4..03d6f56347c9530c9934ffff0a09e88ef657bacc 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,5 @@
 rootProject.name = 'ifm-refactoring-jastadd'
 
-include 'statemachine'
+include 'statemachine.base'
+include 'statemachine.drast'
 include 'ragdoc-view'
diff --git a/statemachine/.gitignore b/statemachine.base/.gitignore
similarity index 85%
rename from statemachine/.gitignore
rename to statemachine.base/.gitignore
index 1ff83bae793351073fb8c6fdf7ad16dde44aeeed..19ad8f831544c2661c133c48b7da7a78df83a50d 100644
--- a/statemachine/.gitignore
+++ b/statemachine.base/.gitignore
@@ -5,4 +5,3 @@ src/gen-res/
 /bin/
 logs/
 /doc/
-DrAST.cfg
diff --git a/statemachine/build.gradle b/statemachine.base/build.gradle
similarity index 82%
rename from statemachine/build.gradle
rename to statemachine.base/build.gradle
index 3e1e392fd76220d282b152944898b343c37f24a2..bf89dae982609fd55238deb529ebd469c6bf7055 100644
--- a/statemachine/build.gradle
+++ b/statemachine.base/build.gradle
@@ -36,8 +36,6 @@ task cleanRagdoc(type: Delete) {
 dependencies {
     implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_version}"
     implementation group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
-    implementation files('../libs/DrAST-1.2.2.jar')
-    implementation fileTree(dir: "${System.properties['java.home']}", include: '**/jfxrt.jar')
 
     jastadd2 "org.jastadd:jastadd:2.3.4"
     ragdoc files('../libs/rd-builder.jar')
@@ -64,26 +62,6 @@ jar {
     }
 }
 
-task jarDrAst(type: Jar) {
-    group = "build"
-    description = 'create a jar to runthe DrAST visual debugger tool'
-    manifest {
-        attributes 'Implementation-Title': 'DrAST visual debugger tool for StateMachine',
-                'Implementation-Version': project.version,
-                'Main-Class': 'de.tudresden.inf.st.statemachine.DrAstRunner'
-    }
-    archivesBaseName = 'drast-statemachine-all'
-    from { sourceSets.main.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
-    with jar
-}
-
-task runDrAST(type: JavaExec, dependsOn: jar) {
-    group = "application"
-    description = 'run the DrAST visual debugger tool'
-    classpath = sourceSets.main.runtimeClasspath
-    main = 'de.tudresden.inf.st.statemachine.DrAstRunner'
-}
-
 def relastFiles = fileTree('src/main/jastadd/') { include '**/*.relast' } +
         fileTree('src/gen/jastadd/') { include '**/*.relast' }
 String[] relastArguments = [
diff --git a/statemachine/src/main/jastadd/Analysis.jrag b/statemachine.base/src/main/jastadd/Analysis.jrag
similarity index 100%
rename from statemachine/src/main/jastadd/Analysis.jrag
rename to statemachine.base/src/main/jastadd/Analysis.jrag
diff --git a/statemachine/src/main/jastadd/NameAnalysis.jrag b/statemachine.base/src/main/jastadd/NameAnalysis.jrag
similarity index 100%
rename from statemachine/src/main/jastadd/NameAnalysis.jrag
rename to statemachine.base/src/main/jastadd/NameAnalysis.jrag
diff --git a/statemachine/src/main/jastadd/Navigation.jrag b/statemachine.base/src/main/jastadd/Navigation.jrag
similarity index 100%
rename from statemachine/src/main/jastadd/Navigation.jrag
rename to statemachine.base/src/main/jastadd/Navigation.jrag
diff --git a/statemachine/src/main/jastadd/Printing.jrag b/statemachine.base/src/main/jastadd/Printing.jrag
similarity index 100%
rename from statemachine/src/main/jastadd/Printing.jrag
rename to statemachine.base/src/main/jastadd/Printing.jrag
diff --git a/statemachine/src/main/jastadd/Reachability.jrag b/statemachine.base/src/main/jastadd/Reachability.jrag
similarity index 100%
rename from statemachine/src/main/jastadd/Reachability.jrag
rename to statemachine.base/src/main/jastadd/Reachability.jrag
diff --git a/statemachine/src/main/jastadd/SMtoDotG.jrag b/statemachine.base/src/main/jastadd/SMtoDotG.jrag
similarity index 100%
rename from statemachine/src/main/jastadd/SMtoDotG.jrag
rename to statemachine.base/src/main/jastadd/SMtoDotG.jrag
diff --git a/statemachine/src/main/jastadd/StateMachineParser.parser b/statemachine.base/src/main/jastadd/StateMachineParser.parser
similarity index 100%
rename from statemachine/src/main/jastadd/StateMachineParser.parser
rename to statemachine.base/src/main/jastadd/StateMachineParser.parser
diff --git a/statemachine/src/main/jastadd/StateMachineScanner.flex b/statemachine.base/src/main/jastadd/StateMachineScanner.flex
similarity index 100%
rename from statemachine/src/main/jastadd/StateMachineScanner.flex
rename to statemachine.base/src/main/jastadd/StateMachineScanner.flex
diff --git a/statemachine/src/main/jastadd/Util.jadd b/statemachine.base/src/main/jastadd/Util.jadd
similarity index 100%
rename from statemachine/src/main/jastadd/Util.jadd
rename to statemachine.base/src/main/jastadd/Util.jadd
diff --git a/statemachine/src/main/jastadd/Util.jrag b/statemachine.base/src/main/jastadd/Util.jrag
similarity index 100%
rename from statemachine/src/main/jastadd/Util.jrag
rename to statemachine.base/src/main/jastadd/Util.jrag
diff --git a/statemachine/src/main/java/de/tudresden/inf/st/statemachine/Main.java b/statemachine.base/src/main/java/de/tudresden/inf/st/statemachine/Main.java
similarity index 100%
rename from statemachine/src/main/java/de/tudresden/inf/st/statemachine/Main.java
rename to statemachine.base/src/main/java/de/tudresden/inf/st/statemachine/Main.java
diff --git a/statemachine/src/main/java/de/tudresden/inf/st/statemachine/ParserUtils.java b/statemachine.base/src/main/java/de/tudresden/inf/st/statemachine/ParserUtils.java
similarity index 100%
rename from statemachine/src/main/java/de/tudresden/inf/st/statemachine/ParserUtils.java
rename to statemachine.base/src/main/java/de/tudresden/inf/st/statemachine/ParserUtils.java
diff --git a/statemachine/src/main/resources/StateMachine.ecore b/statemachine.base/src/main/resources/StateMachine.ecore
similarity index 100%
rename from statemachine/src/main/resources/StateMachine.ecore
rename to statemachine.base/src/main/resources/StateMachine.ecore
diff --git a/statemachine/src/main/resources/log4j2.xml b/statemachine.base/src/main/resources/log4j2.xml
similarity index 100%
rename from statemachine/src/main/resources/log4j2.xml
rename to statemachine.base/src/main/resources/log4j2.xml
diff --git a/statemachine/src/test/java/de/tudresden/inf/st/statemachine/ParserTest.java b/statemachine.base/src/test/java/de/tudresden/inf/st/statemachine/ParserTest.java
similarity index 100%
rename from statemachine/src/test/java/de/tudresden/inf/st/statemachine/ParserTest.java
rename to statemachine.base/src/test/java/de/tudresden/inf/st/statemachine/ParserTest.java
diff --git a/statemachine/src/test/resources/machine_one.sm b/statemachine.base/src/test/resources/machine_one.sm
similarity index 100%
rename from statemachine/src/test/resources/machine_one.sm
rename to statemachine.base/src/test/resources/machine_one.sm
diff --git a/statemachine/src/test/resources/telephone.sm b/statemachine.base/src/test/resources/telephone.sm
similarity index 100%
rename from statemachine/src/test/resources/telephone.sm
rename to statemachine.base/src/test/resources/telephone.sm
diff --git a/statemachine.drast/.gitignore b/statemachine.drast/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..22a2065603d1ed09313d50b461f66e4c713c1efe
--- /dev/null
+++ b/statemachine.drast/.gitignore
@@ -0,0 +1,4 @@
+build/
+/bin/
+logs/
+DrAST.cfg
diff --git a/statemachine/DrASTGUI.cfg b/statemachine.drast/DrASTGUI.cfg
similarity index 100%
rename from statemachine/DrASTGUI.cfg
rename to statemachine.drast/DrASTGUI.cfg
diff --git a/statemachine.drast/build.gradle b/statemachine.drast/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..8fb499104ace1c89c55531cf918672b63a355192
--- /dev/null
+++ b/statemachine.drast/build.gradle
@@ -0,0 +1,49 @@
+group 'de.tudresden.inf.st'
+version '0.1'
+
+apply plugin: 'java'
+apply plugin: 'application'
+apply plugin: "idea"
+
+sourceCompatibility = 1.8
+
+repositories {
+    mavenCentral()
+}
+
+dependencies {
+	implementation project(':statemachine.base')
+    implementation files('../libs/DrAST-1.2.2.jar')
+    implementation fileTree(dir: "${System.properties['java.home']}", include: '**/jfxrt.jar')
+}
+
+run {
+    mainClassName = 'de.tudresden.inf.st.statemachine.DrAstRunner'
+    standardInput = System.in
+}
+
+task jarDrAst(type: Jar, dependsOn: ':statemachine.base:jar') {
+    group = "build"
+    description = 'create a jar to run the DrAST visual debugger tool'
+    manifest {
+        attributes 'Implementation-Title': 'DrAST visual debugger tool for StateMachine',
+                'Implementation-Version': project.version,
+                'Main-Class': 'de.tudresden.inf.st.statemachine.DrAstRunner'
+    }
+    archivesBaseName = 'drast-statemachine-all'
+    from { sourceSets.main.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
+    with jar
+}
+
+task runDrAST(type: JavaExec, dependsOn: [jar, ':statemachine.base:jar']) {
+    group = "application"
+    description = 'run the DrAST visual debugger tool'
+    classpath = sourceSets.main.runtimeClasspath
+    main = 'de.tudresden.inf.st.statemachine.DrAstRunner'
+}
+
+sourceSets {
+    main {
+        java.srcDir "src/main/java"
+    }
+}
diff --git a/statemachine/filter.fcl b/statemachine.drast/filter.fcl
similarity index 100%
rename from statemachine/filter.fcl
rename to statemachine.drast/filter.fcl
diff --git a/statemachine/run_DrAST.sh b/statemachine.drast/run_DrAST.sh
similarity index 100%
rename from statemachine/run_DrAST.sh
rename to statemachine.drast/run_DrAST.sh
diff --git a/statemachine/src/main/java/de/tudresden/inf/st/statemachine/DrAstRunner.java b/statemachine.drast/src/main/java/de/tudresden/inf/st/statemachine/DrAstRunner.java
similarity index 94%
rename from statemachine/src/main/java/de/tudresden/inf/st/statemachine/DrAstRunner.java
rename to statemachine.drast/src/main/java/de/tudresden/inf/st/statemachine/DrAstRunner.java
index 2fd811e0f2604e506ea8634a0a6943a88d5767de..91c5a030746fafcd687b31b3c57ac43da5f6c495 100644
--- a/statemachine/src/main/java/de/tudresden/inf/st/statemachine/DrAstRunner.java
+++ b/statemachine.drast/src/main/java/de/tudresden/inf/st/statemachine/DrAstRunner.java
@@ -37,7 +37,7 @@ public class DrAstRunner extends DrASTGUI {
 
   private static void openView() {
     guiHasBeenCreated = true;
-    DrASTSettings.put(DrASTSettings.PREV_JAR, "build/libs/statemachine-0.1.jar");
+    DrASTSettings.put(DrASTSettings.PREV_JAR, "../statemachine.base/build/libs/statemachine-0.1.jar");
     DrASTSettings.put(DrASTSettings.PREV_TAIL_ARGS, "-Dlog4j2.disable.jmx=true");
     launch();
     con.onApplicationClose();
@@ -71,7 +71,7 @@ public class DrAstRunner extends DrASTGUI {
     mon.setGraphView(graphview);
     con.init(mon);
     Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
-    stage.setTitle("DrAST 1.2.2");
+    stage.setTitle("Statemachine DrAST 1.2.2");
     stage.setScene(new Scene(rootView, primaryScreenBounds.getWidth(), primaryScreenBounds.getHeight() - 100.0D));
     stage.show();
     ScrollPane center = (ScrollPane)rootView.lookup("#graphViewScrollPane");
diff --git a/statemachine.drast/src/main/resources/log4j2.xml b/statemachine.drast/src/main/resources/log4j2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e4e4e60bb113aba11ed15238f3033a72a74096ab
--- /dev/null
+++ b/statemachine.drast/src/main/resources/log4j2.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="Console">
+            <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level} %c{1.} - %msg%n"/>
+        </Console>
+        <RollingFile name="RollingFile" fileName="logs/statemachine.log"
+                    filePattern="logs/statemachine-%i.log">
+            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>
+            <Policies>
+                <OnStartupTriggeringPolicy/>
+            </Policies>
+            <DefaultRolloverStrategy max="20"/>
+        </RollingFile>
+    </Appenders>
+    <Loggers>
+        <Root level="info">
+            <AppenderRef ref="Console"/>
+            <AppenderRef ref="RollingFile"/>
+        </Root>
+    </Loggers>
+</Configuration>