diff --git a/build.gradle b/build.gradle
index 43db1bf2bf8a91e168f83ca277f8716ee2ef343a..f4cf66f90772b7049fc3f0ad0447921e837d0c53 100644
--- a/build.gradle
+++ b/build.gradle
@@ -28,7 +28,7 @@ buildscript {
 idea.module.generatedSourceDirs += file('src/gen/java')
 
 sourceSets.main.java.srcDir "src/gen/java"
-jar.manifest.attributes('Main-Class': 'de.tudresden.inf.st.pnml.Main')
+jar.manifest.attributes('Main-Class': 'de.tudresden.inf.st.pnml.splitter.Main')
 
 
 configurations {
@@ -36,6 +36,9 @@ configurations {
 }
 
 dependencies {
+
+    implementation project(':pnml-relast-base')
+
     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 group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
@@ -66,13 +69,11 @@ dependencies {
 // Default run configuration
 
 run {
-    mainClassName = 'de.tudresden.inf.st.pnml.Main'
+    mainClassName = 'de.tudresden.inf.st.pnml.splitter.Main'
     standardInput = System.in
 }
 
 // Generated files
-def ecoreFile = "./src/main/resources/placeTransition.ecore"
-def relastAspect = "./src/gen/jastadd/pnml/placeTransition.ecore.jadd"
 def relastFile = "./src/gen/jastadd/pnml/placeTransition.relast"
 
 jar {
@@ -93,24 +94,6 @@ jar {
 
 }
 
-// First phase: Ecore -> RelAst
-task ecoreToRelast(type: JavaExec) {
-    group = 'Build'
-    main = "-jar"
-
-
-    doFirst {
-        delete "src/gen/jastadd"
-        mkdir "src/gen/jastadd/pnml"
-    }
-
-    args "libs/ecore2relast-0.1.jar", ecoreFile, relastFile
-
-    inputs.files file(ecoreFile)
-    outputs.files file(relastFile), file(relastAspect)
-}
-
-// Second phase: RelAst -> JastAdd
 task relastToJastAdd(type: JavaExec) {
     group = 'Build'
     main = "-jar"
@@ -128,30 +111,6 @@ task relastToJastAdd(type: JavaExec) {
             "../pnml-relast-base/src/main/jastadd/clauses/expressions.relast"
 }
 
-task generateBeaver(type: JavaExec) {
-
-    inputs.files {
-        project.file("../pnml-relast-base/src/main/jastadd/clauses/Parser.beaver")
-    }
-    outputs.dir {
-        // This closure is needed to delay reading the genDir setting.
-        project.file("../pnml-relast-base/src/gen/java/de/tudresden/inf/st/pnml/jastadd/parser")
-    }
-
-    classpath = configurations.myBeaver
-    main = 'beaver.comp.run.Make'
-
-    doFirst {
-        def outdir = project.file("src/gen/java/de/tudresden/inf/st/pnml/jastadd/parser")
-        if (!outdir.isDirectory()) {
-            outdir.mkdirs()
-        }
-        def inputFile = project.file("../pnml-relast-base/src/main/jastadd/clauses/Parser.beaver")
-        args ([ '-d', outdir.path, '-t', '-c', '-w', inputFile.path ])
-    }
-}
-
-// Third phase: JastAdd -> Java (using JastAdd Gradle plugin)
 jastadd {
 
     configureModuleBuild()
@@ -168,28 +127,28 @@ jastadd {
             }
 
             jastadd {
-                include "src/main/jastadd/**/*.ast"
-                include "src/main/jastadd/**/*.jadd"
-                include "src/main/jastadd/**/*.jrag"
-                include "src/gen/jastadd/**/*.ast"
-                include "src/gen/jastadd/**/*.jadd"
-                include "src/gen/jastadd/**/*.jrag"
-
-                include "../pnml-relast-base/src/main/jastadd/**/*.ast"
-                include "../pnml-relast-base/src/main/jastadd/**/*.jadd"
-                include "../pnml-relast-base/src/main/jastadd/**/*.jrag"
-                include "../pnml-relast-base/src/gen/jastadd/**/*.ast"
-                include "../pnml-relast-base/src/gen/jastadd/**/*.jadd"
-                include "../pnml-relast-base/src/gen/jastadd/**/*.jrag"
+                basedir ".."
+                include "pnml-relast-splitter/src/main/jastadd/**/*.ast"
+                include "pnml-relast-splitter/src/main/jastadd/**/*.jadd"
+                include "pnml-relast-splitter/src/main/jastadd/**/*.jrag"
+
+                include "pnml-relast-base/src/main/jastadd/**/*.ast"
+                include "pnml-relast-base/src/main/jastadd/**/*.jadd"
+                include "pnml-relast-base/src/main/jastadd/**/*.jrag"
+                include "pnml-relast-base/src/gen/jastadd/**/*.ast"
+                include "pnml-relast-base/src/gen/jastadd/**/*.jadd"
+                include "pnml-relast-base/src/gen/jastadd/**/*.jrag"
             }
 
             scanner {
-                include "../pnml-relast-base/main/jastadd/PnmlScanner.flex"
-                include "../pnml-relast-base/jastadd/clauses/expressions.flex"
+                basedir ".."
+                include "pnml-relast-base/main/jastadd/PnmlScanner.flex"
+                include "pnml-relast-base/jastadd/clauses/expressions.flex"
             }
 
             parser {
-                include "../pnml-relast-base/jastadd/PnmlParser.parser"
+                basedir ".."
+                include "pnml-relast-base/jastadd/PnmlParser.parser"
             }
         }
     }
@@ -215,8 +174,9 @@ jastadd {
 }
 
 // Workflow configuration for phases
-relastToJastAdd.dependsOn ecoreToRelast
+relastToJastAdd.dependsOn ":pnml-relast-base:ecoreToRelast"
 generateAst.dependsOn relastToJastAdd
-compileJava.dependsOn generateBeaver
+compileJava.dependsOn ":pnml-relast-base:generateBeaver"
 //// always run jastadd
 //jastadd.outputs.upToDateWhen {false}
+
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index 0d4ff7823810ae1346d8b16bcd15feefda06e314..0000000000000000000000000000000000000000
--- a/settings.gradle
+++ /dev/null
@@ -1 +0,0 @@
-rootProject.name = 'pnml-splitter'
diff --git a/src/main/jastadd/conversion/PrimitiveElements.jadd b/src/main/jastadd/conversion/PrimitiveElements.jadd
index 8351ba3940bb7db0859bfbd5bf01156bae8c8782..8693c88899512a8475850c70486b292f4fbca7ae 100644
--- a/src/main/jastadd/conversion/PrimitiveElements.jadd
+++ b/src/main/jastadd/conversion/PrimitiveElements.jadd
@@ -1,11 +1,11 @@
 aspect PrimitivesConversion {
 
     syn fr.lip6.move.pnml.ptnet.hlapi.TransitionHLAPI InputSignalTransition.convertToPnmlObject(){
-        return de.tudresden.inf.st.export.PrimitiveElementsConverter.convertTransitionToPnmlObject(this);
+        return de.tudresden.inf.st.pnml.splitter.export.PrimitiveElementsConverter.convertTransitionToPnmlObject(this);
     }
 
     syn fr.lip6.move.pnml.ptnet.hlapi.PlaceHLAPI OutputSignalPlace.convertToPnmlObject(){
-        return de.tudresden.inf.st.export.PrimitiveElementsConverter.convertPlaceToPnmlObject(this);
+        return de.tudresden.inf.st.pnml.splitter.export.PrimitiveElementsConverter.convertPlaceToPnmlObject(this);
     }
 
     //syn fr.lip6.move.pnml.ptnet.hlapi.ArcHLAPI Arc.convertToPnmlObject(){
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java
index bfed28f13657d66a811d3ad6e3bc057d90ba34e4..c31ec6d559c96bae17e3cc730baafae64ae9725d 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java
@@ -1,8 +1,8 @@
 package de.tudresden.inf.st.pnml.splitter;
 
+import de.tudresden.inf.st.pnml.base.parsing.PnmlParser;
 import de.tudresden.inf.st.pnml.splitter.export.PnmlExporter;
 import de.tudresden.inf.st.pnml.jastadd.model.*;
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.PetriNet;
 import de.tudresden.inf.st.pnml.splitter.postprocessing.GlobalToLocalNetsPostProcessor;
 import de.tudresden.inf.st.pnml.splitter.postprocessing.PostProcessingUtils;
 import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException;
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java
index afc2a08a469f05a5adac0b7ea9b2b89803995dae..fa30c7fb64a27eb393aa160c056107e2ecf6f287 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/copy/CopyPrimitiveElements.java
@@ -1,9 +1,9 @@
 package de.tudresden.inf.st.pnml.splitter.copy;
 
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.DefaultTransitionInformation;
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.InputSignalBinding;
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.InputSignalTransition;
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.TransitionInformation;
+import de.tudresden.inf.st.pnml.jastadd.model.DefaultTransitionInformation;
+import de.tudresden.inf.st.pnml.jastadd.model.InputSignalBinding;
+import de.tudresden.inf.st.pnml.jastadd.model.InputSignalTransition;
+import de.tudresden.inf.st.pnml.jastadd.model.TransitionInformation;
 
 public class CopyPrimitiveElements {
 
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/ComplexElementsConverter.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/ComplexElementsConverter.java
index 1bc7f82632018bc0258ce82b01e3d04ab89e3c0c..d9965b0a6dabbbe04ba076c70c849d64aaaaf644 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/ComplexElementsConverter.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/ComplexElementsConverter.java
@@ -1,7 +1,7 @@
 package de.tudresden.inf.st.pnml.splitter.export;
 
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.Page;
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.PetriNet;
+import de.tudresden.inf.st.pnml.jastadd.model.Page;
+import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
 import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException;
 import fr.lip6.move.pnml.framework.utils.exception.VoidRepositoryException;
 import fr.lip6.move.pnml.ptnet.PNType;
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java
index 957026ff95b43bd68cad7c2f5464fb215f418511..7bd046c738b6adc1b2b4ca81a020ba5dbde59add 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java
@@ -1,7 +1,6 @@
 package de.tudresden.inf.st.pnml.splitter.export;
 
 import de.tudresden.inf.st.pnml.jastadd.model.*;
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.*;
 import fr.lip6.move.pnml.framework.general.PnmlExport;
 import fr.lip6.move.pnml.framework.utils.ModelRepository;
 import fr.lip6.move.pnml.framework.utils.exception.*;
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PrimitiveElementsConverter.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PrimitiveElementsConverter.java
index 4b41089463d6ccea8983fda8d9ee4f8d5b7ecee8..66d595a7942eb717e16b170b55a8d7ff8fcaf20b 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PrimitiveElementsConverter.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PrimitiveElementsConverter.java
@@ -1,7 +1,6 @@
 package de.tudresden.inf.st.pnml.splitter.export;
 
 import de.tudresden.inf.st.pnml.jastadd.model.*;
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.*;
 import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException;
 import fr.lip6.move.pnml.framework.utils.exception.VoidRepositoryException;
 import fr.lip6.move.pnml.ptnet.hlapi.*;
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java
index a056d251beb4ba6bac1980a90a1b1e27bbeadadb..a06c307335824d06c5a05b0ac287bb8ed3e235a6 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java
@@ -1,11 +1,10 @@
 package de.tudresden.inf.st.pnml.splitter.postprocessing;
 
 import de.tudresden.inf.st.pnml.splitter.constants.SplitterPnmlConstants;
-import de.tudresden.inf.st.constants.PnmlConstants;
+import de.tudresden.inf.st.pnml.base.constants.PnmlConstants;
 import de.tudresden.inf.st.pnml.splitter.export.PnmlExporter;
-import de.tudresden.inf.st.pnml.PnmlParser;
+import de.tudresden.inf.st.pnml.base.parsing.*;
 import de.tudresden.inf.st.pnml.jastadd.model.*;
-import de.tudresden.inf.st.pnml.splitter.pnml.jastadd.model.*;
 import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java
index e32e1d4ccb37421d8618100119bd9d2afd6928c3..c1abcfa78483acdc0bc2502051e2099c11a43b3a 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java
@@ -1,6 +1,6 @@
 package de.tudresden.inf.st.pnml.splitter.postprocessing;
 
-import de.tudresden.inf.st.constants.PnmlConstants;
+import de.tudresden.inf.st.pnml.base.constants.PnmlConstants;
 import de.tudresden.inf.st.pnml.splitter.copy.CopyPrimitiveElements;
 import de.tudresden.inf.st.pnml.splitter.data.Tuple3;
 import de.tudresden.inf.st.pnml.jastadd.model.*;