diff --git a/.gitignore b/.gitignore
index d7ced3675308a654f35c67f1205f3a050658579b..051573f3c885095974327ed0ea733915690f1531 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,9 +3,10 @@
 
 # Ignore Gradle build output directory
 build
+bin
 
 # Ignore Eclipse
-.classpath
-.project
-.settings/**
+**/.classpath
+**/.project
+**/.settings/**
 
diff --git a/tools/rewrite-log-entries/src/main/java/org/oceandsl/log/rewriter/RewriteBeforeAndAfterEventsStage.java b/analysis/src/main/java/org/oceandsl/analysis/RewriteBeforeAndAfterEventsStage.java
similarity index 97%
rename from tools/rewrite-log-entries/src/main/java/org/oceandsl/log/rewriter/RewriteBeforeAndAfterEventsStage.java
rename to analysis/src/main/java/org/oceandsl/analysis/RewriteBeforeAndAfterEventsStage.java
index a2da28c0d485ff3c008ea2db37225494c92077fb..e1875973552581aaabcde747d30f8192cbb36118 100644
--- a/tools/rewrite-log-entries/src/main/java/org/oceandsl/log/rewriter/RewriteBeforeAndAfterEventsStage.java
+++ b/analysis/src/main/java/org/oceandsl/analysis/RewriteBeforeAndAfterEventsStage.java
@@ -1,7 +1,7 @@
 /**
  * 
  */
-package org.oceandsl.log.rewriter;
+package org.oceandsl.analysis;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -110,7 +110,7 @@ public class RewriteBeforeAndAfterEventsStage extends AbstractConsumerStage<IMon
 		}
 	}
 
-	public OutputPort getOutputPort() {
+	public OutputPort<IMonitoringRecord> getOutputPort() {
 		return this.outputPort;
 	}
 
diff --git a/analysis/src/main/java/org/oceandsl/analysis/package-info.java b/analysis/src/main/java/org/oceandsl/analysis/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..3e43118cdf9d870942185f03d784f55858abb467
--- /dev/null
+++ b/analysis/src/main/java/org/oceandsl/analysis/package-info.java
@@ -0,0 +1 @@
+package org.oceandsl.analysis;
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 26aceb028171e095884a185251989dc432526ccc..574ccb73c08d65389fdd903343430282976267b3 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,23 +10,26 @@ plugins {
 }
 
 repositories {
-    // Use jcenter for resolving dependencies.
-    // You can declare any Maven/Ivy/file repository here.
     jcenter()
     mavenCentral()
-    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
-    maven {url "https://oss.sonatype.org/content/repositories/releases/" }
-}
-
-dependencies {
-    implementation 'net.kieker-monitoring:kieker:1.15-SNAPSHOT'
-    implementation 'net.sourceforge.teetime:teetime:3.0'
-    implementation 'com.beust:jcommander:1.78'
-
-    // Use JUnit test framework
-    testImplementation 'junit:junit:4.13'
 }
 
 subprojects {
+	apply plugin: 'java'
 
+	repositories {
+	    jcenter()
+	    mavenCentral()
+	    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
+	    maven { url "https://oss.sonatype.org/content/repositories/releases/" }
+	}
+	
+	dependencies {
+	    implementation 'net.kieker-monitoring:kieker:1.15-SNAPSHOT'
+	    implementation 'net.sourceforge.teetime:teetime:3.0'
+	    implementation 'com.beust:jcommander:1.78'
+	
+	    // Use JUnit test framework
+	    testImplementation 'junit:junit:4.13'
+	}
 }
diff --git a/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/ArchitectureModelMain.java b/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/ArchitectureModelMain.java
index 1b538199de7822aa6d26076c2952f75ebecf4fea..55d5ec728b65aba2e1c76570bc33a98d07dee503 100644
--- a/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/ArchitectureModelMain.java
+++ b/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/ArchitectureModelMain.java
@@ -1,7 +1,7 @@
 /*
  * This Java source file was generated by the Gradle 'init' task.
  */
-package org.oceandsl.log.rewriter;
+package org.oceandsl.architecture.model;
 
 import java.io.File;
 import java.io.IOException;
@@ -12,11 +12,11 @@ import kieker.common.configuration.Configuration;
 import kieker.common.exception.ConfigurationException;
 import kieker.tools.common.AbstractService;
 
-public class LogRewriterMain extends AbstractService<TeetimeConfiguration,LogRewriterSettings>{
+public class ArchitectureModelMain extends AbstractService<TeetimeConfiguration,ArchitectureModelSettings>{
    
     public static void main(String[] args) {
-    	 java.lang.System.exit(new LogRewriterMain().run("Kieker Log ELF Rewriter",
-    		        "log-rewriter", args, new LogRewriterSettings()));
+    	 java.lang.System.exit(new ArchitectureModelMain().run("Kieker Log ELF Rewriter",
+    		        "log-rewriter", args, new ArchitectureModelSettings()));
     }
 
 	@Override
diff --git a/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/LogRewriterSettings.java b/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/ArchitectureModelSettings.java
similarity index 93%
rename from tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/LogRewriterSettings.java
rename to tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/ArchitectureModelSettings.java
index c425cc0578dee1e0857a5d7e8e0276304e68294e..9d15ccc22723fce0ce84494c96f4ad45b82e12e6 100644
--- a/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/LogRewriterSettings.java
+++ b/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/ArchitectureModelSettings.java
@@ -1,7 +1,7 @@
 /**
  * 
  */
-package org.oceandsl.log.rewriter;
+package org.oceandsl.architecture.model;
 
 import java.io.File;
 
@@ -12,7 +12,7 @@ import com.beust.jcommander.converters.FileConverter;
  * @author reiner
  *
  */
-public class LogRewriterSettings {
+public class ArchitectureModelSettings {
 
 	@Parameter(names = { "-i", "--input" }, required = true, converter = FileConverter.class, description = "Input Kieker log directory")
 	private File inputFile;
diff --git a/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/TeetimeConfiguration.java b/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/TeetimeConfiguration.java
index c086926d10711bdba85e724621fa2d37918fe071..383239ae85ebf473d81682418a1500db34d090ff 100644
--- a/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/TeetimeConfiguration.java
+++ b/tools/create-architecture-model/src/main/java/org/oceandsl/architecture/model/TeetimeConfiguration.java
@@ -1,11 +1,12 @@
 /**
  * 
  */
-package org.oceandsl.log.rewriter;
+package org.oceandsl.architecture.model;
 
 import java.io.IOException;
 
-import kieker.analysis.sink.DataSinkStage;
+import org.oceandsl.analysis.RewriteBeforeAndAfterEventsStage;
+
 import kieker.tools.source.LogsReaderCompositeStage;
 import teetime.framework.Configuration;
 
@@ -15,56 +16,17 @@ import teetime.framework.Configuration;
  */
 public class TeetimeConfiguration extends Configuration {
 
-	public TeetimeConfiguration(LogRewriterSettings parameterConfiguration) throws IOException {
+	public TeetimeConfiguration(ArchitectureModelSettings parameterConfiguration) throws IOException {
 				
 		kieker.common.configuration.Configuration configuration = new kieker.common.configuration.Configuration();
 		configuration.setProperty(LogsReaderCompositeStage.LOG_DIRECTORIES, 
 				parameterConfiguration.getInputFile().getCanonicalPath());
-		configuration.setProperty("kieker.monitoring.name", "KIEKER");
-		configuration.setProperty("kieker.monitoring.enabled","true");
-		configuration.setProperty("kieker.monitoring.initialExperimentId","transcoded");
-		configuration.setProperty("kieker.monitoring.metadata","true");
-		configuration.setProperty("kieker.monitoring.setLoggingTimestamp","true");
-		configuration.setProperty("kieker.monitoring.useShutdownHook","true");
-		configuration.setProperty("kieker.monitoring.jmx","false");
-		
-		configuration.setProperty("kieker.monitoring.timer",
-				kieker.monitoring.timer.SystemNanoTimer.class.getCanonicalName());
-		configuration.setProperty("kieker.monitoring.timer.SystemMilliTimer.unit","0");
-		configuration.setProperty("kieker.monitoring.timer.SystemNanoTimer.unit","0");
-		configuration.setProperty("kieker.monitoring.writer",
-				kieker.monitoring.writer.filesystem.FileWriter.class.getCanonicalName());
-		configuration.setProperty("kieker.monitoring.core.controller.WriterController.RecordQueueFQN",
-				org.jctools.queues.MpscArrayQueue.class.getCanonicalName());
-		configuration.setProperty("kieker.monitoring.core.controller.WriterController.RecordQueueSize","10000");
-		configuration.setProperty("kieker.monitoring.core.controller.WriterController.RecordQueueInsertBehavior","1");
-		configuration.setProperty("kieker.monitoring.writer.filesystem.FileWriter.customStoragePath",parameterConfiguration.getOutputFile().getCanonicalPath());
-		configuration.setProperty("kieker.monitoring.writer.filesystem.FileWriter.charsetName","UTF-8");
-		configuration.setProperty("kieker.monitoring.writer.filesystem.FileWriter.maxEntriesInFile","25000");
-		configuration.setProperty("kieker.monitoring.writer.filesystem.FileWriter.maxLogSize","-1");
-		configuration.setProperty("kieker.monitoring.writer.filesystem.FileWriter.maxLogFiles","-1");
-		configuration.setProperty("kieker.monitoring.writer.filesystem.FileWriter.mapFileHandler",
-				kieker.monitoring.writer.filesystem.TextMapFileHandler.class.getCanonicalName());
-		configuration.setProperty("kieker.monitoring.writer.filesystem.TextMapFileHandler.flush","true");
-		configuration.setProperty("kieker.monitoring.writer.filesystem.TextMapFileHandler.compression",
-				kieker.monitoring.writer.compression.NoneCompressionFilter.class.getCanonicalName());
-		configuration.setProperty("kieker.monitoring.writer.filesystem.FileWriter.logFilePoolHandler",
-				kieker.monitoring.writer.filesystem.RotatingLogFilePoolHandler.class.getCanonicalName());
-		configuration.setProperty("kieker.monitoring.writer.filesystem.FileWriter.logStreamHandler",
-				kieker.monitoring.writer.filesystem.TextLogStreamHandler.class.getCanonicalName());
-		configuration.setProperty("kieker.monitoring.writer.filesystem.FileWriter.flush","true");
-		configuration.setProperty("kieker.monitoring.writer.filesystem.BinaryFileWriter.bufferSize","8192");
-		configuration.setProperty("kieker.monitoring.writer.filesystem.BinaryFileWriter.compression",
-				kieker.monitoring.writer.compression.NoneCompressionFilter.class.getCanonicalName());
 		
 		LogsReaderCompositeStage reader = new LogsReaderCompositeStage(configuration);
 		
 		RewriteBeforeAndAfterEventsStage processor = new RewriteBeforeAndAfterEventsStage(parameterConfiguration.getAddrlineExecutable(),
 				parameterConfiguration.getModelExecutable());
-		
-		DataSinkStage writer = new DataSinkStage(configuration);
-		
+
 		this.connectPorts(reader.getOutputPort(), processor.getInputPort());
-		this.connectPorts(processor.getOutputPort(), writer.getInputPort());
 	}
 }
diff --git a/tools/rewrite-log-entries/src/main/java/org/oceandsl/log/rewriter/TeetimeConfiguration.java b/tools/rewrite-log-entries/src/main/java/org/oceandsl/log/rewriter/TeetimeConfiguration.java
index c086926d10711bdba85e724621fa2d37918fe071..4c9dac5597735681cc95b2a6bd8a233d454b311a 100644
--- a/tools/rewrite-log-entries/src/main/java/org/oceandsl/log/rewriter/TeetimeConfiguration.java
+++ b/tools/rewrite-log-entries/src/main/java/org/oceandsl/log/rewriter/TeetimeConfiguration.java
@@ -5,6 +5,8 @@ package org.oceandsl.log.rewriter;
 
 import java.io.IOException;
 
+import org.oceandsl.analysis.RewriteBeforeAndAfterEventsStage;
+
 import kieker.analysis.sink.DataSinkStage;
 import kieker.tools.source.LogsReaderCompositeStage;
 import teetime.framework.Configuration;