diff --git a/trainbenchmark/models/railway-batch-1-ag-special.json b/trainbenchmark/models/railway-batch-1-jastadd-manual-intrinsic.json
similarity index 100%
rename from trainbenchmark/models/railway-batch-1-ag-special.json
rename to trainbenchmark/models/railway-batch-1-jastadd-manual-intrinsic.json
diff --git a/trainbenchmark/models/railway-batch-1-ag.json b/trainbenchmark/models/railway-batch-1-jastadd-manual.json
similarity index 100%
rename from trainbenchmark/models/railway-batch-1-ag.json
rename to trainbenchmark/models/railway-batch-1-jastadd-manual.json
diff --git a/trainbenchmark/models/railway-batch-1-relast.json b/trainbenchmark/models/railway-batch-1-jastadd-relast.json
similarity index 100%
rename from trainbenchmark/models/railway-batch-1-relast.json
rename to trainbenchmark/models/railway-batch-1-jastadd-relast.json
diff --git a/trainbenchmark/models/railway-batch-2-ag-special.json b/trainbenchmark/models/railway-batch-2-jastadd-manual-intrinsic.json
similarity index 100%
rename from trainbenchmark/models/railway-batch-2-ag-special.json
rename to trainbenchmark/models/railway-batch-2-jastadd-manual-intrinsic.json
diff --git a/trainbenchmark/models/railway-batch-2-ag.json b/trainbenchmark/models/railway-batch-2-jastadd-manual.json
similarity index 100%
rename from trainbenchmark/models/railway-batch-2-ag.json
rename to trainbenchmark/models/railway-batch-2-jastadd-manual.json
diff --git a/trainbenchmark/models/railway-batch-2-relast.json b/trainbenchmark/models/railway-batch-2-jastadd-relast.json
similarity index 100%
rename from trainbenchmark/models/railway-batch-2-relast.json
rename to trainbenchmark/models/railway-batch-2-jastadd-relast.json
diff --git a/trainbenchmark/models/railway-inject-1-ag-special.json b/trainbenchmark/models/railway-inject-1-jastadd-manual-intrinsic.json
similarity index 100%
rename from trainbenchmark/models/railway-inject-1-ag-special.json
rename to trainbenchmark/models/railway-inject-1-jastadd-manual-intrinsic.json
diff --git a/trainbenchmark/models/railway-inject-1-ag.json b/trainbenchmark/models/railway-inject-1-jastadd-manual.json
similarity index 100%
rename from trainbenchmark/models/railway-inject-1-ag.json
rename to trainbenchmark/models/railway-inject-1-jastadd-manual.json
diff --git a/trainbenchmark/models/railway-inject-1-relast.json b/trainbenchmark/models/railway-inject-1-jastadd-relast.json
similarity index 100%
rename from trainbenchmark/models/railway-inject-1-relast.json
rename to trainbenchmark/models/railway-inject-1-jastadd-relast.json
diff --git a/trainbenchmark/models/railway-inject-2-ag-special.json b/trainbenchmark/models/railway-inject-2-jastadd-manual-intrinsic.json
similarity index 100%
rename from trainbenchmark/models/railway-inject-2-ag-special.json
rename to trainbenchmark/models/railway-inject-2-jastadd-manual-intrinsic.json
diff --git a/trainbenchmark/models/railway-inject-2-ag.json b/trainbenchmark/models/railway-inject-2-jastadd-manual.json
similarity index 100%
rename from trainbenchmark/models/railway-inject-2-ag.json
rename to trainbenchmark/models/railway-inject-2-jastadd-manual.json
diff --git a/trainbenchmark/models/railway-inject-2-relast.json b/trainbenchmark/models/railway-inject-2-jastadd-relast.json
similarity index 100%
rename from trainbenchmark/models/railway-inject-2-relast.json
rename to trainbenchmark/models/railway-inject-2-jastadd-relast.json
diff --git a/trainbenchmark/models/railway-repair-1-ag-special.json b/trainbenchmark/models/railway-repair-1-jastadd-manual-intrinsic.json
similarity index 100%
rename from trainbenchmark/models/railway-repair-1-ag-special.json
rename to trainbenchmark/models/railway-repair-1-jastadd-manual-intrinsic.json
diff --git a/trainbenchmark/models/railway-repair-1-ag.json b/trainbenchmark/models/railway-repair-1-jastadd-manual.json
similarity index 100%
rename from trainbenchmark/models/railway-repair-1-ag.json
rename to trainbenchmark/models/railway-repair-1-jastadd-manual.json
diff --git a/trainbenchmark/models/railway-repair-1-relast.json b/trainbenchmark/models/railway-repair-1-jastadd-relast.json
similarity index 100%
rename from trainbenchmark/models/railway-repair-1-relast.json
rename to trainbenchmark/models/railway-repair-1-jastadd-relast.json
diff --git a/trainbenchmark/models/railway-repair-2-ag-special.json b/trainbenchmark/models/railway-repair-2-jastadd-manual-intrinsic.json
similarity index 100%
rename from trainbenchmark/models/railway-repair-2-ag-special.json
rename to trainbenchmark/models/railway-repair-2-jastadd-manual-intrinsic.json
diff --git a/trainbenchmark/models/railway-repair-2-ag.json b/trainbenchmark/models/railway-repair-2-jastadd-manual.json
similarity index 100%
rename from trainbenchmark/models/railway-repair-2-ag.json
rename to trainbenchmark/models/railway-repair-2-jastadd-manual.json
diff --git a/trainbenchmark/models/railway-repair-2-relast.json b/trainbenchmark/models/railway-repair-2-jastadd-relast.json
similarity index 100%
rename from trainbenchmark/models/railway-repair-2-relast.json
rename to trainbenchmark/models/railway-repair-2-jastadd-relast.json
diff --git a/trainbenchmark/results/.gitignore b/trainbenchmark/results/.gitignore
index 59b9621bab52f0d32a67aef2ff22b484057c4f21..d6b7ef32c8478a48c3994dcadc86837f4371184d 100644
--- a/trainbenchmark/results/.gitignore
+++ b/trainbenchmark/results/.gitignore
@@ -1,3 +1,2 @@
 *
 !.gitignore
-!diff-test.sh
diff --git a/trainbenchmark/settings.gradle b/trainbenchmark/settings.gradle
index 6f80f4b52313487aff0f4cb6c457c5a16a31131a..be95dd21b53e7678c3f4affc19c5e07243c4a9f6 100644
--- a/trainbenchmark/settings.gradle
+++ b/trainbenchmark/settings.gradle
@@ -4,12 +4,11 @@ include ':trainbenchmark-format-emf-model'
 include ':trainbenchmark-generator'
 include ':trainbenchmark-generator-emf'
 include ':trainbenchmark-generator-graph-tinkerpop'
-include ':trainbenchmark-generator-json4ag'
-include ':trainbenchmark-generator-json4ag-special'
-include ':trainbenchmark-generator-relast'
+include ':trainbenchmark-generator-jastadd-manual'
+include ':trainbenchmark-generator-jastadd-manual-intrinsic'
+include ':trainbenchmark-generator-jastadd-relast'
 include ':trainbenchmark-generator-dot'
 include ':trainbenchmark-reporting'
-//include ':trainbenchmark-scripts'
 include ':trainbenchmark-server'
 include ':trainbenchmark-tool'
 include ':trainbenchmark-tool-emf'
@@ -17,15 +16,15 @@ include ':trainbenchmark-tool-emf'
 include ':trainbenchmark-tool-jastadd-namelookup'
 //include ':trainbenchmark-tool-jastadd-namelookup-base'
 include ':trainbenchmark-tool-jastadd-namelookup-incremental'
-include ':trainbenchmark-tool-jastadd-optimized'
-//include ':trainbenchmark-tool-jastadd-optimized-base'
-include ':trainbenchmark-tool-jastadd-optimized-incremental'
-include ':trainbenchmark-tool-jastadd-specialized'
+include ':trainbenchmark-tool-jastadd-intrinsic'
+//include ':trainbenchmark-tool-jastadd-intrinsic-base'
+include ':trainbenchmark-tool-jastadd-intrinsic-incremental'
+include ':trainbenchmark-tool-jastadd-manual-relast'
 include ':trainbenchmark-tool-jastadd-relast'
-//include ':trainbenchmark-tool-jastadd-specialized-base'
-include ':trainbenchmark-tool-jastadd-specialized-incremental'
+//include ':trainbenchmark-tool-jastadd-relast-base'
+include ':trainbenchmark-tool-jastadd-manual-relast-incremental'
 include ':trainbenchmark-tool-jastadd-relast-incremental'
 include ':trainbenchmark-tool-tinkergraph'
 include ':trainbenchmark-tool-viatra'
 include ':trainbenchmark-tool-viatra-patterns'
-include ':trainbenchmark-alternate-scripts'
\ No newline at end of file
+include ':trainbenchmark-scripts'
\ No newline at end of file
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/build.gradle b/trainbenchmark/trainbenchmark-alternate-scripts/build.gradle
deleted file mode 100644
index d8d87dc6573a3db33c03754e5773377314f58fe2..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/build.gradle
+++ /dev/null
@@ -1,81 +0,0 @@
-dependencies {
-	compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.2.3'
-	compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.3.0'
-
-	compile project(':trainbenchmark-generator')
-	compile project(':trainbenchmark-generator-emf')
-	compile project(':trainbenchmark-generator-graph-tinkerpop')
-	compile project(':trainbenchmark-generator-json4ag')
-	compile project(':trainbenchmark-generator-json4ag-special')
-	compile project(':trainbenchmark-generator-relast')
-	compile project(':trainbenchmark-generator-dot')
-	compile project(':trainbenchmark-tool')
-	compile project(':trainbenchmark-tool-jastadd-namelookup')
-	compile project(':trainbenchmark-tool-jastadd-namelookup-incremental')
-	compile project(':trainbenchmark-tool-jastadd-optimized')
-	compile project(':trainbenchmark-tool-jastadd-optimized-incremental')
-	compile project(':trainbenchmark-tool-jastadd-specialized')
-	compile project(':trainbenchmark-tool-jastadd-specialized-incremental')
-	compile project(':trainbenchmark-tool-jastadd-relast')
-	compile project(':trainbenchmark-tool-jastadd-relast-incremental')
-	compile project(':trainbenchmark-tool-tinkergraph')
-	compile project(':trainbenchmark-tool-viatra')
-}
-
-task cleanResults(type: Delete) {
-	doLast {
-		def resultDir = "../results"
-		file(resultDir).eachDir{ dir ->
-			delete "${dir}"
-		}
-	}
-}
-
-task combinedBenchmark(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	description = 'Runs the \'classic\' TrainBenchmark script'
-	main = 'de.tudresden.inf.st.train.scripts.BenchmarkMain'
-	classpath = sourceSets.main.runtimeClasspath
-	args 'combined'
-}
-
-task individualRepairBenchmark(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	main = 'de.tudresden.inf.st.train.scripts.BenchmarkMain'
-	classpath = sourceSets.main.runtimeClasspath
-	args 'individual_repair'
-}
-
-task individualInjectBenchmark(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	main = 'de.tudresden.inf.st.train.scripts.BenchmarkMain'
-	classpath = sourceSets.main.runtimeClasspath
-	args 'individual_inject'
-}
-
-task individualIncrementalBenchmark(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	main = 'de.tudresden.inf.st.train.scripts.BenchmarkMain'
-	classpath = sourceSets.main.runtimeClasspath
-	args 'individual_incremental'
-}
-
-
-task generate(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	description = 'Generates the models for all benchmarks'
-	main = 'de.tudresden.inf.st.train.scripts.GenerateMain'
-	classpath = sourceSets.main.runtimeClasspath
-}
-
-//task memory(dependsOn: 'classes', type: JavaExec) {
-//	group = 'Benchmark'
-//	main = 'MemoryScript'
-//	classpath = sourceSets.main.runtimeClasspath
-//}
-//
-//task qpt(dependsOn: 'classes', type: JavaExec) {
-//	group = 'Benchmark'
-//	main = 'QueryPlanTester'
-//	classpath = sourceSets.main.runtimeClasspath
-//}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkMain.java b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkMain.java
deleted file mode 100644
index c5dca00cfa62bd4fec9cd314ef0672b37949e1a8..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkMain.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package de.tudresden.inf.st.train.scripts;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import hu.bme.mit.trainbenchmark.benchmark.config.*;
-import hu.bme.mit.trainbenchmark.benchmark.result.ResultHelper;
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkRunner;
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig;
-import hu.bme.mit.trainbenchmark.constants.RailwayOperation;
-
-import java.io.IOException;
-import java.util.*;
-
-/**
- * Main entry point to start benchmarks.
- * Created by rschoene on 10/12/17.
- */
-public class BenchmarkMain {
-
-	@SuppressWarnings("unchecked")
-	private static void runBenchmarkSeries(BenchmarkConfigBaseBuilder configBaseBuilder, BenchmarkConfigBuilder configBuilder,
-	                                       ExecutionConfig ec, ModelSetConfig modelSetConfig, BenchmarkSettingsBasics bbs) {
-		Map<String, String> jvmSettingsMap = Utils.createJvmSettingsMap(bbs);
-		String jvmDefaultSettings = jvmSettingsMap.getOrDefault("*",
-				"-Xms{Xms} -Xmx{Xmx} -server -Xverify:none");
-		try {
-			for (int size = modelSetConfig.getMinSize(); size <= modelSetConfig.getMaxSize(); size *= 2) {
-				String modelFilename = "railway-" + modelSetConfig.getModelVariant() + "-" + size;
-
-				System.out.println("------------------------------------------------------------");
-				System.out.println("Model: " + modelFilename);
-				System.out.println("------------------------------------------------------------");
-
-				configBaseBuilder.setModelFilename(modelFilename);
-				BenchmarkConfigBase configBase = configBaseBuilder.createConfigBase();
-				BenchmarkConfig config = (BenchmarkConfig) configBuilder.setConfigBase(configBase).createConfig();
-
-				if (!bbs.isDryRun()) {
-					ResultHelper.prepare(config, ec);
-				}
-				String jvmSetting = jvmSettingsMap.getOrDefault(config.getToolName(), jvmDefaultSettings);
-
-				int exitValue = BenchmarkRunner.runPerformanceBenchmark(config, ec, jvmSetting);
-				if (exitValue != 0) {
-					System.out.println("Timeout or error occurred, skipping models for larger sizes. Error code: " + exitValue);
-					break;
-				}
-			}
-		} catch (InterruptedException | IOException e) {
-			System.out.println("Exception occurred during execution.");
-			e.printStackTrace();
-		}
-	}
-
-	public static void main(String args[]) throws Exception {
-		// set benchmark variant from program arguments
-		if (args.length == 0) {
-			System.err.println("Need to specify one argument identifying the benchmark variant");
-			System.exit(1);
-		}
-		String benchmarkVariant = args[0];
-
-		// read basic settings (min, maxsize, etc.)
-		ObjectMapper mapper = Utils.getMapper();
-		BenchmarkSettingsBasics bbs = Utils.readFromResource(mapper, "basic-settings.json",
-				BenchmarkSettingsBasics.class);
-		try {
-		BenchmarkSettingsBasics loca_bbs = Utils.readFromResource(mapper, "local-basic-settings.json",
-				BenchmarkSettingsBasics.class);
-			Utils.updateBasicsWithLocal(bbs, loca_bbs);
-		} catch (IOException e) {
-			System.out.println("No file 'local-basic-settings.json' found. Using default!");
-		}
-
-		// import tools to use
-		List<BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>> builders =
-				BenchmarkSettingsAvailableTools.getBuilders(bbs.getTools());
-		System.out.println(builders);
-
-		// read workloads based on benchmark variant
-		String workloadsFilename = "workloads.json";
-		BenchmarkSettingsVariantWorkloads bsvw = Utils.readFromResource(mapper, workloadsFilename,
-				BenchmarkSettingsVariantWorkloads.class);
-
-		Optional<BenchmarkSettingsWorkloads> workloadsOpt = bsvw.getVariants().stream()
-				.filter(w -> w.getName().equals(benchmarkVariant))
-				.findFirst();
-		if (!workloadsOpt.isPresent()) {
-			System.err.println("Could not find workloads for given variant, check " + workloadsFilename
-					+ " and argument " + benchmarkVariant);
-			System.exit(4);
-		}
-		BenchmarkSettingsWorkloads workloads = workloadsOpt.get();
-
-		// start benchmark
-		String now = ResultHelper.getNow();
-		ExecutionConfig ec = new ExecutionConfig(4000, 8000, bbs.isDryRun());
-
-		System.out.println("Please remember to stop all other Java processes.");
-		System.out.println();
-		System.out.println("If in doubt, check with this command:");
-		System.out.println("$ ps auxw | grep jav[a]");
-		System.out.println();
-		System.out.println("If there are other Java processes, use:");
-		System.out.println("$ killall -9 java");
-		System.out.println();
-		System.out.println("############################################################");
-		System.out.println("Benchmark parameters:");
-		System.out.println("- execution config: " + ec);
-		System.out.println(bbs);
-//		System.out.println("- range: minSize=" + bbs.getMinSize() +", maxSize=" + bbs.getMaxSize());
-//		System.out.println("- timeout: " + bbs.getTimeout());
-//		System.out.println("- runs: " + bbs.getRuns());
-		System.out.println("############################################################");
-		System.out.println();
-
-		workloads.getWorkloads().forEach(workloadConfiguration -> {
-			String workloadName = workloadConfiguration.getWorkloadName();
-			String modelVariant = workloadConfiguration.getModelVariant();
-			List<RailwayOperation> operations = workloadConfiguration.getOperations();
-			TransformationChangeSetStrategy strategy = workloadConfiguration.getStrategy();
-			int constant = workloadConfiguration.getConstant();
-			int queryTransformationCount = workloadConfiguration.getQueryTransformationCount();
-
-			System.out.println("============================================================");
-			System.out.println("Workload: " + workloadName);
-			System.out.println("============================================================");
-
-			ModelSetConfig modelSetConfig = new ModelSetConfig(modelVariant, bbs.getMinSize(), bbs.getMaxSize());
-			BenchmarkConfigBaseBuilder bcbb = new BenchmarkConfigBaseBuilder()
-					.setBenchmarkId(now).setTimeout(bbs.getTimeout()).setRuns(bbs.getRuns())
-					.setOperations(operations).setWorkload(workloadName)
-					.setQueryTransformationCount(queryTransformationCount).setTransformationConstant(constant)
-					.setTransformationChangeSetStrategy(strategy);
-
-			builders.forEach( bcb -> runBenchmarkSeries(bcbb, bcb, ec, modelSetConfig, bbs));
-		});
-
-//		if (binding.variables.get("reportUrl")) {
-//			BenchmarkReporter.reportReady(reportUrl)
-//		}
-	}
-
-}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableFormats.java b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableFormats.java
deleted file mode 100644
index 1971b921990768e2f6e4cfd8844488957c6ae974..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableFormats.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package de.tudresden.inf.st.train.scripts;
-
-import de.tudresden.inf.st.trainbenchmark.generator.json4ag.config.Json4AgGeneratorConfigBuilder;
-import de.tudresden.inf.st.trainbenchmark.generator.json4agspecial.config.Json4AgSpecialGeneratorConfigBuilder;
-import de.tudresden.inf.st.trainbenchmark.generator.relast.config.RelASTGeneratorConfigBuilder;
-import hu.bme.mit.trainbenchmark.generator.config.*;
-import hu.bme.mit.trainbenchmark.generator.emf.config.EmfGeneratorConfigBuilder;
-import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphFormat;
-import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphGeneratorConfigBuilder;
-import hu.bme.mit.trainbenchmark.generator.minimal.*;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * Format settings of a benchmark shared throughout all variants.
- * Created by rschoene on 10/13/17.
- */
-public class BenchmarkSettingsAvailableFormats {
-	/**
-	 * Create a map, from projectName to a set of all builders in this project
-	 * @return a mapping from projectName to all builders
-	 */
-	public static Map<String, List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>>
-	getAvailableFormats() {
-		// { projectName -> [builder] }
-		GeneratorConfigBase dummyConfigBase = new GeneratorConfigBaseBuilder()
-				.setScenario(Scenario.BATCH).setSize(1)
-				.createGeneratorConfigBase();
-		return getAllBuilders().stream().collect(Collectors.toMap(
-				builder -> builder.setConfigBase(dummyConfigBase).createConfig().getProjectName(),
-				s -> new ArrayList<>(Collections.singletonList(s)),
-				(oldValue, newValue) -> { oldValue.addAll(newValue); return oldValue; }));
-	}
-
-	private static GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>
-	getBuilderByName(String className) {
-		Optional<Object> result = Utils.maybeCreateNewInstance(className);
-		return (GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>) result.orElse(null);
-	}
-
-	private static List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>
-	getAllBuilders() {
-		return Arrays.asList(
-				new EmfGeneratorConfigBuilder(),
-				new TinkerGraphGeneratorConfigBuilder().setGraphFormat(TinkerGraphFormat.GRAPHML),
-				new Json4AgGeneratorConfigBuilder(),
-				new Json4AgSpecialGeneratorConfigBuilder(),
-				new RelASTGeneratorConfigBuilder()
-		);
-	}
-
-	/**
-	 * Get all builders with the given names of formats. The format name in the config every builder creates
-	 * must match one of the given project names.
-	 * @param formatNames names of formats
-	 * @return a set of matching generator config builders
-	 */
-	public static List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>
-	getBuilders(String ... formatNames) {
-		Map<String, List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>>
-				availableFormats = getAvailableFormats();
-		return Arrays.stream(formatNames).map(name -> {
-			List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>
-					builders = availableFormats.get(name);
-			if (builders.isEmpty()) {
-				throw new IllegalArgumentException("Could not find format " + name + ", available formats are: "
-						+ availableFormats.keySet());
-			}
-			return builders;
-		}).reduce((set1, set2) -> {
-			set1.addAll(set2);
-			return set1;
-		}).orElse(Collections.emptyList());
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableTools.java b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableTools.java
deleted file mode 100644
index 49dc323b78a5cbb8f5a12c2e9326b5b3c642f2ab..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableTools.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package de.tudresden.inf.st.train.scripts;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupBenchmarkConfigBuilder;
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupIncrementalBenchmarkConfigBuilder;
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedBenchmarkConfigBuilder;
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedIncrementalBenchmarkConfigBuilder;
-import hu.bme.mit.trainbenchmark.benchmark.config.*;
-import hu.bme.mit.trainbenchmark.benchmark.tinkergraph.config.TinkerGraphBenchmarkConfigBuilder;
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBackend;
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBenchmarkConfigBuilder;
-
-import java.util.*;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-/**
- * Tool settings of a benchmark shared throughout all variants
- * Created by rschoene on 10/12/17.
- */
-public class BenchmarkSettingsAvailableTools {
-	public static Map<String, BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>>
-	getAvailableTools() {
-		// { toolName -> builder }
-		BenchmarkConfigBase dummyConfigBase = new BenchmarkConfigBaseBuilder()
-				.setBenchmarkId("").setTimeout(0L).setRuns(0).setModelFilename("")
-				.setOperations(new ArrayList<>()).setWorkload("")
-				.setTransformationChangeSetStrategy(TransformationChangeSetStrategy.FIXED)
-				.setQueryTransformationCount(0).setTransformationConstant(0)
-				.createConfigBase();
-		return getAllBuilders().stream().collect(Collectors.toMap(
-				builder -> builder.setConfigBase(dummyConfigBase).createConfig().getToolName(),
-				Function.identity()));
-	}
-
-	private static BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>
-	getBuilderByName(String className) {
-		Optional<Object> result = Utils.maybeCreateNewInstance(className);
-		return (BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>) result.orElse(null);
-	}
-
-	private static List<BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>>
-	getAllBuilders() {
-		return Arrays.asList(
-				new JastaddNameLookupBenchmarkConfigBuilder(),
-				new JastaddNameLookupIncrementalBenchmarkConfigBuilder(),
-				new JastaddOptimizedBenchmarkConfigBuilder(),
-				new JastaddOptimizedIncrementalBenchmarkConfigBuilder(),
-				new TinkerGraphBenchmarkConfigBuilder(),
-				new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.INCREMENTAL),
-				new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.LOCAL_SEARCH)
-		);
-	}
-
-	/**
-	 * Get all builders with the given names of tools. The tool name in the config every builder creates must match one
-	 * of the given tool names.
-	 * @param toolNames names of tools
-	 * @return a list of matching benchmark config builders
-	 */
-	public static List<BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>>
-	getBuilders(String ... toolNames) {
-		Map<String, BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>> availableTools = getAvailableTools();
-		return Arrays.stream(toolNames).map(name -> {
-			BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>> builder = availableTools.get(name);
-			if (builder == null) {
-				throw new IllegalArgumentException("Could not find tool " + name + ", available tools are: " + availableTools.keySet());
-			}
-			return builder;
-		}).collect(Collectors.toList());
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsBasics.java b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsBasics.java
deleted file mode 100644
index cf427052309cfb2da890c8eacd7077fddf2d1645..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsBasics.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package de.tudresden.inf.st.train.scripts;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonSetter;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Basic settings bean of a benchmark shared throughout all variants.
- * Created by rschoene on 10/12/17.
- */
-public class BenchmarkSettingsBasics {
-
-	static class JVMSetting {
-		private List<String> applyTo;
-		private String args;
-
-		public List<String> getApplyTo() {
-			return applyTo;
-		}
-
-		public void setApplyTo(List<String> applyTo) {
-			this.applyTo = applyTo;
-		}
-
-		public String getArgs() {
-			return args;
-		}
-
-		public void setArgs(String args) {
-			this.args = args;
-		}
-	}
-	@JsonInclude(JsonInclude.Include.NON_DEFAULT)
-	private Integer minSize = null;
-	@JsonInclude(JsonInclude.Include.NON_DEFAULT)
-	private Integer maxSize = null;
-	@JsonInclude(JsonInclude.Include.NON_DEFAULT)
-	private Long timeout = null;
-	@JsonInclude(JsonInclude.Include.NON_DEFAULT)
-	private Integer runs = null;
-	@JsonInclude(JsonInclude.Include.NON_DEFAULT)
-	private Boolean dryRun = null;
-	private String[] tools;
-	private String[] formats;
-	private List<JVMSetting> jvmSettings;
-
-	/** Minimum model size */
-	public Integer getMinSize() {
-		return minSize;
-	}
-
-	public void setMinSize(int minSize) {
-		this.minSize = minSize;
-	}
-
-	/** Maximum model size */
-	public Integer getMaxSize() {
-		return maxSize;
-	}
-
-	public void setMaxSize(int maxSize) {
-		this.maxSize = maxSize;
-	}
-
-	/** Timeout in seconds for each single run. */
-	public Long getTimeout() {
-		return timeout;
-	}
-
-	public void setTimeout(long timeout) {
-		this.timeout = timeout;
-	}
-
-	/** Number of runs per tool-workload combination. */
-	public Integer getRuns() {
-		return runs;
-	}
-
-	public void setRuns(int runs) {
-		this.runs = runs;
-	}
-
-	/** Don't run any Java processes. */
-	public Boolean isDryRun() {
-		return dryRun;
-	}
-
-	@JsonSetter("dry-run")
-	public void setDryRun(boolean dryRun) {
-		this.dryRun = dryRun;
-	}
-
-	/** List of tool names to use */
-	public String[] getTools() {
-		return tools;
-	}
-
-	public void setTools(String[] tools) {
-		this.tools = tools;
-	}
-
-	/** List of format names to use */
-	public String[] getFormats() {
-		return formats;
-	}
-
-	public void setFormats(String[] formats) {
-		this.formats = formats;
-	}
-
-	public List<JVMSetting> getJvmSettings() {
-		return jvmSettings;
-	}
-
-	public void setJvmSettings(List<JVMSetting> jvmSettings) {
-		this.jvmSettings = jvmSettings;
-	}
-
-	@Override
-	public String toString() {
-		return "BenchmarkSettingsBasics{" +
-				"minSize=" + minSize +
-				", maxSize=" + maxSize +
-				", timeout=" + timeout +
-				", runs=" + runs +
-				", dryRun=" + dryRun +
-				", tools=" + Arrays.toString(tools) +
-				'}';
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsVariantWorkloads.java b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsVariantWorkloads.java
deleted file mode 100644
index ab89bcdf3a68b80e9ecac6525b0ed7fd43a867c0..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsVariantWorkloads.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package de.tudresden.inf.st.train.scripts;
-
-import java.util.List;
-
-/**
- * List of all workload settings by variant.
- * Created by rschoene on 10/12/17.
- */
-public class BenchmarkSettingsVariantWorkloads {
-	private List<BenchmarkSettingsWorkloads> variants;
-
-	public List<BenchmarkSettingsWorkloads> getVariants() {
-		return variants;
-	}
-
-	public void setVariants(List<BenchmarkSettingsWorkloads> variants) {
-		this.variants = variants;
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkload.java b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkload.java
deleted file mode 100644
index 95b00151ae26fab885202a58e77f63d1086f3a04..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkload.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package de.tudresden.inf.st.train.scripts;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import hu.bme.mit.trainbenchmark.benchmark.config.TransformationChangeSetStrategy;
-import hu.bme.mit.trainbenchmark.constants.RailwayOperation;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-/**
- * Benchmark setting workload bean.
- * Created by rschoene on 10/12/17.
- */
-public class BenchmarkSettingsWorkload {
-	private String workloadName;
-	private String modelVariant;
-	private List<RailwayOperation> operations;
-	private TransformationChangeSetStrategy strategy;
-//	private String strategy;
-	private int constant;
-	private int queryTransformationCount;
-	@JsonIgnore
-	private Map<String, RailwayOperation> railwayOps;
-
-	public BenchmarkSettingsWorkload() {
-		railwayOps = Arrays.stream(RailwayOperation.values()).collect(Collectors.toMap(
-				RailwayOperation::toString, Function.identity()
-		));
-	}
-
-	public String getWorkloadName() {
-		return workloadName;
-	}
-
-	public void setWorkloadName(String workloadName) {
-		this.workloadName = workloadName;
-	}
-
-	public String getModelVariant() {
-		return modelVariant;
-	}
-
-	public void setModelVariant(String modelVariant) {
-		this.modelVariant = modelVariant;
-	}
-
-	public List<RailwayOperation> getOperations() {
-		return operations;
-	}
-
-	public void setOperations(List<String> operations) {
-		this.operations = operations.stream().map(op -> railwayOps.get(op)).collect(Collectors.toList());
-	}
-
-	public TransformationChangeSetStrategy getStrategy() {
-		return strategy;
-	}
-
-	public void setStrategy(TransformationChangeSetStrategy strategy) {
-		this.strategy = strategy;
-	}
-
-	public int getConstant() {
-		return constant;
-	}
-
-	public void setConstant(int constant) {
-		this.constant = constant;
-	}
-
-	public int getQueryTransformationCount() {
-		return queryTransformationCount;
-	}
-
-	public void setQueryTransformationCount(int queryTransformationCount) {
-		this.queryTransformationCount = queryTransformationCount;
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkloads.java b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkloads.java
deleted file mode 100644
index d32c2290b4be746cfe5963619a1f07dc968d9592..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkloads.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package de.tudresden.inf.st.train.scripts;
-
-import java.util.List;
-
-/**
- * Workload settings bean.
- * Created by rschoene on 10/12/17.
- */
-public class BenchmarkSettingsWorkloads
-{
-	private String name;
-	private List<BenchmarkSettingsWorkload> workloads;
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public List<BenchmarkSettingsWorkload> getWorkloads() {
-		return workloads;
-	}
-
-	public void setWorkloads(List<BenchmarkSettingsWorkload> workloads) {
-		this.workloads = workloads;
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/GenerateMain.java b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/GenerateMain.java
deleted file mode 100644
index 55da07b433f90321bed436c6d181729edefdf128..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/GenerateMain.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package de.tudresden.inf.st.train.scripts;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig;
-import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
-import hu.bme.mit.trainbenchmark.generator.config.*;
-import hu.bme.mit.trainbenchmark.generator.runner.GeneratorRunner;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * Main entry point to generate models.
- * Created by rschoene on 10/13/17.
- */
-public class GenerateMain {
-	public static void main(String[] args) throws Exception {
-		// read basic settings (min, maxsize, etc.)
-		ObjectMapper mapper = Utils.getMapper();
-		BenchmarkSettingsBasics bbs = Utils.readFromResource(mapper, "basic-settings.json",
-				BenchmarkSettingsBasics.class);
-		try {
-			BenchmarkSettingsBasics loca_bbs = Utils.readFromResource(mapper, "local-basic-settings.json",
-					BenchmarkSettingsBasics.class);
-			Utils.updateBasicsWithLocal(bbs, loca_bbs);
-		} catch (IOException e) {
-			System.out.println("No file 'local-basic-settings.json' found. Using default!");
-		}
-
-		// import formats to use
-		List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>> builders =
-				BenchmarkSettingsAvailableFormats.getBuilders(bbs.getFormats());
-		System.out.println(builders);
-		ExecutionConfig ec = new ExecutionConfig(4000, 8000, bbs.isDryRun());
-
-		// generating the MINIMAL scenario
-		for (ModelType modelType : ModelType.values()) {
-			builders.forEach( generatorConfigBuilder -> {
-				try {
-					System.out.println("Scenario: " + Scenario.MINIMAL + ", type: " + modelType);
-					GeneratorConfigBase configBase = new GeneratorConfigBaseBuilder()
-							.setSize(0).setModelType(modelType).setScenario(Scenario.MINIMAL).createGeneratorConfigBase();
-					GeneratorConfig config = generatorConfigBuilder.setConfigBase(configBase).createConfig();
-					int exitValue = GeneratorRunner.run(config, ec);
-					if (exitValue != 0) {
-						System.out.println("Timeout or error occurred. Error code: " + exitValue);
-					}
-				} catch (Exception e) {
-					System.out.println("Exception occurred during execution.");
-				}
-			});
-		}
-
-		// generating the other scenarios
-		for (Scenario scenario : new Scenario[]{Scenario.BATCH, Scenario.INJECT, Scenario.REPAIR}) {
-			builders.forEach( generatorConfigBuilder -> {
-				try {
-
-					for (int size = bbs.getMinSize(); size <= bbs.getMaxSize(); size *= 2) {
-						System.out.println("Scenario: " + scenario + ", size: " + size);
-
-						GeneratorConfigBase configBase = new GeneratorConfigBaseBuilder()
-								.setSize(size).setScenario(scenario)
-								.createGeneratorConfigBase();
-						GeneratorConfig config = generatorConfigBuilder.setConfigBase(configBase).createConfig();
-
-						int exitValue = GeneratorRunner.run(config, ec);
-						if (exitValue != 0) {
-							System.out.println("Timeout or error occurred, skipping models for larger sizes. Error code: "
-									+ exitValue);
-							break;
-						}
-					}
-				} catch (Exception e) {
-					System.out.println("Exception occurred during execution.");
-				}
-			});
-		}
-
-
-	}
-
-}
-
-/*
-import de.tudresden.inf.st.trainbenchmark.generator.json4ag.config.Json4AgGeneratorConfigBuilder
-import de.tudresden.inf.st.trainbenchmark.generator.json4agref.config.Json4AgRefGeneratorConfigBuilder
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase
-import hu.bme.mit.trainbenchmark.generator.config.Scenario
-import hu.bme.mit.trainbenchmark.generator.emf.config.EmfGeneratorConfigBuilder
-import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphFormat
-import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphGeneratorConfigBuilder
-import hu.bme.mit.trainbenchmark.generator.runner.GeneratorRunner
-
-def ec = new ExecutionConfig(4000, 6000)
-def minSize = 1
-/* def maxSize = 2048 *
-def maxSize = 256
-
-	def scenarios = [
-		Scenario.BATCH,
-		Scenario.INJECT,
-		Scenario.REPAIR,
-		]
-
-		def formats = [
-		new EmfGeneratorConfigBuilder(),
-		new TinkerGraphGeneratorConfigBuilder().setGraphFormat(TinkerGraphFormat.GRAPHML),
-		new Json4AgGeneratorConfigBuilder(),
-		new Json4AgRefGeneratorConfigBuilder()
-		]
-
-		for (scenario in scenarios) {
-		formats.each { generatorConfigBuilder ->
-		try {
-		for (def size = minSize; size <= maxSize; size *= 2) {
-		println("Scenario: ${scenario}, size: ${size}")
-
-		def configBase = new GeneratorConfigBase(scenario, size)
-		def config = generatorConfigBuilder.setConfigBase(configBase).createConfig()
-
-		def exitValue = GeneratorRunner.run(config, ec)
-		if (exitValue != 0) {
-		println "Timeout or error occured, skipping models for larger sizes. Error code: ${exitValue}"
-		break
-		}
-		}
-		} catch (all) {
-		println "Exception occured during execution."
-		}
-		}
-		}
-
- */
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/Utils.java b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/Utils.java
deleted file mode 100644
index e155896b5f1f21927c3328f37ed596288e8cd9fb..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/Utils.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package de.tudresden.inf.st.train.scripts;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * Utility methods for the main entry points.
- * Created by rschoene on 10/13/17.
- */
-public class Utils {
-	static Map<String, String> createJvmSettingsMap(BenchmarkSettingsBasics bbs) {
-		Map<String, String> result = new HashMap<>();
-		for (BenchmarkSettingsBasics.JVMSetting setting : bbs.getJvmSettings()) {
-			for (String toolName : setting.getApplyTo()) {
-				result.put(toolName, setting.getArgs());
-			}
-		}
-		return result;
-	}
-
-	private static File readFromResource(String filename) throws IOException {
-		URL basicSettingsURL = BenchmarkMain.class.getClassLoader().getResource(filename);
-		if (basicSettingsURL == null) {
-			System.err.println();
-			throw new IOException("Could not access " + filename + ". Exiting.");
-		}
-		return new File(basicSettingsURL.getFile());
-	}
-
-	static <T> T readFromResource(ObjectMapper mapper, String filename, Class<T> clazz) throws IOException {
-		File basicSettingsFile = readFromResource(filename);
-		T result = null;
-		try {
-			result = mapper.readValue(basicSettingsFile, clazz);
-		} catch (Exception e) {
-			System.err.println("Could not load '" + filename + "'. Exiting.");
-			e.printStackTrace();
-			System.exit(2);
-		}
-		return result;
-	}
-
-	static void updateBasicsWithLocal(BenchmarkSettingsBasics base, BenchmarkSettingsBasics local)
-			throws IllegalStateException {
-		List<Method> setter = Arrays.stream(BenchmarkSettingsBasics.class.getMethods())
-				.filter(m -> m.getName().startsWith("set"))
-				.collect(Collectors.toList());
-		for (Method method : BenchmarkSettingsBasics.class.getMethods()) {
-			final String name = method.getName().startsWith("get") ?
-					method.getName().substring(3) :
-					( method.getName().startsWith("is") ? method.getName().substring(2) : null);
-			if (name == null) {
-				continue;
-			}
-			try {
-				Object result = method.invoke(local);
-				if (result != null) {
-					Optional<Method> matchingSetter = setter.stream()
-							.filter(m -> m.getName().endsWith(name))
-							.findFirst();
-					if (matchingSetter.isPresent()) {
-						matchingSetter.get().invoke(base, result);
-					}
-				}
-				// now do sanity check if set in updated base
-				result = method.invoke(base);
-				if (result == null) {
-					throw new IllegalStateException("Basic setting for " + name + " is not given.");
-				}
-			} catch (IllegalAccessException | InvocationTargetException e) {
-				e.printStackTrace();
-			}
-		}
-	}
-
-	static ObjectMapper getMapper() {
-		ObjectMapper mapper = new ObjectMapper();
-		mapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
-		return mapper;
-	}
-
-	static Optional<Object> maybeCreateNewInstance(final String className) {
-		try {
-			return Optional.of(Class.forName(className).newInstance());
-		} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
-			System.err.println("Could not find builder class '" + className + "'");
-			e.printStackTrace();
-			return Optional.empty();
-		}
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/resources/basic-settings.json b/trainbenchmark/trainbenchmark-alternate-scripts/src/main/resources/basic-settings.json
deleted file mode 100644
index 89f84d78494895d06450c3c561ab790cd9e31af0..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/resources/basic-settings.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "minSize": 1,
-  "maxSize": 8,
-  "timeout": 900,
-  "runs": 1,
-  "dry-run": true,
-  "tools": [
-    "Jastadd (Name Lookup)",
-    "Jastadd (Incremental Name Lookup)",
-    "Jastadd (Optimized)",
-    "Jastadd (Optimized Incremental)",
-    "TinkerGraph",
-    "VIATRA (Incremental)",
-    "VIATRA (Local Search)"
-  ],
-  "formats": [
-    "emf",
-    "json4ag",
-    "json4ag-special",
-    "relast",
-    "graph-tinkerpop"
-  ],
-  "jvmSettings": [
-    {
-      "applyTo": ["*"],
-      "args": "-Xms%(Xms) -Xmx%(Xmx) -server -Xverify:none"
-    }
-  ]
-}
diff --git a/trainbenchmark/trainbenchmark-generator-relast/.editorconfig b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/.editorconfig
similarity index 100%
rename from trainbenchmark/trainbenchmark-generator-relast/.editorconfig
rename to trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/.editorconfig
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/build.gradle b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..8e82518636e74215bf5c20fe4445933ed9089083
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/build.gradle
@@ -0,0 +1,16 @@
+plugins {
+    id "com.github.johnrengelman.shadow" version "1.2.3"
+}
+
+shadowJar {
+    classifier = 'fat'
+    manifest {
+        attributes 'Main-Class': 'de.tudresden.inf.st.trainbenchmark.generator.jastadd.ManualIntrinsicGeneratorMain'
+    }
+}
+
+dependencies {
+    compile project(':trainbenchmark-tool')
+    compile project(':trainbenchmark-generator')
+    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8.1'
+}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/Json4AgSpecialGeneratorMain.java b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualIntrinsicGeneratorMain.java
similarity index 50%
rename from trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/Json4AgSpecialGeneratorMain.java
rename to trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualIntrinsicGeneratorMain.java
index ab487c0d6666a974b87dcb1071585513c53d7870..41f9a228ddeeb2b9193f9c99de891957a2f6733c 100644
--- a/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/Json4AgSpecialGeneratorMain.java
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualIntrinsicGeneratorMain.java
@@ -2,17 +2,17 @@
  * Created by rschoene on 5/11/17.
  */
 
-package de.tudresden.inf.st.trainbenchmark.generator.json4agspecial;
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd;
 
-import de.tudresden.inf.st.trainbenchmark.generator.json4agspecial.config.Json4AgSpecialGeneratorConfig;
+import de.tudresden.inf.st.trainbenchmark.generator.jastadd.config.ManualIntrinsicGeneratorConfig;
 import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
 import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
 import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
 
-public class Json4AgSpecialGeneratorMain {
+public class ManualIntrinsicGeneratorMain {
 	public static void main(String[] args) throws Exception {
-		final Json4AgSpecialGeneratorConfig gc = GeneratorConfig.fromFile(args[0], Json4AgSpecialGeneratorConfig.class);
-		final Json4AgSpecialSerializer serializer = new Json4AgSpecialSerializer(gc);
+		final ManualIntrinsicGeneratorConfig gc = GeneratorConfig.fromFile(args[0], ManualIntrinsicGeneratorConfig.class);
+		final ManualIntrinsicSerializer serializer = new ManualIntrinsicSerializer(gc);
 		final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
 		generator.generateModel();
 	}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/Json4AgSpecialSerializer.java b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualIntrinsicSerializer.java
similarity index 97%
rename from trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/Json4AgSpecialSerializer.java
rename to trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualIntrinsicSerializer.java
index 1f827af6379d7c3194b5a8fefc70ffdd995f01d3..1d09327c58d3629b8a548b2c10097f6848b2c58c 100644
--- a/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/Json4AgSpecialSerializer.java
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualIntrinsicSerializer.java
@@ -1,4 +1,4 @@
-package de.tudresden.inf.st.trainbenchmark.generator.json4agspecial;
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd;
 
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -6,7 +6,7 @@ import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.SerializerProvider;
 import com.fasterxml.jackson.databind.module.SimpleModule;
 import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import de.tudresden.inf.st.trainbenchmark.generator.json4agspecial.config.Json4AgSpecialGeneratorConfig;
+import de.tudresden.inf.st.trainbenchmark.generator.jastadd.config.ManualIntrinsicGeneratorConfig;
 import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
 
 import java.io.File;
@@ -18,7 +18,7 @@ import java.util.Map;
 
 import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
 
-public class Json4AgSpecialSerializer extends ModelSerializer<Json4AgSpecialGeneratorConfig> {
+public class ManualIntrinsicSerializer extends ModelSerializer<ManualIntrinsicGeneratorConfig> {
 
 	private ASTNonterminal container;
 
@@ -31,13 +31,13 @@ public class Json4AgSpecialSerializer extends ModelSerializer<Json4AgSpecialGene
 	}};
 
 
-	public Json4AgSpecialSerializer(final Json4AgSpecialGeneratorConfig generatorConfig) {
+	public ManualIntrinsicSerializer(final ManualIntrinsicGeneratorConfig generatorConfig) {
 		super(generatorConfig);
 	}
 
 	@Override
 	public String syntax() {
-		return "JSON4AGSPECIAL";
+		return "JASTADD-MANUAL-INTRINSIC";
 	}
 
 	@Override
@@ -65,7 +65,7 @@ public class Json4AgSpecialSerializer extends ModelSerializer<Json4AgSpecialGene
 		mapper.registerModule(module);
 
 		// write out JSON
-		String jsonPath = gc.getConfigBase().getModelPathWithoutExtension() + "-ag-special.json";
+		String jsonPath = gc.getConfigBase().getModelPathWithoutExtension() + "-jastadd-manual-intrinsic.json";
 		System.out.println(jsonPath);
 		mapper.writeValue(new File(jsonPath), container);
 	}
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualIntrinsicGeneratorConfig.java b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualIntrinsicGeneratorConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..b97020b333b511356b1cbef6bd89687ab0336e60
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualIntrinsicGeneratorConfig.java
@@ -0,0 +1,17 @@
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd.config;
+
+
+import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
+import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
+
+public class ManualIntrinsicGeneratorConfig extends GeneratorConfig {
+
+	protected ManualIntrinsicGeneratorConfig(final GeneratorConfigBase configBase) {
+		super(configBase);
+	}
+
+	@Override
+	public String getProjectName() {
+		return "jastadd-manual-intrinsic";
+	}
+}
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualIntrinsicGeneratorConfigBuilder.java b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualIntrinsicGeneratorConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f82df259e915b3aa06d023b1636d04a928e5702
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual-intrinsic/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualIntrinsicGeneratorConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
+
+public class ManualIntrinsicGeneratorConfigBuilder
+	extends GeneratorConfigBuilder<ManualIntrinsicGeneratorConfig, ManualIntrinsicGeneratorConfigBuilder> {
+
+	@Override
+	public ManualIntrinsicGeneratorConfig createConfig() {
+		checkNotNulls();
+		return new ManualIntrinsicGeneratorConfig(configBase);
+	}
+}
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-manual/.editorconfig b/trainbenchmark/trainbenchmark-generator-jastadd-manual/.editorconfig
new file mode 100644
index 0000000000000000000000000000000000000000..39bb2e3acab079d09cca4ccca554ab8f7e90c408
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual/.editorconfig
@@ -0,0 +1,10 @@
+root = true
+
+[*.java]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+max_line_length = 140
+trim_trailing_whitespace = true
\ No newline at end of file
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-manual/build.gradle b/trainbenchmark/trainbenchmark-generator-jastadd-manual/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..ccf142d0f2f2c10569848b67dba69cde793d1ea5
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual/build.gradle
@@ -0,0 +1,16 @@
+plugins {
+    id "com.github.johnrengelman.shadow" version "1.2.3"
+}
+
+shadowJar {
+    classifier = 'fat'
+    manifest {
+        attributes 'Main-Class': 'de.tudresden.inf.st.trainbenchmark.generator.jastadd.ManualGeneratorMain'
+    }
+}
+
+dependencies {
+    compile project(':trainbenchmark-tool')
+    compile project(':trainbenchmark-generator')
+    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8.1'
+}
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualGeneratorMain.java b/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualGeneratorMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..c747b1f94121132cad1cbe72cd2cf1295cbd00fb
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualGeneratorMain.java
@@ -0,0 +1,19 @@
+/**
+ * Created by rschoene on 5/11/17.
+ */
+
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd;
+
+import de.tudresden.inf.st.trainbenchmark.generator.jastadd.config.ManualGeneratorConfig;
+import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
+import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
+import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
+
+public class ManualGeneratorMain {
+  public static void main(String[] args) throws Exception {
+    final ManualGeneratorConfig gc = GeneratorConfig.fromFile(args[0], ManualGeneratorConfig.class);
+    final ManualSerializer serializer = new ManualSerializer(gc);
+    final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
+    generator.generateModel();
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualSerializer.java b/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualSerializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..741f7c77d73d2403fedc222ca408b03386a73e0a
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/ManualSerializer.java
@@ -0,0 +1,479 @@
+/**
+ * Created by rschoene on 5/11/17.
+ */
+
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import de.tudresden.inf.st.trainbenchmark.generator.jastadd.config.ManualGeneratorConfig;
+import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
+
+public class ManualSerializer extends ModelSerializer<ManualGeneratorConfig> {
+
+  private static final Map<String, String> STRUCTURE_EDGE_MAP = new HashMap<String, String>() {{
+    put(ELEMENTS, Children.TRACKELEMENT);
+    put(SENSORS, Children.SENSOR);
+    put(SEMAPHORES, Children.SEMAPHORE);
+    put(FOLLOWS, Children.SWITCHPOSITION);
+  }};
+  private static final Map<String, String> REFERENCE_EDGE_MAP = new HashMap<String, String>() {{
+    put(REQUIRES, Children.REQUIREDSENSOR);
+    put(CONNECTS_TO, Children.CONNECTSTO);
+  }};
+  private ASTNonterminal container;
+
+  public ManualSerializer(final ManualGeneratorConfig generatorConfig) {
+    super(generatorConfig);
+  }
+
+  private ASTNonterminal makeRef(int targetId, String type) {
+    ASTNonterminal refnt = new ASTNonterminal(type);
+    refnt.addChild(Children.VALUE, new ASTTerminal("int", targetId));
+    return refnt;
+  }
+
+  private ASTNonterminal makeRef(ASTNonterminal target, String type) {
+    int id = (int) ((ASTTerminal) target.getChildren().get(Children.ID)).getValue();
+    return makeRef(id, type);
+  }
+
+  @Override
+  public String syntax() {
+    return "JASTADD-MANUAL";
+  }
+
+  @Override
+  public void initModel() throws IOException {
+    container = new ASTNonterminal(Grammar.RAILWAYCONTAINER);
+    container.getChildren().put(Grammar.ROUTE, new ASTList());
+    container.getChildren().put(Grammar.REGION, new ASTList());
+  }
+
+  @Override
+  public void persistModel() throws IOException {
+
+    // Setup mapper with serializers
+    ObjectMapper mapper = new ObjectMapper();
+    mapper.disable(SerializationFeature.INDENT_OUTPUT);
+//        mapper.enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS);
+    SimpleModule module = new SimpleModule();
+    module.addSerializer(ASTNonterminal.class, new ASTNonterminalSerializer());
+    module.addSerializer(ASTList.class, new ASTListSerializer());
+    module.addSerializer(ASTOpt.class, new ASTOptSerializer());
+    module.addSerializer(ASTTerminal.class, new ASTTerminalSerializer());
+    module.addSerializer(ASTEnum.class, new ASTEnumSerializer());
+    mapper.registerModule(module);
+
+    // write out JSON
+    String jsonPath = gc.getConfigBase().getModelPathWithoutExtension() + "-jastadd-manual.json";
+    System.out.println(jsonPath);
+    mapper.writeValue(new File(jsonPath), container);
+  }
+
+  @Override
+  public Object createVertex(
+    final int id,
+    final String type,
+    final Map<String, ? extends Object> attributes,
+    final Map<String, Object> outgoingEdges,
+    final Map<String, Object> incomingEdges) throws IOException {
+
+    ASTNonterminal n = new ASTNonterminal(id, type);
+    switch (type) {
+      case REGION:
+        n.createListChild(Children.TRACKELEMENT).createListChild(Children.SENSOR);
+        ASTList regionList = (ASTList) container.getChildren().get(Grammar.REGION);
+        regionList.addChild(n);
+        break;
+      case SEMAPHORE:
+        if (attributes.get(SIGNAL) != null) {
+          n.addChild(Children.SIGNAL, new ASTEnum(Values.ENUM_SIGNAL, attributes.get(SIGNAL)));
+        }
+        break;
+      case ROUTE:
+        n.createListChild(Children.SWITCHPOSITION).createListChild(Children.REQUIREDSENSOR);
+        if (attributes.get(ACTIVE) != null) {
+          n.addChild(Children.ACTIVE, new ASTTerminal("boolean", attributes.get(ACTIVE)));
+        }
+        if (outgoingEdges.get(ENTRY) != null) {
+          n.addOptChild(Children.ENTRY, makeRef((ASTNonterminal) outgoingEdges.get(ENTRY), Grammar.SEMAPHORE_REF));
+        } else {
+          n.addOptChild(Children.ENTRY);
+        }
+        if (outgoingEdges.get(EXIT) != null) {
+          n.addOptChild(Children.EXIT, makeRef((ASTNonterminal) outgoingEdges.get(EXIT), Grammar.SEMAPHORE_REF));
+        } else {
+          n.addOptChild(Children.EXIT);
+        }
+        ASTList routeList = (ASTList) container.getChildren().get(Grammar.ROUTE);
+        routeList.addChild(n);
+        break;
+      case SWITCHPOSITION:
+        if (attributes.get(POSITION) != null) {
+          n.addChild(Children.POSITION, new ASTEnum(Values.ENUM_POSITION, attributes.get(POSITION)));
+        }
+        if (outgoingEdges.containsKey(TARGET)) {
+          n.addChild(Children.TARGET, makeRef((ASTNonterminal) outgoingEdges.get(TARGET), Grammar.SWITCH_REF));
+        }
+        break;
+      case SENSOR:
+        n.createListChild(Children.MONITOREDELEMENT);
+        break;
+      case SEGMENT:
+        n.createListChild(Children.CONNECTSTO).createListChild(Children.SEMAPHORE);
+        if (attributes.get(LENGTH) != null) {
+          n.addChild(Children.LENGTH, new ASTTerminal("int", attributes.get(LENGTH)));
+        }
+        break;
+      case SWITCH:
+        n.createListChild(Children.CONNECTSTO);
+        break;
+      default:
+        System.err.println(String.format("Unknown type of vertex: %s", type));
+    }
+    return n;
+  }
+
+  @Override
+  public void createEdge(final String label, final Object from, final Object to) throws IOException {
+
+    ASTNonterminal to_nt = (ASTNonterminal) to;
+    ASTNonterminal from_nt = (ASTNonterminal) from;
+    if (label.equals(MONITORED_BY)) {
+      ASTList listNode = (ASTList) to_nt.getChildren().get(Children.MONITOREDELEMENT);
+      if (from_nt.getType().equals(SWITCH)) {
+        listNode.addChild(makeRef(from_nt, Grammar.SWITCH_REF));
+      } else if (from_nt.getType().equals(SEGMENT)) {
+        listNode.addChild(makeRef(from_nt, Grammar.SEGMENT_REF));
+      } else {
+        throw new RuntimeException("A monitors edge could not be created because '" + from_nt.getType() + "' is the wrong outgoing type.");
+      }
+    } else if (STRUCTURE_EDGE_MAP.containsKey(label)) {
+      String realEdgeLabel = STRUCTURE_EDGE_MAP.get(label);
+      ASTNonterminal n = (ASTNonterminal) from;
+      ASTList listNode = (ASTList) n.getChildren().get(realEdgeLabel);
+      listNode.addChild((ASTNode) to);
+    } else {
+      String realEdgeLabel = REFERENCE_EDGE_MAP.get(label);
+      ASTNonterminal n = (ASTNonterminal) from;
+      ASTList listNode = (ASTList) n.getChildren().get(realEdgeLabel);
+      if (label.equals(REQUIRES)) {
+        listNode.addChild(makeRef((ASTNonterminal) to, Grammar.SENSOR_REF));
+      } else if (label.equals(CONNECTS_TO)) {
+        if (to_nt.getType().equals(SWITCH)) {
+          listNode.addChild(makeRef(to_nt, Grammar.SWITCH_REF));
+        } else if (to_nt.getType().equals(SEGMENT)) {
+          listNode.addChild(makeRef(to_nt, Grammar.SEGMENT_REF));
+        }
+      } else {
+        throw new RuntimeException("An edge could not be created because '" + label + "' is an umknown label.");
+      }
+    }
+  }
+
+  @Override
+  public void setAttribute(final String type, final Object node, final String key, final Object value)
+    throws IOException {
+    if (!key.equals(CURRENTPOSITION)) {
+      System.err.println(String.format("SetAttribute. Unexpected key: %s", type));
+      return;
+    }
+    ASTNonterminal n = (ASTNonterminal) node;
+    n.getChildren().put(Children.CURRENTPOSITION, new ASTEnum(Values.ENUM_POSITION, value));
+  }
+
+  static class Grammar {
+    static final String RAILWAYCONTAINER = "RailwayContainer";
+    static final String RAILWAYELEMENT = "RailwayElement";
+    static final String REGION = "Region";
+    static final String SEMAPHORE = "Semaphore";
+    static final String ROUTE = "Route";
+    static final String SWITCHPOSITION = "SwitchPosition";
+    static final String SENSOR = "Sensor";
+    static final String TRACKELEMENT = "TrackElement";
+    static final String SEGMENT = "Segment";
+    static final String SWITCH = "Switch";
+    static final String NAME = "Name";
+    static final String SENSOR_REF = "SensorRef";
+    static final String SEMAPHORE_REF = "SemaphoreRef";
+    static final String TRACKELEMENT_REF = "TrackElementRef";
+    static final String SWITCH_REF = "SwitchRef";
+    static final String SEGMENT_REF = "SegmentRef";
+  }
+
+  static class Children {
+    static final String ROUTE = "Route";
+    static final String REGION = "Region";
+    static final String ID = "Id";
+    static final String TRACKELEMENT = "TrackElement";
+    static final String SENSOR = "Sensor";
+    static final String SIGNAL = "Signal";
+    static final String ACTIVE = "Active";
+    static final String SWITCHPOSITION = "SwitchPosition";
+    static final String REQUIREDSENSOR = "RequiredSensor";
+    static final String ENTRY = "Entry";
+    static final String EXIT = "Exit";
+    static final String POSITION = "Position";
+    static final String TARGET = "Target";
+    static final String MONITOREDELEMENT = "MonitoredElement";
+    static final String CONNECTSTO = "ConnectedElement";
+    static final String LENGTH = "Length";
+    static final String SEMAPHORE = "Semaphore";
+    static final String CURRENTPOSITION = "CurrentPosition";
+    static final String VALUE = "Value";
+  }
+
+  static class Values {
+    static final String ENUM_SIGNAL = "de.tudresden.inf.st.train.jastadd.ast.Signal";
+    static final String ENUM_POSITION = "de.tudresden.inf.st.train.jastadd.ast.Position";
+  }
+
+  private abstract class ASTNode {
+    private String kind;
+    private String type;
+
+    ASTNode(String kind, String type) {
+      this.kind = kind;
+      this.type = type;
+    }
+
+    public String getKind() {
+      return kind;
+    }
+
+    public void setKind(String kind) {
+      this.kind = kind;
+    }
+
+    public String getType() {
+      return type;
+    }
+
+    public void setType(String type) {
+      this.type = type;
+    }
+  }
+
+  private class ASTNonterminal extends ASTNode {
+    private final Map<String, ASTNode> children;
+
+    ASTNonterminal(String _type) {
+      super("NT", _type);
+      children = new HashMap<>();
+    }
+
+    ASTNonterminal(int id, String _type) {
+      super("NT", _type);
+      children = new HashMap<>();
+      this.addChild(Children.ID, new ASTTerminal("int", id));
+    }
+
+    Map<String, ASTNode> getChildren() {
+      return children;
+    }
+
+    ASTNonterminal addChild(String key, ASTNode n) {
+      getChildren().put(key, n);
+      return this;
+    }
+
+    ASTNonterminal createListChild(String context) {
+      addChild(context, new ASTList());
+      return this;
+    }
+
+    ASTNonterminal addOptChild(String context) {
+      addChild(context, new ASTOpt());
+      return this;
+    }
+
+    ASTNonterminal addOptChild(String context, ASTNode n) {
+      addChild(context, new ASTOpt(n));
+      return this;
+    }
+  }
+
+  private class ASTList extends ASTNode {
+    private final List<ASTNode> children;
+
+    ASTList() {
+      super("List", null);
+      children = new ArrayList<>();
+    }
+
+    List<ASTNode> getChildren() {
+      return children;
+    }
+
+    ASTList addChild(ASTNode n) {
+      getChildren().add(n);
+      return this;
+    }
+  }
+
+  private class ASTOpt extends ASTNode {
+    private ASTNode child;
+
+    ASTOpt() {
+      super("Opt", null);
+      child = null;
+    }
+
+    ASTOpt(ASTNode child) {
+      super("Opt", null);
+      this.child = child;
+    }
+
+    boolean hasChild() {
+      return child != null;
+    }
+
+    ASTNode getChild() {
+      return child;
+    }
+
+    ASTOpt addChild(ASTNode n) {
+      child = n;
+      return this;
+    }
+  }
+
+  private class ASTTerminal extends ASTNode {
+    private final Object value;
+
+    ASTTerminal(String _type, Object value) {
+      super("t", _type);
+      this.value = value;
+    }
+
+    public Object getValue() {
+      return value;
+    }
+
+  }
+
+  private class ASTEnum extends ASTNode {
+    private final Object value;
+
+    ASTEnum(String _type, Object value) {
+      super("enum", _type);
+      this.value = value;
+    }
+
+    public Object getValue() {
+      return value;
+    }
+  }
+
+  public class ASTNonterminalSerializer extends StdSerializer<ASTNonterminal> {
+    public ASTNonterminalSerializer() {
+      this(null);
+    }
+
+    public ASTNonterminalSerializer(Class<ASTNonterminal> t) {
+      super(t);
+    }
+
+    @Override
+    public void serialize(ASTNonterminal value, JsonGenerator gen, SerializerProvider provider) throws IOException {
+      gen.writeStartObject();
+      gen.writeStringField("k", value.getKind());
+      gen.writeStringField("t", value.getType());
+      gen.writeObjectField("c", value.getChildren());
+      gen.writeEndObject();
+    }
+  }
+
+  public class ASTListSerializer extends StdSerializer<ASTList> {
+    public ASTListSerializer() {
+      this(null);
+    }
+
+    public ASTListSerializer(Class<ASTList> t) {
+      super(t);
+    }
+
+    @Override
+    public void serialize(ASTList value, JsonGenerator gen, SerializerProvider provider) throws IOException {
+      gen.writeStartObject();
+      gen.writeStringField("k", value.getKind());
+      gen.writeObjectField("c", value.getChildren());
+      gen.writeEndObject();
+    }
+  }
+
+  public class ASTOptSerializer extends StdSerializer<ASTOpt> {
+    public ASTOptSerializer() {
+      this(null);
+    }
+
+    public ASTOptSerializer(Class<ASTOpt> t) {
+      super(t);
+    }
+
+    @Override
+    public void serialize(ASTOpt value, JsonGenerator gen, SerializerProvider provider) throws IOException {
+      gen.writeStartObject();
+      gen.writeStringField("k", value.getKind());
+      if (value.hasChild()) {
+        gen.writeObjectField("c", value.getChild());
+      }
+      gen.writeEndObject();
+    }
+  }
+
+  public class ASTTerminalSerializer extends StdSerializer<ASTTerminal> {
+    public ASTTerminalSerializer() {
+      this(null);
+    }
+
+    public ASTTerminalSerializer(Class<ASTTerminal> t) {
+      super(t);
+    }
+
+    @Override
+    public void serialize(ASTTerminal value, JsonGenerator gen, SerializerProvider provider) throws IOException {
+      gen.writeStartObject();
+      gen.writeStringField("k", value.getKind());
+      gen.writeObjectField("t", value.getType());
+      gen.writeObjectField("v", value.getValue());
+      gen.writeEndObject();
+    }
+
+  }
+
+  public class ASTEnumSerializer extends StdSerializer<ASTEnum> {
+    public ASTEnumSerializer() {
+      this(null);
+    }
+
+    public ASTEnumSerializer(Class<ASTEnum> t) {
+      super(t);
+    }
+
+    @Override
+    public void serialize(ASTEnum value, JsonGenerator gen, SerializerProvider provider) throws IOException {
+      gen.writeStartObject();
+      gen.writeStringField("k", value.getKind());
+      gen.writeObjectField("t", value.getType());
+      gen.writeObjectField("v", value.getValue());
+      gen.writeEndObject();
+    }
+
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualGeneratorConfig.java b/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualGeneratorConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..61ca269c54e49e84c45c8687ae7dd77cbc7be601
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualGeneratorConfig.java
@@ -0,0 +1,20 @@
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd.config;
+
+/**
+ * Created by rschoene on 5/11/17.
+ */
+
+import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
+import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
+
+public class ManualGeneratorConfig extends GeneratorConfig {
+
+  protected ManualGeneratorConfig(final GeneratorConfigBase configBase) {
+    super(configBase);
+  }
+
+  @Override
+  public String getProjectName() {
+    return "jastadd-manual";
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualGeneratorConfigBuilder.java b/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualGeneratorConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..3a80207e74f5e4fc98b11801b283ed4a7722c6fc
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-manual/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/ManualGeneratorConfigBuilder.java
@@ -0,0 +1,16 @@
+/**
+ * Created by rschoene on 5/11/17.
+ */
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
+
+public class ManualGeneratorConfigBuilder
+  extends GeneratorConfigBuilder<ManualGeneratorConfig, ManualGeneratorConfigBuilder> {
+
+  @Override
+  public ManualGeneratorConfig createConfig() {
+    checkNotNulls();
+    return new ManualGeneratorConfig(configBase);
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-relast/.editorconfig b/trainbenchmark/trainbenchmark-generator-jastadd-relast/.editorconfig
new file mode 100644
index 0000000000000000000000000000000000000000..39bb2e3acab079d09cca4ccca554ab8f7e90c408
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-relast/.editorconfig
@@ -0,0 +1,10 @@
+root = true
+
+[*.java]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+max_line_length = 140
+trim_trailing_whitespace = true
\ No newline at end of file
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-relast/build.gradle b/trainbenchmark/trainbenchmark-generator-jastadd-relast/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..e905885a885862b765763191c38fa1ba5dcf38c9
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-relast/build.gradle
@@ -0,0 +1,17 @@
+plugins {
+    id "com.github.johnrengelman.shadow" version "1.2.3"
+}
+
+shadowJar {
+    classifier = 'fat'
+    manifest {
+        attributes 'Main-Class': 'de.tudresden.inf.st.trainbenchmark.generator.jastadd.RelASTGeneratorMain'
+    }
+}
+
+dependencies {
+    compile project(':trainbenchmark-tool')
+    compile project(':trainbenchmark-generator')
+    compile project(':trainbenchmark-tool-jastadd-relast')
+    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8.1'
+}
diff --git a/trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/RelASTGeneratorMain.java b/trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/RelASTGeneratorMain.java
similarity index 79%
rename from trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/RelASTGeneratorMain.java
rename to trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/RelASTGeneratorMain.java
index 476e780020e8dc18647bfacb26121784f60bebf6..d7dc1b5062fd762cbd8f5c72dfe89468c59c55ed 100644
--- a/trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/RelASTGeneratorMain.java
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/RelASTGeneratorMain.java
@@ -1,6 +1,6 @@
-package de.tudresden.inf.st.trainbenchmark.generator.relast;
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd;
 
-import de.tudresden.inf.st.trainbenchmark.generator.relast.config.RelASTGeneratorConfig;
+import de.tudresden.inf.st.trainbenchmark.generator.jastadd.config.RelASTGeneratorConfig;
 import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
 import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
 import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
diff --git a/trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/RelASTSerializer.java b/trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/RelASTSerializer.java
similarity index 96%
rename from trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/RelASTSerializer.java
rename to trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/RelASTSerializer.java
index 56608affc0ae924af87cf3777e2d1b0bff408441..b691d9ee2fb64dcd4cc5a9d07ce133bf80e49b5f 100644
--- a/trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/RelASTSerializer.java
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/RelASTSerializer.java
@@ -1,7 +1,7 @@
-package de.tudresden.inf.st.trainbenchmark.generator.relast;
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd;
 
 import de.tudresden.inf.st.train.jastadd.ast.*;
-import de.tudresden.inf.st.trainbenchmark.generator.relast.config.RelASTGeneratorConfig;
+import de.tudresden.inf.st.trainbenchmark.generator.jastadd.config.RelASTGeneratorConfig;
 import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
 
 import java.io.File;
@@ -20,7 +20,7 @@ public class RelASTSerializer extends ModelSerializer<RelASTGeneratorConfig> {
 
   @Override
   public String syntax() {
-    return "RELAST";
+    return "JASTADD-RELAST";
   }
 
   @Override
@@ -30,7 +30,7 @@ public class RelASTSerializer extends ModelSerializer<RelASTGeneratorConfig> {
 
   @Override
   public void persistModel() throws IOException {
-    String jsonPath = gc.getConfigBase().getModelPathWithoutExtension() + "-relast.json";
+    String jsonPath = gc.getConfigBase().getModelPathWithoutExtension() + "-jastadd-relast.json";
     System.out.println(jsonPath);
     try {
       container.resolveAll();
diff --git a/trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/config/RelASTGeneratorConfig.java b/trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/RelASTGeneratorConfig.java
similarity index 78%
rename from trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/config/RelASTGeneratorConfig.java
rename to trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/RelASTGeneratorConfig.java
index 21c17b11e6c076b1d7e45e3c8b700772d611ca2c..ed910d05c593db455839f9bcf0a008e76987753a 100644
--- a/trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/config/RelASTGeneratorConfig.java
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/RelASTGeneratorConfig.java
@@ -1,4 +1,4 @@
-package de.tudresden.inf.st.trainbenchmark.generator.relast.config;
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd.config;
 
 
 import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
@@ -12,6 +12,6 @@ public class RelASTGeneratorConfig extends GeneratorConfig {
 
   @Override
   public String getProjectName() {
-    return "relast";
+    return "jastadd-relast";
   }
 }
diff --git a/trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/RelASTGeneratorConfigBuilder.java b/trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/RelASTGeneratorConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..e20ee9ce84726d491ea6847f3cb5a67ef882b9a5
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-generator-jastadd-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/jastadd/config/RelASTGeneratorConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.trainbenchmark.generator.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
+
+public class RelASTGeneratorConfigBuilder
+  extends GeneratorConfigBuilder<RelASTGeneratorConfig, RelASTGeneratorConfigBuilder> {
+
+  @Override
+  public RelASTGeneratorConfig createConfig() {
+    checkNotNulls();
+    return new RelASTGeneratorConfig(configBase);
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag-special/build.gradle b/trainbenchmark/trainbenchmark-generator-json4ag-special/build.gradle
deleted file mode 100644
index 5c86a1138f26a6f8dc8e2e459ec0630d9b1209ca..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-json4ag-special/build.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-plugins {
-	id "com.github.johnrengelman.shadow" version "1.2.3"
-}
-
-shadowJar {
-	classifier = 'fat'
-	manifest {
-		attributes 'Main-Class': 'de.tudresden.inf.st.trainbenchmark.generator.json4agspecial.Json4AgSpecialGeneratorMain'
-	}
-}
-
-dependencies {
-  compile project(':trainbenchmark-tool')
-  compile project(':trainbenchmark-generator')
-  compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8.1'
-}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/config/Json4AgSpecialGeneratorConfig.java b/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/config/Json4AgSpecialGeneratorConfig.java
deleted file mode 100644
index f46788fe2d98af4e3aa71757233ced7522dd7c67..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/config/Json4AgSpecialGeneratorConfig.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package de.tudresden.inf.st.trainbenchmark.generator.json4agspecial.config;
-
-
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
-
-public class Json4AgSpecialGeneratorConfig extends GeneratorConfig {
-
-	protected Json4AgSpecialGeneratorConfig(final GeneratorConfigBase configBase) {
-		super(configBase);
-	}
-
-	@Override
-	public String getProjectName() {
-		return "json4ag-special";
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/config/Json4AgSpecialGeneratorConfigBuilder.java b/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/config/Json4AgSpecialGeneratorConfigBuilder.java
deleted file mode 100644
index 02b1c9f474e03fd5f2633784a55b1764e2b02a35..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-json4ag-special/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4agspecial/config/Json4AgSpecialGeneratorConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.trainbenchmark.generator.json4agspecial.config;
-
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
-
-public class Json4AgSpecialGeneratorConfigBuilder
-	extends GeneratorConfigBuilder<Json4AgSpecialGeneratorConfig, Json4AgSpecialGeneratorConfigBuilder> {
-
-	@Override
-	public Json4AgSpecialGeneratorConfig createConfig() {
-		checkNotNulls();
-		return new Json4AgSpecialGeneratorConfig(configBase);
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag/build.gradle b/trainbenchmark/trainbenchmark-generator-json4ag/build.gradle
deleted file mode 100644
index 9e99da559103051bda2c2ce769255aeacb69c427..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-json4ag/build.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-plugins {
-	id "com.github.johnrengelman.shadow" version "1.2.3"
-}
-
-shadowJar {
-	classifier = 'fat'
-	manifest {
-		attributes 'Main-Class': 'de.tudresden.inf.st.trainbenchmark.generator.json4ag.Json4AgGeneratorMain'
-	}
-}
-
-dependencies {
-  compile project(':trainbenchmark-tool')
-  compile project(':trainbenchmark-generator')
-  compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8.1'
-}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag/hand-crafted.json b/trainbenchmark/trainbenchmark-generator-json4ag/hand-crafted.json
deleted file mode 100644
index 0e251de4baf1862f88598ba619338eec70a3b852..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-json4ag/hand-crafted.json
+++ /dev/null
@@ -1,287 +0,0 @@
-{
-	"_kind": "NT",
-	"_type": "RailwayContainer",
-	"c": [
-		{
-			"_kind": "List",
-			"_type": "Route",
-			"c": [
-				{
-					"_kind": "NT",
-					"_type": "Route",
-					"c": [
-						{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 1 } ] },
-						{ "_kind": "t", "_type": "boolean", "name": "Active", "value": false },
-						{
-							"_kind": "List",
-							"_type": "SwitchPosition",
-							"c": [
-								{
-									"_kind": "NT",
-									"_type": "SwitchPosition",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 2 } ] },
-										{ "_kind": "enum", "_type": "Position", "name": "Position", "value": "DIVERGING"},
-										{ "_kind": "NT", "_type": "Ref", "name": "Target", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 11 } ]
-										}
-									]
-								}
-							]
-						},
-						{
-							"_kind": "List",
-							"_type": "Ref",
-							"name": "RequiredSensor",
-							"c": [
-								{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 3 } ] },
-								{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 4 } ] }
-							]
-						},
-						{ "_kind": "NT", "_type": "Ref", "name": "Entry", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 5 } ] },
-						{ "_kind": "NT", "_type": "Ref", "name": "Exit", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 15 } ] }
-					]
-				},
-				{
-					"_kind": "NT",
-					"_type": "Route",
-					"c": [
-						{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 6 } ] },
-						{ "_kind": "t", "_type": "boolean", "name": "Active", "value": true },
-						{
-							"_kind": "List",
-							"_type": "SwitchPosition",
-							"c": [
-								{
-									"_kind": "NT",
-									"_type": "SwitchPosition",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 7 } ] },
-										{ "_kind": "enum", "_type": "Position", "name": "Position", "value": "STRAIGHT"},
-										{ "_kind": "NT", "_type": "Ref", "name": "Target", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 11 } ] }
-									]
-								}
-							]
-						},
-						{
-							"_kind": "List",
-							"_type": "Ref",
-							"name": "RequiredSensor",
-							"c": [
-								{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 3 } ] },
-								{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 8 } ] }
-							]
-						},
-						{ "_kind": "NT", "_type": "Ref", "name": "Entry", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 5 } ] },
-						{ "_kind": "NT", "_type": "Ref", "name": "Exit", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 9 } ] }
-					]
-				}
-			]
-		},
-		{
-			"_kind": "List",
-			"_type": "Region",
-			"c": [
-				{
-					"_kind": "NT",
-					"_type": "Region",
-					"c": [
-						{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 16 } ] },
-												{
-							"_kind": "List",
-							"_type": "TrackElement",
-							"c": [
-								{
-									"_kind": "NT",
-									"_type": "Segment",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 10 } ] },
-										{
-											"_kind": "List",
-											"_type": "Ref",
-											"name": "ConnectsTo",
-											"c": [
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 11 } ] }
-											]
-										},
-										{ "_kind": "t", "_type": "int", "name": "Length", "value": 100 },
-										{
-											"_kind": "List",
-											"_type": "Semaphore",
-											"c": [
-												{
-													"_kind": "NT",
-													"_type": "Semaphore",
-													"c": [
-														{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 5 } ] },
-														{ "_kind": "enum", "_type": "Signal", "name": "Signal", "value": "GO" }
-													]
-												}
-											]
-										}
-									]
-								},
-								{
-									"_kind": "NT",
-									"_type": "Switch",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 11 } ] },
-										{
-											"_kind": "List",
-											"_type": "Ref",
-											"name": "ConnectsTo",
-											"c": [
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 12 } ] },
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 13 } ] }
-											]
-										},
-										{ "_kind": "enum", "_type": "Position", "name": "CurrentPosition", "value": "STRAIGHT" },
-										{
-											"_kind": "List",
-											"_type": "Ref",
-											"name": "PossiblePosition",
-											"c": [
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 2 } ] },
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 7 } ] }
-											]
-										}
-									]
-								},
-								{
-									"_kind": "NT",
-									"_type": "Segment",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 12 } ] },
-										{
-											"_kind": "List",
-											"_type": "Ref",
-											"name": "ConnectsTo",
-											"c": []
-										},
-										{ "_kind": "t", "_type": "int", "name": "Length", "value": 120 },
-										{
-											"_kind": "List",
-											"_type": "Semaphore",
-											"c": [
-												{
-													"_kind": "NT",
-													"_type": "Semaphore",
-													"c": [
-														{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 15 } ] },
-														{ "_kind": "enum", "_type": "Signal", "name": "Signal", "value": "FAILURE" }
-													]
-												}
-											]
-										}
-									]
-								},
-								{
-									"_kind": "NT",
-									"_type": "Segment",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 13 } ] },
-										{
-											"_kind": "List",
-											"_type": "Ref",
-											"name": "ConnectsTo",
-											"c": [
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 14 } ] }
-											]
-										},
-										{ "_kind": "t", "_type": "int", "name": "Length", "value": 130 },
-										{
-											"_kind": "List",
-											"_type": "Semaphore",
-											"c": []
-										}
-									]
-								},
-								{
-									"_kind": "NT",
-									"_type": "Segment",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 14 } ] },
-										{
-											"_kind": "List",
-											"_type": "Ref",
-											"name": "ConnectsTo",
-											"c": []
-										},
-										{ "_kind": "t", "_type": "int", "name": "Length", "value": 140 },
-										{
-											"_kind": "List",
-											"_type": "Semaphore",
-											"c": [
-												{
-													"_kind": "NT",
-													"_type": "Semaphore",
-													"c": [
-														{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 9 } ] },
-														{ "_kind": "enum", "_type": "Signal", "name": "Signal", "value": "STOP" }
-													]
-												}
-											]
-										}
-									]
-								}
-							]
-						},
-						{
-							"_kind": "List",
-							"_type": "Sensor",
-							"c": [
-								{
-									"_kind": "NT",
-									"_type": "Sensor",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 3 } ] },
-										{
-											"_kind": "List",
-											"_type": "Ref",
-											"name": "MonitoredElement",
-											"c": [
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 10 } ] },
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 11 } ] }
-											]
-										}
-									]
-								},
-								{
-									"_kind": "NT",
-									"_type": "Sensor",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 4 } ] },
-										{
-											"_kind": "List",
-											"_type": "Ref",
-											"name": "MonitoredElement",
-											"c": [
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 12 } ] }
-											]
-										}
-									]
-								},
-								{
-									"_kind": "NT",
-									"_type": "Sensor",
-									"c": [
-										{ "_kind": "NT", "_type": "Id", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 8 } ] },
-										{
-											"_kind": "List",
-											"_type": "Ref",
-											"name": "MonitoredElement",
-											"c": [
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 11 } ] },
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 13 } ] },
-												{ "_kind": "NT", "_type": "Ref", "c": [{ "_kind": "t", "_type": "int", "name": "Value", "value": 14 } ] }
-											]
-										}
-									]
-								}
-							]
-						}
-					]
-				}
-			]
-		}
-	]
-}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/Json4AgGeneratorMain.java b/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/Json4AgGeneratorMain.java
deleted file mode 100644
index 102d2166b8d4f66ac86f49d4847785a268b8cd3d..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/Json4AgGeneratorMain.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Created by rschoene on 5/11/17.
- */
-
-package de.tudresden.inf.st.trainbenchmark.generator.json4ag;
-
-import de.tudresden.inf.st.trainbenchmark.generator.json4ag.config.Json4AgGeneratorConfig;
-import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
-import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
-import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
-
-public class Json4AgGeneratorMain {
-	public static void main(String[] args) throws Exception {
-		final Json4AgGeneratorConfig gc = GeneratorConfig.fromFile(args[0], Json4AgGeneratorConfig.class);
-		final Json4AgSerializer serializer = new Json4AgSerializer(gc);
-		final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
-		generator.generateModel();
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/Json4AgSerializer.java b/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/Json4AgSerializer.java
deleted file mode 100644
index fc00c47324680f1ee878f12431650603088a0cc2..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/Json4AgSerializer.java
+++ /dev/null
@@ -1,481 +0,0 @@
-/**
- * Created by rschoene on 5/11/17.
- */
-
-package de.tudresden.inf.st.trainbenchmark.generator.json4ag;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import de.tudresden.inf.st.trainbenchmark.generator.json4ag.config.Json4AgGeneratorConfig;
-import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
-
-public class Json4AgSerializer extends ModelSerializer<Json4AgGeneratorConfig> {
-
-	private static final Map<String, String> STRUCTURE_EDGE_MAP = new HashMap<String, String>() {{
-		put(ELEMENTS, Children.TRACKELEMENT);
-		put(SENSORS, Children.SENSOR);
-		put(SEMAPHORES, Children.SEMAPHORE);
-		put(FOLLOWS, Children.SWITCHPOSITION);
-	}};
-	private static final Map<String, String> REFERENCE_EDGE_MAP = new HashMap<String, String>() {{
-		put(REQUIRES, Children.REQUIREDSENSOR);
-		put(CONNECTS_TO, Children.CONNECTSTO);
-	}};
-	private ASTNonterminal container;
-
-	public Json4AgSerializer(final Json4AgGeneratorConfig generatorConfig) {
-		super(generatorConfig);
-	}
-
-	private ASTNonterminal makeRef(int targetId, String type) {
-		ASTNonterminal refnt = new ASTNonterminal(type);
-		refnt.addChild(Children.VALUE, new ASTTerminal("int", targetId));
-		return refnt;
-	}
-
-	private ASTNonterminal makeRef(ASTNonterminal target, String type) {
-		int id = (int) ((ASTTerminal) target.getChildren().get(Children.ID)).getValue();
-		return makeRef(id, type);
-	}
-
-	@Override
-	public String syntax() {
-		return "JSON4AG";
-	}
-
-	@Override
-	public void initModel() throws IOException {
-		String rawPath = gc.getConfigBase().getModelPathWithoutExtension() + "-raw.txt";
-		final File rawFile = new File(rawPath);
-		container = new ASTNonterminal(Grammar.RAILWAYCONTAINER);
-		container.getChildren().put(Grammar.ROUTE, new ASTList());
-		container.getChildren().put(Grammar.REGION, new ASTList());
-	}
-
-	@Override
-	public void persistModel() throws IOException {
-
-		// Setup mapper with serializers
-		ObjectMapper mapper = new ObjectMapper();
-		mapper.disable(SerializationFeature.INDENT_OUTPUT);
-//        mapper.enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS);
-		SimpleModule module = new SimpleModule();
-		module.addSerializer(ASTNonterminal.class, new ASTNonterminalSerializer());
-		module.addSerializer(ASTList.class, new ASTListSerializer());
-		module.addSerializer(ASTOpt.class, new ASTOptSerializer());
-		module.addSerializer(ASTTerminal.class, new ASTTerminalSerializer());
-		module.addSerializer(ASTEnum.class, new ASTEnumSerializer());
-		mapper.registerModule(module);
-
-		// write out JSON
-		String jsonPath = gc.getConfigBase().getModelPathWithoutExtension() + "-ag.json";
-		System.out.println(jsonPath);
-		mapper.writeValue(new File(jsonPath), container);
-	}
-
-	@Override
-	public Object createVertex(
-		final int id,
-		final String type,
-		final Map<String, ? extends Object> attributes,
-		final Map<String, Object> outgoingEdges,
-		final Map<String, Object> incomingEdges) throws IOException {
-
-		ASTNonterminal n = new ASTNonterminal(id, type);
-		switch (type) {
-			case REGION:
-				n.createListChild(Children.TRACKELEMENT).createListChild(Children.SENSOR);
-				ASTList regionList = (ASTList) container.getChildren().get(Grammar.REGION);
-				regionList.addChild(n);
-				break;
-			case SEMAPHORE:
-				if (attributes.get(SIGNAL) != null) {
-					n.addChild(Children.SIGNAL, new ASTEnum(Values.ENUM_SIGNAL, attributes.get(SIGNAL)));
-				}
-				break;
-			case ROUTE:
-				n.createListChild(Children.SWITCHPOSITION).createListChild(Children.REQUIREDSENSOR);
-				if (attributes.get(ACTIVE) != null) {
-					n.addChild(Children.ACTIVE, new ASTTerminal("boolean", attributes.get(ACTIVE)));
-				}
-				if (outgoingEdges.get(ENTRY) != null) {
-					n.addOptChild(Children.ENTRY, makeRef((ASTNonterminal) outgoingEdges.get(ENTRY), Grammar.SEMAPHORE_REF));
-				} else {
-					n.addOptChild(Children.ENTRY);
-				}
-				if (outgoingEdges.get(EXIT) != null) {
-					n.addOptChild(Children.EXIT, makeRef((ASTNonterminal) outgoingEdges.get(EXIT), Grammar.SEMAPHORE_REF));
-				} else {
-					n.addOptChild(Children.EXIT);
-				}
-				ASTList routeList = (ASTList) container.getChildren().get(Grammar.ROUTE);
-				routeList.addChild(n);
-				break;
-			case SWITCHPOSITION:
-				if (attributes.get(POSITION) != null) {
-					n.addChild(Children.POSITION, new ASTEnum(Values.ENUM_POSITION, attributes.get(POSITION)));
-				}
-				if (outgoingEdges.containsKey(TARGET)) {
-					n.addChild(Children.TARGET, makeRef((ASTNonterminal) outgoingEdges.get(TARGET), Grammar.SWITCH_REF));
-				}
-				break;
-			case SENSOR:
-				n.createListChild(Children.MONITOREDELEMENT);
-				break;
-			case SEGMENT:
-				n.createListChild(Children.CONNECTSTO).createListChild(Children.SEMAPHORE);
-				if (attributes.get(LENGTH) != null) {
-					n.addChild(Children.LENGTH, new ASTTerminal("int", attributes.get(LENGTH)));
-				}
-				break;
-			case SWITCH:
-				n.createListChild(Children.CONNECTSTO);
-				break;
-			default:
-				System.err.println(String.format("Unknown type of vertex: %s", type));
-		}
-		return n;
-	}
-
-	@Override
-	public void createEdge(final String label, final Object from, final Object to) throws IOException {
-
-		ASTNonterminal to_nt = (ASTNonterminal) to;
-		ASTNonterminal from_nt = (ASTNonterminal) from;
-		if (label.equals(MONITORED_BY)) {
-			ASTList listNode = (ASTList) to_nt.getChildren().get(Children.MONITOREDELEMENT);
-			if (from_nt.getType().equals(SWITCH)) {
-				listNode.addChild(makeRef(from_nt, Grammar.SWITCH_REF));
-			} else if (from_nt.getType().equals(SEGMENT)) {
-				listNode.addChild(makeRef(from_nt, Grammar.SEGMENT_REF));
-			} else {
-				throw new RuntimeException("A monitors edge could not be created because '" + from_nt.getType() + "' is the wrong outgoing type.");
-			}
-		} else if (STRUCTURE_EDGE_MAP.containsKey(label)) {
-			String realEdgeLabel = STRUCTURE_EDGE_MAP.get(label);
-			ASTNonterminal n = (ASTNonterminal) from;
-			ASTList listNode = (ASTList) n.getChildren().get(realEdgeLabel);
-			listNode.addChild((ASTNode) to);
-		} else {
-			String realEdgeLabel = REFERENCE_EDGE_MAP.get(label);
-			ASTNonterminal n = (ASTNonterminal) from;
-			ASTList listNode = (ASTList) n.getChildren().get(realEdgeLabel);
-			if (label.equals(REQUIRES)) {
-				listNode.addChild(makeRef((ASTNonterminal) to, Grammar.SENSOR_REF));
-			} else if (label.equals(CONNECTS_TO)) {
-				if (to_nt.getType().equals(SWITCH)) {
-					listNode.addChild(makeRef(to_nt, Grammar.SWITCH_REF));
-				} else if (to_nt.getType().equals(SEGMENT)) {
-					listNode.addChild(makeRef(to_nt, Grammar.SEGMENT_REF));
-				}
-			} else {
-				throw new RuntimeException("An edge could not be created because '" + label + "' is an umknown label.");
-			}
-		}
-	}
-
-	@Override
-	public void setAttribute(final String type, final Object node, final String key, final Object value)
-		throws IOException {
-		if (!key.equals(CURRENTPOSITION)) {
-			System.err.println(String.format("SetAttribute. Unexpected key: %s", type));
-			return;
-		}
-		ASTNonterminal n = (ASTNonterminal) node;
-		n.getChildren().put(Children.CURRENTPOSITION, new ASTEnum(Values.ENUM_POSITION, value));
-	}
-
-	static class Grammar {
-		static final String RAILWAYCONTAINER = "RailwayContainer";
-		static final String RAILWAYELEMENT = "RailwayElement";
-		static final String REGION = "Region";
-		static final String SEMAPHORE = "Semaphore";
-		static final String ROUTE = "Route";
-		static final String SWITCHPOSITION = "SwitchPosition";
-		static final String SENSOR = "Sensor";
-		static final String TRACKELEMENT = "TrackElement";
-		static final String SEGMENT = "Segment";
-		static final String SWITCH = "Switch";
-		static final String NAME = "Name";
-		static final String SENSOR_REF = "SensorRef";
-		static final String SEMAPHORE_REF = "SemaphoreRef";
-		static final String TRACKELEMENT_REF = "TrackElementRef";
-		static final String SWITCH_REF = "SwitchRef";
-		static final String SEGMENT_REF = "SegmentRef";
-	}
-
-	static class Children {
-		static final String ROUTE = "Route";
-		static final String REGION = "Region";
-		static final String ID = "Id";
-		static final String TRACKELEMENT = "TrackElement";
-		static final String SENSOR = "Sensor";
-		static final String SIGNAL = "Signal";
-		static final String ACTIVE = "Active";
-		static final String SWITCHPOSITION = "SwitchPosition";
-		static final String REQUIREDSENSOR = "RequiredSensor";
-		static final String ENTRY = "Entry";
-		static final String EXIT = "Exit";
-		static final String POSITION = "Position";
-		static final String TARGET = "Target";
-		static final String MONITOREDELEMENT = "MonitoredElement";
-		static final String CONNECTSTO = "ConnectedElement";
-		static final String LENGTH = "Length";
-		static final String SEMAPHORE = "Semaphore";
-		static final String CURRENTPOSITION = "CurrentPosition";
-		static final String VALUE = "Value";
-	}
-
-	static class Values {
-		static final String ENUM_SIGNAL = "de.tudresden.inf.st.train.jastadd.ast.Signal";
-		static final String ENUM_POSITION = "de.tudresden.inf.st.train.jastadd.ast.Position";
-	}
-
-	private abstract class ASTNode {
-		private String kind;
-		private String type;
-
-		ASTNode(String kind, String type) {
-			this.kind = kind;
-			this.type = type;
-		}
-
-		public String getKind() {
-			return kind;
-		}
-
-		public void setKind(String kind) {
-			this.kind = kind;
-		}
-
-		public String getType() {
-			return type;
-		}
-
-		public void setType(String type) {
-			this.type = type;
-		}
-	}
-
-	private class ASTNonterminal extends ASTNode {
-		private final Map<String, ASTNode> children;
-
-		ASTNonterminal(String _type) {
-			super("NT", _type);
-			children = new HashMap<>();
-		}
-
-		ASTNonterminal(int id, String _type) {
-			super("NT", _type);
-			children = new HashMap<>();
-			this.addChild(Children.ID, new ASTTerminal("int", id));
-		}
-
-		Map<String, ASTNode> getChildren() {
-			return children;
-		}
-
-		ASTNonterminal addChild(String key, ASTNode n) {
-			getChildren().put(key, n);
-			return this;
-		}
-
-		ASTNonterminal createListChild(String context) {
-			addChild(context, new ASTList());
-			return this;
-		}
-
-		ASTNonterminal addOptChild(String context) {
-			addChild(context, new ASTOpt());
-			return this;
-		}
-
-		ASTNonterminal addOptChild(String context, ASTNode n) {
-			addChild(context, new ASTOpt(n));
-			return this;
-		}
-	}
-
-	private class ASTList extends ASTNode {
-		private final List<ASTNode> children;
-
-		ASTList() {
-			super("List", null);
-			children = new ArrayList<>();
-		}
-
-		List<ASTNode> getChildren() {
-			return children;
-		}
-
-		ASTList addChild(ASTNode n) {
-			getChildren().add(n);
-			return this;
-		}
-	}
-
-	private class ASTOpt extends ASTNode {
-		private ASTNode child;
-
-		ASTOpt() {
-			super("Opt", null);
-			child = null;
-		}
-
-		ASTOpt(ASTNode child) {
-			super("Opt", null);
-			this.child = child;
-		}
-
-		boolean hasChild() {
-			return child != null;
-		}
-
-		ASTNode getChild() {
-			return child;
-		}
-
-		ASTOpt addChild(ASTNode n) {
-			child = n;
-			return this;
-		}
-	}
-
-	private class ASTTerminal extends ASTNode {
-		private final Object value;
-
-		ASTTerminal(String _type, Object value) {
-			super("t", _type);
-			this.value = value;
-		}
-
-		public Object getValue() {
-			return value;
-		}
-
-	}
-
-	private class ASTEnum extends ASTNode {
-		private final Object value;
-
-		ASTEnum(String _type, Object value) {
-			super("enum", _type);
-			this.value = value;
-		}
-
-		public Object getValue() {
-			return value;
-		}
-	}
-
-	public class ASTNonterminalSerializer extends StdSerializer<ASTNonterminal> {
-		public ASTNonterminalSerializer() {
-			this(null);
-		}
-
-		public ASTNonterminalSerializer(Class<ASTNonterminal> t) {
-			super(t);
-		}
-
-		@Override
-		public void serialize(ASTNonterminal value, JsonGenerator gen, SerializerProvider provider) throws IOException {
-			gen.writeStartObject();
-			gen.writeStringField("k", value.getKind());
-			gen.writeStringField("t", value.getType());
-			gen.writeObjectField("c", value.getChildren());
-			gen.writeEndObject();
-		}
-	}
-
-	public class ASTListSerializer extends StdSerializer<ASTList> {
-		public ASTListSerializer() {
-			this(null);
-		}
-
-		public ASTListSerializer(Class<ASTList> t) {
-			super(t);
-		}
-
-		@Override
-		public void serialize(ASTList value, JsonGenerator gen, SerializerProvider provider) throws IOException {
-			gen.writeStartObject();
-			gen.writeStringField("k", value.getKind());
-			gen.writeObjectField("c", value.getChildren());
-			gen.writeEndObject();
-		}
-	}
-
-	public class ASTOptSerializer extends StdSerializer<ASTOpt> {
-		public ASTOptSerializer() {
-			this(null);
-		}
-
-		public ASTOptSerializer(Class<ASTOpt> t) {
-			super(t);
-		}
-
-		@Override
-		public void serialize(ASTOpt value, JsonGenerator gen, SerializerProvider provider) throws IOException {
-			gen.writeStartObject();
-			gen.writeStringField("k", value.getKind());
-			if (value.hasChild()) {
-				gen.writeObjectField("c", value.getChild());
-			}
-			gen.writeEndObject();
-		}
-	}
-
-	public class ASTTerminalSerializer extends StdSerializer<ASTTerminal> {
-		public ASTTerminalSerializer() {
-			this(null);
-		}
-
-		public ASTTerminalSerializer(Class<ASTTerminal> t) {
-			super(t);
-		}
-
-		@Override
-		public void serialize(ASTTerminal value, JsonGenerator gen, SerializerProvider provider) throws IOException {
-			gen.writeStartObject();
-			gen.writeStringField("k", value.getKind());
-			gen.writeObjectField("t", value.getType());
-			gen.writeObjectField("v", value.getValue());
-			gen.writeEndObject();
-		}
-
-	}
-
-	public class ASTEnumSerializer extends StdSerializer<ASTEnum> {
-		public ASTEnumSerializer() {
-			this(null);
-		}
-
-		public ASTEnumSerializer(Class<ASTEnum> t) {
-			super(t);
-		}
-
-		@Override
-		public void serialize(ASTEnum value, JsonGenerator gen, SerializerProvider provider) throws IOException {
-			gen.writeStartObject();
-			gen.writeStringField("k", value.getKind());
-			gen.writeObjectField("t", value.getType());
-			gen.writeObjectField("v", value.getValue());
-			gen.writeEndObject();
-		}
-
-	}
-
-}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/config/Json4AgGeneratorConfig.java b/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/config/Json4AgGeneratorConfig.java
deleted file mode 100644
index 9b8d715ab8e22512752f4c85c79f26358c66de30..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/config/Json4AgGeneratorConfig.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package de.tudresden.inf.st.trainbenchmark.generator.json4ag.config;
-
-/**
- * Created by rschoene on 5/11/17.
- */
-
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
-
-public class Json4AgGeneratorConfig extends GeneratorConfig {
-
-	protected Json4AgGeneratorConfig(final GeneratorConfigBase configBase) {
-		super(configBase);
-	}
-
-	@Override
-	public String getProjectName() {
-		return "json4ag";
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/config/Json4AgGeneratorConfigBuilder.java b/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/config/Json4AgGeneratorConfigBuilder.java
deleted file mode 100644
index 3ef03e917b32cf2e83f55092fef0ad2eefc47fe1..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-json4ag/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/json4ag/config/Json4AgGeneratorConfigBuilder.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Created by rschoene on 5/11/17.
- */
-package de.tudresden.inf.st.trainbenchmark.generator.json4ag.config;
-
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
-
-public class Json4AgGeneratorConfigBuilder
-	extends GeneratorConfigBuilder<Json4AgGeneratorConfig, Json4AgGeneratorConfigBuilder> {
-
-	@Override
-	public Json4AgGeneratorConfig createConfig() {
-		checkNotNulls();
-		return new Json4AgGeneratorConfig(configBase);
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-generator-relast/build.gradle b/trainbenchmark/trainbenchmark-generator-relast/build.gradle
deleted file mode 100644
index b32ce8a4848c2ceece863a7a56b9df28d64cc0e4..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-relast/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-plugins {
-  id "com.github.johnrengelman.shadow" version "1.2.3"
-}
-
-shadowJar {
-  classifier = 'fat'
-  manifest {
-    attributes 'Main-Class': 'de.tudresden.inf.st.trainbenchmark.generator.relast.RelASTGeneratorMain'
-  }
-}
-
-dependencies {
-  compile project(':trainbenchmark-tool')
-  compile project(':trainbenchmark-generator')
-  compile project(':trainbenchmark-tool-jastadd-relast')
-  compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8.1'
-}
diff --git a/trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/config/RelASTGeneratorConfigBuilder.java b/trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/config/RelASTGeneratorConfigBuilder.java
deleted file mode 100644
index 94ec5cc83d732049c70391477cb879605bc12b73..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-generator-relast/src/main/java/de/tudresden/inf/st/trainbenchmark/generator/relast/config/RelASTGeneratorConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.trainbenchmark.generator.relast.config;
-
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
-
-public class RelASTGeneratorConfigBuilder
-	extends GeneratorConfigBuilder<RelASTGeneratorConfig, RelASTGeneratorConfigBuilder> {
-
-	@Override
-	public RelASTGeneratorConfig createConfig() {
-		checkNotNulls();
-		return new RelASTGeneratorConfig(configBase);
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-reporting/merge_results.json b/trainbenchmark/trainbenchmark-reporting/merge_results.json
index d8de85321024170135a651f07de7db5d5c36a8d8..37aba9be6d1b61c229c4cef0efb3b1d410214229 100644
--- a/trainbenchmark/trainbenchmark-reporting/merge_results.json
+++ b/trainbenchmark/trainbenchmark-reporting/merge_results.json
@@ -1,24 +1,11 @@
 {
   "tools": [
     "tinkergraph",
-    "drools",
-    "mysql",
-    "kiama",
     "jastadd-java-references",
     "jastadd-java-references-incremental",
     "jastadd-symbolic-references-incremental",
     "jastadd-symbolic-references",
-    "sqlite",
-    "viatra",
-    "racr-cpp",
-    "racr-python",
-    "racr-scheme",
-    "neo4j",
-    "sesame",
-    "emfapi",
-    "rdf4j",
-    "epsilon",
-    "eclipseocl"
+    "viatra"
   ],
   "ignored": [
   ],
diff --git a/trainbenchmark/trainbenchmark-reporting/tool-list.csv b/trainbenchmark/trainbenchmark-reporting/tool-list.csv
index b9bcfdc931cc531f530fb39e62eca53362d43d46..a1c456ec8911a42c590afb6bb85cbe7fbc687fe8 100644
--- a/trainbenchmark/trainbenchmark-reporting/tool-list.csv
+++ b/trainbenchmark/trainbenchmark-reporting/tool-list.csv
@@ -1,25 +1,12 @@
 Tool
-Drools
-Eclipse OCL
-EMF API
-Jena (Inferencing)
-Jena (No Inferencing)
-MySQL
-Neo4j (Core API-CSV)
-Neo4j (Cypher-GraphML)
-Racr (Scheme)
-Racr (Python)
-Racr (CPP)
-RDF4J (No Inferencing)
-SQLite
-Jastadd (Name Lookup)
-Jastadd (Incremental Name Lookup)
-Jastadd (Optimized)
-Jastadd (Optimized Incremental)
-Jastadd (Specialized)
-Jastadd (Specialized Incremental)
-
-Kiama
+Name Lookup
+Name Lookup (Incremental)
+Intrinsic References
+Intrinsic References (Incremental)
+Grammar Extension
+Grammar Extension (Incremental)
+Grammar Extension (Manual Serialization)
+Grammar Extension (Manual Serialization, Incremental)
 TinkerGraph
 VIATRA (Incremental)
 VIATRA (Local Search)
diff --git a/trainbenchmark/trainbenchmark-scripts/.editorconfig b/trainbenchmark/trainbenchmark-scripts/.editorconfig
new file mode 100644
index 0000000000000000000000000000000000000000..3849aaa64e5c07d7fa65ff37eba19ea6bba86b6f
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/.editorconfig
@@ -0,0 +1,10 @@
+root = true
+
+[*.java]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+max_line_length = 140
+trim_trailing_whitespace = true
diff --git a/trainbenchmark/trainbenchmark-scripts/build.gradle b/trainbenchmark/trainbenchmark-scripts/build.gradle
index ab58cd97aaa02e2dfc1a4e58ef0c24b7437bf705..f2b403dc1093cbdcc91dd155eea139e885436864 100644
--- a/trainbenchmark/trainbenchmark-scripts/build.gradle
+++ b/trainbenchmark/trainbenchmark-scripts/build.gradle
@@ -1,150 +1,81 @@
-apply plugin: 'groovy'
-
 dependencies {
-	compile localGroovy()
-	compile project(':trainbenchmark-generator')
-	compile project(':trainbenchmark-generator-emf')
-	compile project(':trainbenchmark-generator-graph-tinkerpop')
-	compile project(':trainbenchmark-generator-json4ag')
-	compile project(':trainbenchmark-generator-json4ag-special')
-	compile project(':trainbenchmark-generator-relast')
-	compile project(':trainbenchmark-generator-dot')
-	compile project(':trainbenchmark-tool')
-	compile project(':trainbenchmark-tool-jastadd-namelookup')
-	compile project(':trainbenchmark-tool-jastadd-namelookup-incremental')
-	compile project(':trainbenchmark-tool-jastadd-optimized')
-	compile project(':trainbenchmark-tool-jastadd-optimized-incremental')
-	compile project(':trainbenchmark-tool-jastadd-specialized')
-	compile project(':trainbenchmark-tool-jastadd-specialized-incremental')
-	compile project(':trainbenchmark-tool-jastadd-relast')
-	compile project(':trainbenchmark-tool-jastadd-relast-incremental')
-	compile project(':trainbenchmark-tool-tinkergraph')
-	compile project(':trainbenchmark-tool-viatra')
-}
-
-sourceSets {
-	main {
-		groovy { srcDirs = ['src']}
-	}
-}
-
-/**
- * Initialize the generator, benchmark, etc. scripts in src directory,
- * based on the template script in the src-template directory.
- */
-task initScripts(type: Copy) {
-	from 'src-template'
-	into 'src'
-	include '*.groovy'
-}
-
-/**
- * Save the current scripts from the src directory to the src-template directory.
- * Use with caution and double check the diffs before committing the changes.
- */
-task saveScripts(type: Copy) {
-	from 'src'
-	into 'src-template'
-	include '*.groovy'
+    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.2.3'
+    compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.3.0'
+
+    compile project(':trainbenchmark-generator')
+    compile project(':trainbenchmark-generator-emf')
+    compile project(':trainbenchmark-generator-graph-tinkerpop')
+    compile project(':trainbenchmark-generator-jastadd-manual')
+    compile project(':trainbenchmark-generator-jastadd-manual-intrinsic')
+    compile project(':trainbenchmark-generator-jastadd-relast')
+    compile project(':trainbenchmark-generator-dot')
+    compile project(':trainbenchmark-tool')
+    compile project(':trainbenchmark-tool-jastadd-namelookup')
+    compile project(':trainbenchmark-tool-jastadd-namelookup-incremental')
+    compile project(':trainbenchmark-tool-jastadd-intrinsic')
+    compile project(':trainbenchmark-tool-jastadd-intrinsic-incremental')
+    compile project(':trainbenchmark-tool-jastadd-manual-relast')
+    compile project(':trainbenchmark-tool-jastadd-manual-relast-incremental')
+    compile project(':trainbenchmark-tool-jastadd-relast')
+    compile project(':trainbenchmark-tool-jastadd-relast-incremental')
+    compile project(':trainbenchmark-tool-tinkergraph')
+    compile project(':trainbenchmark-tool-viatra')
 }
 
 task cleanResults(type: Delete) {
-	doLast {
-		def resultDir = "../results"
-		file(resultDir).eachDir{ dir ->
-			delete "${dir}"
-		}
-	}
+    doLast {
+        def resultDir = "../results"
+        file(resultDir).eachDir { dir ->
+            delete "${dir}"
+        }
+    }
 }
 
-task benchmark(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	description = 'Runs the \'classic\' TrainBenchmark script'
-	main = 'BenchmarkScript'
-	classpath = sourceSets.main.runtimeClasspath
+task combinedBenchmark(dependsOn: 'classes', type: JavaExec) {
+    group = 'Benchmark'
+    description = 'Runs the \'classic\' TrainBenchmark script'
+    main = 'de.tudresden.inf.st.train.scripts.BenchmarkMain'
+    classpath = sourceSets.main.runtimeClasspath
+    args 'combined'
 }
 
 task individualRepairBenchmark(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	main = 'IndividualBenchmarkRepairScript'
-	classpath = sourceSets.main.runtimeClasspath
+    group = 'Benchmark'
+    main = 'de.tudresden.inf.st.train.scripts.BenchmarkMain'
+    classpath = sourceSets.main.runtimeClasspath
+    args 'individual_repair'
 }
 
 task individualInjectBenchmark(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	main = 'IndividualBenchmarkInjectScript'
-	classpath = sourceSets.main.runtimeClasspath
+    group = 'Benchmark'
+    main = 'de.tudresden.inf.st.train.scripts.BenchmarkMain'
+    classpath = sourceSets.main.runtimeClasspath
+    args 'individual_inject'
 }
 
 task individualIncrementalBenchmark(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	main = 'IndividualBenchmarkIncrementalScript'
-	classpath = sourceSets.main.runtimeClasspath
-}
-
-task generate(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	main = 'GeneratorScript'
-	classpath = sourceSets.main.runtimeClasspath
+    group = 'Benchmark'
+    main = 'de.tudresden.inf.st.train.scripts.BenchmarkMain'
+    classpath = sourceSets.main.runtimeClasspath
+    args 'individual_incremental'
 }
 
-task memory(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	main = 'MemoryScript'
-	classpath = sourceSets.main.runtimeClasspath
-}
 
-task qpt(dependsOn: 'classes', type: JavaExec) {
-	group = 'Benchmark'
-	main = 'QueryPlanTester'
-	classpath = sourceSets.main.runtimeClasspath
+task generate(dependsOn: 'classes', type: JavaExec) {
+    group = 'Benchmark'
+    description = 'Generates the models for all benchmarks'
+    main = 'de.tudresden.inf.st.train.scripts.GenerateMain'
+    classpath = sourceSets.main.runtimeClasspath
 }
 
-generate.dependsOn(":trainbenchmark-generator-emf:shadowJar")
-generate.dependsOn(":trainbenchmark-generator-json4ag:shadowJar")
-generate.dependsOn(":trainbenchmark-generator-json4ag-special:shadowJar")
-generate.dependsOn(":trainbenchmark-generator-relast:shadowJar")
-
-benchmark.dependsOn(':trainbenchmark-tool-jastadd-namelookup:shadowJar')
-benchmark.dependsOn(':trainbenchmark-tool-jastadd-namelookup-incremental:shadowJar')
-benchmark.dependsOn(':trainbenchmark-tool-jastadd-optimized:shadowJar')
-benchmark.dependsOn(':trainbenchmark-tool-jastadd-optimized-incremental:shadowJar')
-benchmark.dependsOn(':trainbenchmark-tool-jastadd-specialized:shadowJar')
-benchmark.dependsOn(':trainbenchmark-tool-jastadd-specialized-incremental:shadowJar')
-benchmark.dependsOn(':trainbenchmark-tool-jastadd-relast:shadowJar')
-benchmark.dependsOn(':trainbenchmark-tool-jastadd-relast-incremental:shadowJar')
-benchmark.dependsOn(':trainbenchmark-tool-tinkergraph:shadowJar')
-benchmark.dependsOn(':trainbenchmark-tool-viatra:shadowJar')
-
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-jastadd-namelookup:shadowJar')
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-jastadd-namelookup-incremental:shadowJar')
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-jastadd-optimized:shadowJar')
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-jastadd-specialized-incremental:shadowJar')
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-jastadd-specialized:shadowJar')
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-jastadd-specialized-incremental:shadowJar')
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-jastadd-relast:shadowJar')
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-jastadd-relast-incremental:shadowJar')
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-tinkergraph:shadowJar')
-individualInjectBenchmark.dependsOn(':trainbenchmark-tool-viatra:shadowJar')
-
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-jastadd-namelookup:shadowJar')
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-jastadd-namelookup-incremental:shadowJar')
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-jastadd-optimized:shadowJar')
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-jastadd-optimized-incremental:shadowJar')
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-jastadd-specialized:shadowJar')
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-jastadd-specialized-incremental:shadowJar')
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-jastadd-relast:shadowJar')
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-jastadd-relast-incremental:shadowJar')
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-tinkergraph:shadowJar')
-individualRepairBenchmark.dependsOn(':trainbenchmark-tool-viatra:shadowJar')
-
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-jastadd-namelookup:shadowJar')
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-jastadd-namelookup-incremental:shadowJar')
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-jastadd-optimized:shadowJar')
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-jastadd-optimized-incremental:shadowJar')
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-jastadd-specialized:shadowJar')
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-jastadd-specialized-incremental:shadowJar')
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-jastadd-relast:shadowJar')
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-jastadd-relast-incremental:shadowJar')
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-tinkergraph:shadowJar')
-individualIncrementalBenchmark.dependsOn(':trainbenchmark-tool-viatra:shadowJar')
\ No newline at end of file
+//task memory(dependsOn: 'classes', type: JavaExec) {
+//	group = 'Benchmark'
+//	main = 'MemoryScript'
+//	classpath = sourceSets.main.runtimeClasspath
+//}
+//
+//task qpt(dependsOn: 'classes', type: JavaExec) {
+//	group = 'Benchmark'
+//	main = 'QueryPlanTester'
+//	classpath = sourceSets.main.runtimeClasspath
+//}
diff --git a/trainbenchmark/trainbenchmark-scripts/diff.sh b/trainbenchmark/trainbenchmark-scripts/diff.sh
deleted file mode 100755
index 68cb96f4ea109ebd1713ec8886ef6232ab7a5869..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-scripts/diff.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-diff -x .gitignore src/ src-template/
diff --git a/trainbenchmark/trainbenchmark-scripts/src-template/BenchmarkScript.groovy b/trainbenchmark/trainbenchmark-scripts/src-template/BenchmarkScript.groovy
deleted file mode 100644
index 5249a2c85bed598a4e6214c9837a1099d963f29c..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-scripts/src-template/BenchmarkScript.groovy
+++ /dev/null
@@ -1,155 +0,0 @@
-
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig
-import hu.bme.mit.trainbenchmark.constants.RailwayOperation
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBaseBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.ModelSetConfig
-import hu.bme.mit.trainbenchmark.benchmark.config.TransformationChangeSetStrategy
-import hu.bme.mit.trainbenchmark.benchmark.result.ResultHelper
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkReporter
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkRunner
-
-// tools
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupIncrementalBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedIncrementalBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedIncrementalBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.tinkergraph.config.TinkerGraphBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBackend
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBenchmarkConfigBuilder
-
-println('Please remember to stop all other Java processes.')
-println()
-println('If in doubt, check with this command:')
-println('$ ps auxw | grep jav[a]')
-println()
-println('If there are other Java processes, use:')
-println('$ killall -9 java')
-
-def benchmarkId = ResultHelper.createNewResultDir()
-ResultHelper.saveConfiguration(benchmarkId)
-def ec = new ExecutionConfig(4000, 8000)
-
-def minSize = 1
-def maxSize = 8
-def timeout = 900
-def runs = 1
-
-println()
-println("############################################################")
-println('Benchmark parameters:')
-println("- execution config: ${ec}")
-println("- range: minSize=${minSize}, maxSize=${maxSize}")
-println("- timeout: ${timeout}")
-println("- runs: ${runs}")
-println("############################################################")
-println()
-
-// Set the reportUrl if you would like to receive a Slack notification when the benchmark finished.
-//reportUrl = "https://hooks.slack.com/services/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"
-
-def tools = [
-		new JastaddNameLookupBenchmarkConfigBuilder(),
-		new JastaddNameLookupIncrementalBenchmarkConfigBuilder(),
-		new JastaddOptimizedBenchmarkConfigBuilder(),
-		new JastaddOptimizedIncrementalBenchmarkConfigBuilder(),
-		new JastaddSpecializedBenchmarkConfigBuilder(),
-		new JastaddSpecializedIncrementalBenchmarkConfigBuilder(),
-		new TinkerGraphBenchmarkConfigBuilder(),
-		new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.INCREMENTAL),
-		new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.LOCAL_SEARCH),
-]
-
-def workloads = [
-
-	Inject: [
-		modelVariant: "inject",
-		operations: [
-			RailwayOperation.CONNECTEDSEGMENTS,
-			RailwayOperation.POSLENGTH,
-			RailwayOperation.ROUTESENSOR,
-			RailwayOperation.SEMAPHORENEIGHBOR,
-			RailwayOperation.SWITCHSET,
-			RailwayOperation.SWITCHMONITORED,
-			RailwayOperation.CONNECTEDSEGMENTS_INJECT,
-			RailwayOperation.POSLENGTH_INJECT,
-			RailwayOperation.ROUTESENSOR_INJECT,
-			RailwayOperation.SEMAPHORENEIGHBOR_INJECT,
-			RailwayOperation.SWITCHSET_INJECT,
-			RailwayOperation.SWITCHMONITORED_INJECT,
-		],
-		strategy: TransformationChangeSetStrategy.FIXED,
-		constant: 10, // elements
-		queryTransformationCount: 12, // iterations
-	],
-	Repair: [
-		modelVariant: "repair",
-		operations: [
-			RailwayOperation.CONNECTEDSEGMENTS_REPAIR,
-			RailwayOperation.POSLENGTH_REPAIR,
-			RailwayOperation.ROUTESENSOR_REPAIR,
-			RailwayOperation.SEMAPHORENEIGHBOR_REPAIR,
-			RailwayOperation.SWITCHSET_REPAIR,
-			RailwayOperation.SWITCHMONITORED_REPAIR,
-		],
-		strategy: TransformationChangeSetStrategy.PROPORTIONAL,
-		constant: 5, // percent
-		queryTransformationCount: 8, // iterations
-	],
-]
-
-def runBenchmarkSeries(BenchmarkConfigBaseBuilder configBaseBuilder, BenchmarkConfigBuilder configBuilder,
-		ExecutionConfig ec, ModelSetConfig modelSetConfig) {
-	try {
-		for (def size = modelSetConfig.minSize; size <= modelSetConfig.maxSize; size *= 2) {
-			def modelFilename = "railway-${modelSetConfig.modelVariant}-${size}"
-
-			println("------------------------------------------------------------")
-			println("Model: $modelFilename")
-			println("------------------------------------------------------------")
-
-			configBaseBuilder.setModelFilename(modelFilename)
-			def configBase = configBaseBuilder.createConfigBase()
-			def config = configBuilder.setConfigBase(configBase).createConfig()
-
-			def exitValue = BenchmarkRunner.runPerformanceBenchmark(config, ec)
-			if (exitValue != 0) {
-				println "Timeout or error occured, skipping models for larger sizes. Error code: ${exitValue}"
-				break
-			}
-		}
-	} catch (all) {
-		println "Exception occured during execution."
-	}
-}
-
-workloads.each { workload ->
-	def workloadName = workload.key
-
-	def workloadConfiguration = workload.value
-	def modelVariant = workloadConfiguration["modelVariant"]
-	def operations = workloadConfiguration["operations"]
-	def strategy = workloadConfiguration["strategy"]
-	def constant = workloadConfiguration["constant"]
-	def queryTransformationCount = workloadConfiguration["queryTransformationCount"]
-
-	println("============================================================")
-	println("Workload: $workloadName")
-	println("============================================================")
-
-	def modelSetConfig = new ModelSetConfig(modelVariant, minSize, maxSize)
-
-	def bcbb = new BenchmarkConfigBaseBuilder()
-			.setBenchmarkId(benchmarkId).setTimeout(timeout).setRuns(runs)
-			.setOperations(operations).setWorkload(workloadName)
-			.setQueryTransformationCount(queryTransformationCount).setTransformationConstant(constant)
-			.setTransformationChangeSetStrategy(strategy)
-
-	tools.each{ bcb -> runBenchmarkSeries(bcbb, bcb, ec, modelSetConfig) }
-}
-
-if (binding.variables.get("reportUrl")) {
-	BenchmarkReporter.reportReady(reportUrl)
-}
diff --git a/trainbenchmark/trainbenchmark-scripts/src-template/GeneratorScript.groovy b/trainbenchmark/trainbenchmark-scripts/src-template/GeneratorScript.groovy
deleted file mode 100644
index 83c5a7526605812734d1e8467dab709002d6880f..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-scripts/src-template/GeneratorScript.groovy
+++ /dev/null
@@ -1,50 +0,0 @@
-import de.tudresden.inf.st.trainbenchmark.generator.json4ag.config.Json4AgGeneratorConfigBuilder
-import de.tudresden.inf.st.trainbenchmark.generator.json4agspecial.config.Json4AgSpecialGeneratorConfigBuilder
-import de.tudresden.inf.st.trainbenchmark.generator.relast.config.RelASTGeneratorConfigBuilder
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig
-import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase
-import hu.bme.mit.trainbenchmark.generator.config.Scenario
-import hu.bme.mit.trainbenchmark.generator.emf.config.EmfGeneratorConfigBuilder
-import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphFormat
-import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphGeneratorConfigBuilder
-import hu.bme.mit.trainbenchmark.generator.runner.GeneratorRunner
-
-def ec = new ExecutionConfig(4000, 6000)
-def minSize = 1
-/* def maxSize = 2048 */
-def maxSize = 1024
-
-def scenarios = [
-	Scenario.BATCH,
-	Scenario.INJECT,
-	Scenario.REPAIR,
-]
-
-def formats = [
-	new EmfGeneratorConfigBuilder(),
-	new TinkerGraphGeneratorConfigBuilder().setGraphFormat(TinkerGraphFormat.GRAPHML),
-	new Json4AgGeneratorConfigBuilder(),
-	new Json4AgSpecialGeneratorConfigBuilder(),
-	new RelASTGeneratorConfigBuilder()
-]
-
-for (scenario in scenarios) {
-	formats.each { generatorConfigBuilder ->
-		try {
-			for (def size = minSize; size <= maxSize; size = size>0?size*2:1) {
-				println("Scenario: ${scenario}, size: ${size}")
-
-				def configBase = new GeneratorConfigBase(scenario, size)
-				def config = generatorConfigBuilder.setConfigBase(configBase).createConfig()
-
-				def exitValue = GeneratorRunner.run(config, ec)
-				if (exitValue != 0) {
-					println "Timeout or error occurred, skipping models for larger sizes. Error code: ${exitValue}"
-					break
-				}
-			}
-		} catch (all) {
-			println "Exception occurred during execution."
-		}
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-scripts/src-template/IndividualBenchmarkIncrementalScript.groovy b/trainbenchmark/trainbenchmark-scripts/src-template/IndividualBenchmarkIncrementalScript.groovy
deleted file mode 100644
index dfb61c65d3a88a60f72b396fba91c7e508aae862..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-scripts/src-template/IndividualBenchmarkIncrementalScript.groovy
+++ /dev/null
@@ -1,125 +0,0 @@
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig
-import hu.bme.mit.trainbenchmark.constants.RailwayOperation
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBaseBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.ModelSetConfig
-import hu.bme.mit.trainbenchmark.benchmark.config.TransformationChangeSetStrategy
-import hu.bme.mit.trainbenchmark.benchmark.result.ResultHelper
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkReporter
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkRunner
-
-// tools
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupIncrementalBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedIncrementalBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedIncrementalBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.tinkergraph.config.TinkerGraphBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBackend
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBenchmarkConfigBuilder
-
-println('Please remember to stop all other Java processes.')
-println()
-println('If in doubt, check with this command:')
-println('$ ps auxw | grep jav[a]')
-println()
-println('If there are other Java processes, use:')
-println('$ killall -9 java')
-
-def benchmarkId = ResultHelper.createNewResultDir()
-ResultHelper.saveConfiguration(benchmarkId)
-def ec = new ExecutionConfig(4000, 8000)
-
-def minSize = 1
-def maxSize = 8
-def timeout = 900
-def runs = 1
-
-println()
-println("############################################################")
-println('Benchmark parameters:')
-println("- execution config: ${ec}")
-println("- range: minSize=${minSize}, maxSize=${maxSize}")
-println("- timeout: ${timeout}")
-println("- runs: ${runs}")
-println("############################################################")
-println()
-
-// Set the reportUrl if you would like to receive a Slack notification when the benchmark finished.
-//reportUrl = "https://hooks.slack.com/services/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"
-
-def tools = [
-		new JastaddNameLookupBenchmarkConfigBuilder(),
-		new JastaddNameLookupIncrementalBenchmarkConfigBuilder(),
-		new JastaddOptimizedBenchmarkConfigBuilder(),
-		new JastaddOptimizedIncrementalBenchmarkConfigBuilder(),
-		new JastaddSpecializedBenchmarkConfigBuilder(),
-		new JastaddSpecializedIncrementalBenchmarkConfigBuilder(),
-		new TinkerGraphBenchmarkConfigBuilder(),
-		new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.INCREMENTAL),
-		new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.LOCAL_SEARCH),
-]
-
-def workloads = [
-	ConnectedSegments: [ modelVariant: "inject", operations: [RailwayOperation.CONNECTEDSEGMENTS, RailwayOperation.CONNECTEDSEGMENTS_INJECT, RailwayOperation.CONNECTEDSEGMENTS_REPAIR], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 50],
-	PosLength:         [ modelVariant: "inject", operations: [RailwayOperation.POSLENGTH        , RailwayOperation.POSLENGTH_INJECT        , RailwayOperation.POSLENGTH_REPAIR        ], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 50],
-	RouteSensor:       [ modelVariant: "inject", operations: [RailwayOperation.ROUTESENSOR      , RailwayOperation.ROUTESENSOR_INJECT      , RailwayOperation.ROUTESENSOR_REPAIR      ], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 50],
-	SemaphoreNeighbor: [ modelVariant: "inject", operations: [RailwayOperation.SEMAPHORENEIGHBOR, RailwayOperation.SEMAPHORENEIGHBOR_INJECT, RailwayOperation.SEMAPHORENEIGHBOR_REPAIR], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 50],
-	SwitchMonitored:   [ modelVariant: "inject", operations: [RailwayOperation.SWITCHMONITORED  , RailwayOperation.SWITCHMONITORED_INJECT  , RailwayOperation.SWITCHMONITORED_REPAIR  ], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 50],
-	SwitchSet:         [ modelVariant: "inject", operations: [RailwayOperation.SWITCHSET        , RailwayOperation.SWITCHSET_INJECT        , RailwayOperation.SWITCHSET_REPAIR        ], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 50],
-]
-
-def runBenchmarkSeries(BenchmarkConfigBaseBuilder configBaseBuilder, BenchmarkConfigBuilder configBuilder,
-		ExecutionConfig ec, ModelSetConfig modelSetConfig) {
-	try {
-		for (def size = modelSetConfig.minSize; size <= modelSetConfig.maxSize; size *= 2) {
-			def modelFilename = "railway-${modelSetConfig.modelVariant}-${size}"
-
-			println("------------------------------------------------------------")
-			println("Model: $modelFilename")
-			println("------------------------------------------------------------")
-
-			configBaseBuilder.setModelFilename(modelFilename)
-			def configBase = configBaseBuilder.createConfigBase()
-			def config = configBuilder.setConfigBase(configBase).createConfig()
-
-			def exitValue = BenchmarkRunner.runPerformanceBenchmark(config, ec)
-			if (exitValue != 0) {
-				println "Timeout or error occured, skipping models for larger sizes. Error code: ${exitValue}"
-				break
-			}
-		}
-	} catch (all) {
-		println "Exception occured during execution."
-	}
-}
-
-workloads.each { workload ->
-	def workloadName = workload.key
-
-	def workloadConfiguration = workload.value
-	def modelVariant = workloadConfiguration["modelVariant"]
-	def operations = workloadConfiguration["operations"]
-	def strategy = workloadConfiguration["strategy"]
-	def constant = workloadConfiguration["constant"]
-	def queryTransformationCount = workloadConfiguration["queryTransformationCount"]
-
-	println("============================================================")
-	println("Workload: $workloadName")
-	println("============================================================")
-
-	def modelSetConfig = new ModelSetConfig(modelVariant, minSize, maxSize)
-
-	def bcbb = new BenchmarkConfigBaseBuilder()
-			.setBenchmarkId(benchmarkId).setTimeout(timeout).setRuns(runs)
-			.setOperations(operations).setWorkload(workloadName)
-			.setQueryTransformationCount(queryTransformationCount).setTransformationConstant(constant)
-			.setTransformationChangeSetStrategy(strategy)
-
-	tools.each{ bcb -> runBenchmarkSeries(bcbb, bcb, ec, modelSetConfig) }
-}
-
-if (binding.variables.get("reportUrl")) {
-	BenchmarkReporter.reportReady(reportUrl)
-}
diff --git a/trainbenchmark/trainbenchmark-scripts/src-template/IndividualBenchmarkInjectScript.groovy b/trainbenchmark/trainbenchmark-scripts/src-template/IndividualBenchmarkInjectScript.groovy
deleted file mode 100644
index 75c735187205049a758998a944e845f81d37493f..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-scripts/src-template/IndividualBenchmarkInjectScript.groovy
+++ /dev/null
@@ -1,124 +0,0 @@
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig
-import hu.bme.mit.trainbenchmark.constants.RailwayOperation
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBaseBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.ModelSetConfig
-import hu.bme.mit.trainbenchmark.benchmark.config.TransformationChangeSetStrategy
-import hu.bme.mit.trainbenchmark.benchmark.result.ResultHelper
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkReporter
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkRunner
-
-// tools
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupIncrementalBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedIncrementalBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedIncrementalBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.tinkergraph.config.TinkerGraphBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBackend
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBenchmarkConfigBuilder
-
-println('Please remember to stop all other Java processes.')
-println()
-println('If in doubt, check with this command:')
-println('$ ps auxw | grep jav[a]')
-println()
-println('If there are other Java processes, use:')
-println('$ killall -9 java')
-
-def benchmarkId = ResultHelper.createNewResultDir()
-ResultHelper.saveConfiguration(benchmarkId, "IndividualBenchmarkInjectScript.groovy")
-def ec = new ExecutionConfig(1000, 8000)
-
-def minSize = 1
-def maxSize = 512
-def timeout = 900
-def runs = 10
-
-println()
-println("############################################################")
-println('Benchmark parameters:')
-println("- execution config: ${ec}")
-println("- range: minSize=${minSize}, maxSize=${maxSize}")
-println("- timeout: ${timeout}")
-println("- runs: ${runs}")
-println("############################################################")
-println()
-
-// Set the reportUrl if you would like to receive a Slack notification when the benchmark finished.
-//reportUrl = "https://hooks.slack.com/services/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"
-
-def tools = [
-		new JastaddNameLookupBenchmarkConfigBuilder(),
-		new JastaddNameLookupIncrementalBenchmarkConfigBuilder(),
-		new JastaddOptimizedBenchmarkConfigBuilder(),
-		new JastaddOptimizedIncrementalBenchmarkConfigBuilder(),
-		new JastaddSpecializedBenchmarkConfigBuilder(),
-		new JastaddSpecializedIncrementalBenchmarkConfigBuilder(),
-		new TinkerGraphBenchmarkConfigBuilder(),
-		new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.INCREMENTAL),
-]
-
-def workloads = [
-	ConnectedSegments: [ modelVariant: "inject", operations: [RailwayOperation.CONNECTEDSEGMENTS, RailwayOperation.CONNECTEDSEGMENTS_INJECT], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 12],
-	PosLength:         [ modelVariant: "inject", operations: [RailwayOperation.POSLENGTH        , RailwayOperation.POSLENGTH_INJECT        ], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 12],
-	RouteSensor:       [ modelVariant: "inject", operations: [RailwayOperation.ROUTESENSOR      , RailwayOperation.ROUTESENSOR_INJECT      ], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 12],
-	SemaphoreNeighbor: [ modelVariant: "inject", operations: [RailwayOperation.SEMAPHORENEIGHBOR, RailwayOperation.SEMAPHORENEIGHBOR_INJECT], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 12],
-	SwitchMonitored:   [ modelVariant: "inject", operations: [RailwayOperation.SWITCHMONITORED  , RailwayOperation.SWITCHMONITORED_INJECT  ], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 12],
-	SwitchSet:         [ modelVariant: "inject", operations: [RailwayOperation.SWITCHSET        , RailwayOperation.SWITCHSET_INJECT        ], strategy: TransformationChangeSetStrategy.FIXED, constant: 10, queryTransformationCount: 12],
-]
-
-def runBenchmarkSeries(BenchmarkConfigBaseBuilder configBaseBuilder, BenchmarkConfigBuilder configBuilder,
-		ExecutionConfig ec, ModelSetConfig modelSetConfig) {
-	try {
-		for (def size = modelSetConfig.minSize; size <= modelSetConfig.maxSize; size *= 2) {
-			def modelFilename = "railway-${modelSetConfig.modelVariant}-${size}"
-
-			println("------------------------------------------------------------")
-			println("Model: $modelFilename")
-			println("------------------------------------------------------------")
-
-			configBaseBuilder.setModelFilename(modelFilename)
-			def configBase = configBaseBuilder.createConfigBase()
-			def config = configBuilder.setConfigBase(configBase).createConfig()
-
-			def exitValue = BenchmarkRunner.runPerformanceBenchmark(config, ec)
-			if (exitValue != 0) {
-				println "Timeout or error occured, skipping models for larger sizes. Error code: ${exitValue}"
-				break
-			}
-		}
-	} catch (all) {
-		println "Exception occured during execution."
-	}
-}
-
-workloads.each { workload ->
-	def workloadName = workload.key
-
-	def workloadConfiguration = workload.value
-	def modelVariant = workloadConfiguration["modelVariant"]
-	def operations = workloadConfiguration["operations"]
-	def strategy = workloadConfiguration["strategy"]
-	def constant = workloadConfiguration["constant"]
-	def queryTransformationCount = workloadConfiguration["queryTransformationCount"]
-
-	println("============================================================")
-	println("Workload: $workloadName")
-	println("============================================================")
-
-	def modelSetConfig = new ModelSetConfig(modelVariant, minSize, maxSize)
-
-	def bcbb = new BenchmarkConfigBaseBuilder()
-			.setBenchmarkId(benchmarkId).setTimeout(timeout).setRuns(runs)
-			.setOperations(operations).setWorkload(workloadName)
-			.setQueryTransformationCount(queryTransformationCount).setTransformationConstant(constant)
-			.setTransformationChangeSetStrategy(strategy)
-
-	tools.each{ bcb -> runBenchmarkSeries(bcbb, bcb, ec, modelSetConfig) }
-}
-
-if (binding.variables.get("reportUrl")) {
-	BenchmarkReporter.reportReady(reportUrl)
-}
diff --git a/trainbenchmark/trainbenchmark-scripts/src-template/IndividualBenchmarkRepairScript.groovy b/trainbenchmark/trainbenchmark-scripts/src-template/IndividualBenchmarkRepairScript.groovy
deleted file mode 100644
index 0108017aedb58488f713641c3fc6e21b38773166..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-scripts/src-template/IndividualBenchmarkRepairScript.groovy
+++ /dev/null
@@ -1,123 +0,0 @@
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig
-import hu.bme.mit.trainbenchmark.constants.RailwayOperation
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBaseBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.ModelSetConfig
-import hu.bme.mit.trainbenchmark.benchmark.config.TransformationChangeSetStrategy
-import hu.bme.mit.trainbenchmark.benchmark.result.ResultHelper
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkReporter
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkRunner
-
-// tools
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupIncrementalBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedIncrementalBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedBenchmarkConfigBuilder
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedIncrementalBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.tinkergraph.config.TinkerGraphBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBackend
-import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBenchmarkConfigBuilder
-println('Please remember to stop all other Java processes.')
-println()
-println('If in doubt, check with this command:')
-println('$ ps auxw | grep jav[a]')
-println()
-println('If there are other Java processes, use:')
-println('$ killall -9 java')
-
-def benchmarkId = ResultHelper.createNewResultDir()
-ResultHelper.saveConfiguration(benchmarkId, "IndividualBenchmarkRepairScript.groovy")
-def ec = new ExecutionConfig(1000, 8000)
-
-def minSize = 1
-def maxSize = 512
-def timeout = 900
-def runs = 10
-
-println()
-println("############################################################")
-println('Benchmark parameters:')
-println("- execution config: ${ec}")
-println("- range: minSize=${minSize}, maxSize=${maxSize}")
-println("- timeout: ${timeout}")
-println("- runs: ${runs}")
-println("############################################################")
-println()
-
-// Set the reportUrl if you would like to receive a Slack notification when the benchmark finished.
-//reportUrl = "https://hooks.slack.com/services/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"
-
-def tools = [
-		new JastaddNameLookupBenchmarkConfigBuilder(),
-		new JastaddNameLookupIncrementalBenchmarkConfigBuilder(),
-		new JastaddOptimizedBenchmarkConfigBuilder(),
-		new JastaddOptimizedIncrementalBenchmarkConfigBuilder(),
-		new JastaddSpecializedBenchmarkConfigBuilder(),
-		new JastaddSpecializedIncrementalBenchmarkConfigBuilder(),
-		new TinkerGraphBenchmarkConfigBuilder(),
-		new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.INCREMENTAL),
-]
-
-def workloads = [
-	ConnectedSegments: [ modelVariant: "repair", operations: [RailwayOperation.CONNECTEDSEGMENTS_REPAIR], strategy: TransformationChangeSetStrategy.PROPORTIONAL, constant: 5, queryTransformationCount: 8],
-	PosLength:         [ modelVariant: "repair", operations: [RailwayOperation.POSLENGTH_REPAIR        ], strategy: TransformationChangeSetStrategy.PROPORTIONAL, constant: 5, queryTransformationCount: 8],
-	RouteSensor:       [ modelVariant: "repair", operations: [RailwayOperation.ROUTESENSOR_REPAIR      ], strategy: TransformationChangeSetStrategy.PROPORTIONAL, constant: 5, queryTransformationCount: 8],
-	SemaphoreNeighbor: [ modelVariant: "repair", operations: [RailwayOperation.SEMAPHORENEIGHBOR_REPAIR], strategy: TransformationChangeSetStrategy.PROPORTIONAL, constant: 5, queryTransformationCount: 8],
-	SwitchMonitored:   [ modelVariant: "repair", operations: [RailwayOperation.SWITCHMONITORED_REPAIR  ], strategy: TransformationChangeSetStrategy.PROPORTIONAL, constant: 5, queryTransformationCount: 8],
-	SwitchSet:         [ modelVariant: "repair", operations: [RailwayOperation.SWITCHSET_REPAIR        ], strategy: TransformationChangeSetStrategy.PROPORTIONAL, constant: 5, queryTransformationCount: 8],
-]
-
-def runBenchmarkSeries(BenchmarkConfigBaseBuilder configBaseBuilder, BenchmarkConfigBuilder configBuilder,
-		ExecutionConfig ec, ModelSetConfig modelSetConfig) {
-	try {
-		for (def size = modelSetConfig.minSize; size <= modelSetConfig.maxSize; size *= 2) {
-			def modelFilename = "railway-${modelSetConfig.modelVariant}-${size}"
-
-			println("------------------------------------------------------------")
-			println("Model: $modelFilename")
-			println("------------------------------------------------------------")
-
-			configBaseBuilder.setModelFilename(modelFilename)
-			def configBase = configBaseBuilder.createConfigBase()
-			def config = configBuilder.setConfigBase(configBase).createConfig()
-
-			def exitValue = BenchmarkRunner.runPerformanceBenchmark(config, ec)
-			if (exitValue != 0) {
-				println "Timeout or error occured, skipping models for larger sizes. Error code: ${exitValue}"
-				break
-			}
-		}
-	} catch (all) {
-		println "Exception occured during execution."
-	}
-}
-
-workloads.each { workload ->
-	def workloadName = workload.key
-
-	def workloadConfiguration = workload.value
-	def modelVariant = workloadConfiguration["modelVariant"]
-	def operations = workloadConfiguration["operations"]
-	def strategy = workloadConfiguration["strategy"]
-	def constant = workloadConfiguration["constant"]
-	def queryTransformationCount = workloadConfiguration["queryTransformationCount"]
-
-	println("============================================================")
-	println("Workload: $workloadName")
-	println("============================================================")
-
-	def modelSetConfig = new ModelSetConfig(modelVariant, minSize, maxSize)
-
-	def bcbb = new BenchmarkConfigBaseBuilder()
-			.setBenchmarkId(benchmarkId).setTimeout(timeout).setRuns(runs)
-			.setOperations(operations).setWorkload(workloadName)
-			.setQueryTransformationCount(queryTransformationCount).setTransformationConstant(constant)
-			.setTransformationChangeSetStrategy(strategy)
-
-	tools.each{ bcb -> runBenchmarkSeries(bcbb, bcb, ec, modelSetConfig) }
-}
-
-if (binding.variables.get("reportUrl")) {
-	BenchmarkReporter.reportReady(reportUrl)
-}
diff --git a/trainbenchmark/trainbenchmark-scripts/src-template/MemoryScript.groovy b/trainbenchmark/trainbenchmark-scripts/src-template/MemoryScript.groovy
deleted file mode 100644
index 945b0ea74f9f332b2482f263c5b32aa40937e7c9..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-scripts/src-template/MemoryScript.groovy
+++ /dev/null
@@ -1,130 +0,0 @@
-//import hu.bme.mit.trainbenchmark.benchmark.blazegraph.config.BlazegraphBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBaseBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.ModelSetConfig
-import hu.bme.mit.trainbenchmark.benchmark.config.TransformationChangeSetStrategy
-//import hu.bme.mit.trainbenchmark.benchmark.drools.config.DroolsBenchmarkConfigBuilder
-//import hu.bme.mit.trainbenchmark.benchmark.eclipseocl.config.EclipseOclBenchmarkConfigBuilder
-//import hu.bme.mit.trainbenchmark.benchmark.emfapi.config.EmfApiBenchmarkConfigBuilder
-//import hu.bme.mit.trainbenchmark.benchmark.jena.config.JenaBenchmarkConfigBuilder
-//import hu.bme.mit.trainbenchmark.benchmark.mysql.config.MySqlBenchmarkConfigBuilder
-//import hu.bme.mit.trainbenchmark.benchmark.neo4j.config.Neo4jBenchmarkConfigBuilder
-//import hu.bme.mit.trainbenchmark.benchmark.neo4j.config.Neo4jEngine
-//import hu.bme.mit.trainbenchmark.benchmark.rdf4j.config.Rdf4jBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.result.ResultHelper
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkReporter
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkRunner
-//import hu.bme.mit.trainbenchmark.benchmark.sqlite.config.SQLiteBenchmarkConfigBuilder
-//import hu.bme.mit.trainbenchmark.benchmark.tinkergraph.config.TinkerGraphBenchmarkConfigBuilder
-//import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBackend
-//import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig
-import hu.bme.mit.trainbenchmark.constants.RailwayOperation
-//import hu.bme.mit.trainbenchmark.neo4j.config.Neo4jGraphFormat
-
-println('Please remember to stop all other Java processes.')
-println()
-println('If in doubt, check with this command:')
-println('$ ps auxw | grep jav[a]')
-println()
-println('If there are other Java processes, use:')
-println('$ killall -9 java')
-
-def benchmarkId = ResultHelper.createNewResultDir()
-ResultHelper.saveConfiguration(benchmarkId)
-def ec = new ExecutionConfig(12800, 12800)
-
-def minSize = 1
-def maxSize = 2048
-def timeout = 900
-
-// Set the reportUrl if you would like to receive a Slack notification when the benchmark finished.
-// The default configuration points to our research group's Slack.
-//reportUrl = "https://hooks.slack.com/services/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"
-
-def tools = [
-//	new BlazegraphBenchmarkConfigBuilder().setInferencing(false),
-//	new BlazegraphBenchmarkConfigBuilder().setInferencing(true),
-//	new EclipseOclBenchmarkConfigBuilder(),
-//	new DroolsBenchmarkConfigBuilder(),
-//	new EmfApiBenchmarkConfigBuilder(),
-//	new JenaBenchmarkConfigBuilder().setInferencing(false),
-//	new JenaBenchmarkConfigBuilder().setInferencing(true),
-//	new MySqlBenchmarkConfigBuilder(),
-//	new Neo4jBenchmarkConfigBuilder().setEngine(Neo4jEngine.COREAPI).setGraphFormat(Neo4jGraphFormat.GRAPHML),
-//	new Neo4jBenchmarkConfigBuilder().setEngine(Neo4jEngine.CYPHER ).setGraphFormat(Neo4jGraphFormat.GRAPHML),
-//	new Rdf4jBenchmarkConfigBuilder().setInferencing(false),
-//	new SQLiteBenchmarkConfigBuilder(),
-//	new TinkerGraphBenchmarkConfigBuilder(),
-//	new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.INCREMENTAL),
-//	new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.LOCAL_SEARCH),
-//	new Jastadd
-]
-
-def workloads = [
-	Batch: [
-		operations: [
-			RailwayOperation.CONNECTEDSEGMENTS,
-			RailwayOperation.POSLENGTH,
-			RailwayOperation.ROUTESENSOR,
-			RailwayOperation.SEMAPHORENEIGHBOR,
-			RailwayOperation.SWITCHSET,
-			RailwayOperation.SWITCHMONITORED,
-		],
-		strategy: TransformationChangeSetStrategy.FIXED,
-		constant: 0,
-		queryTransformationCount: 0,
-		numberOfSteps: 9,
-	]
-]
-
-def runMemoryBenchmarkSeries(BenchmarkConfigBaseBuilder configBaseBuilder, BenchmarkConfigBuilder configBuilder,
-		ExecutionConfig ec, ModelSetConfig modelSetConfig, int numberOfSteps) {
-	for (def size = modelSetConfig.minSize; size <= modelSetConfig.maxSize; size *= 2) {
-		def modelFilename = "railway-${modelSetConfig.modelVariant}-${size}"
-
-		println("------------------------------------------------------------")
-		println("Model: $modelFilename")
-		println("------------------------------------------------------------")
-
-		configBaseBuilder.setModelFilename(modelFilename)
-		def configBase = configBaseBuilder.createConfigBase()
-		def config = configBuilder.setConfigBase(configBase).createConfig()
-
-		def exitValue = BenchmarkRunner.runMemoryBenchmark(config, ec, numberOfSteps)
-		if (exitValue != 0) {
-			println "Timeout or error occured, skipping models for larger sizes. Error code: {$exitValue}"
-			break
-		}
-	}
-}
-
-workloads.each { workload ->
-	def workloadName = workload.key
-	def modelVariant = workloadName.toLowerCase()
-	def workloadConfiguration = workload.value
-
-	def operations = workloadConfiguration["operations"]
-	def strategy = workloadConfiguration["strategy"]
-	def constant = workloadConfiguration["constant"]
-	def queryTransformationCount = workloadConfiguration["queryTransformationCount"]
-	def numberOfSteps = workloadConfiguration["numberOfSteps"]
-
-	println("============================================================")
-	println("Workload: $workloadName")
-	println("============================================================")
-
-	def modelSetConfig = new ModelSetConfig(modelVariant, minSize, maxSize)
-
-	def bcbb = new BenchmarkConfigBaseBuilder()
-			.setBenchmarkId(benchmarkId).setTimeout(timeout).setRuns(1)
-			.setQueryTransformationCount(queryTransformationCount).setOperations(operations)
-			.setWorkload(workloadName).setTransformationChangeSetStrategy(TransformationChangeSetStrategy.FIXED)
-			.setTransformationConstant(0);
-
-	tools.each{ bcb -> runMemoryBenchmarkSeries(bcbb, bcb, ec, modelSetConfig, numberOfSteps) }
-}
-
-if (binding.variables.get("reportUrl")) {
-	BenchmarkReporter.reportReady(reportUrl)
-}
diff --git a/trainbenchmark/trainbenchmark-scripts/src-template/QueryPlanTester.groovy b/trainbenchmark/trainbenchmark-scripts/src-template/QueryPlanTester.groovy
deleted file mode 100644
index fb73aa3069697d85465295f4c82a4df60670660e..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-scripts/src-template/QueryPlanTester.groovy
+++ /dev/null
@@ -1,77 +0,0 @@
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBaseBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.config.ModelSetConfig
-import hu.bme.mit.trainbenchmark.benchmark.config.TransformationChangeSetStrategy
-//import hu.bme.mit.trainbenchmark.benchmark.ingraph.config.IngraphBenchmarkConfigBuilder
-import hu.bme.mit.trainbenchmark.benchmark.result.ResultHelper
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkRunner
-import hu.bme.mit.trainbenchmark.config.ExecutionConfig
-import hu.bme.mit.trainbenchmark.constants.RailwayOperation
-import hu.bme.mit.trainbenchmark.generator.config.Scenario
-
-def benchmarkId = ResultHelper.createNewResultDir()
-ResultHelper.saveConfiguration(benchmarkId)
-def ec = new ExecutionConfig(12000, 12000)
-
-def scenarios = [Scenario.REPAIR]
-def minSize = 1
-def maxSize = 2048
-def timeout = 900
-def runs = 10
-def queryTransformationCount = 100
-def transformationConstant = 10
-def transformationChangeSetStrategy = TransformationChangeSetStrategy.FIXED
-def messageSize = 2048
-
-def runBenchmarkSeries(BenchmarkConfigBaseBuilder configBaseBuilder, BenchmarkConfigBuilder configBuilder,
-		ExecutionConfig ec, ModelSetConfig modelSetConfig) {
-	for (def size = modelSetConfig.minSize; size <= modelSetConfig.maxSize; size *= 2) {
-		def modelFilename = "railway-${modelSetConfig.modelVariant}-${size}"
-
-		println("------------------------------------------------------------")
-		println("Model: $modelFilename")
-		println("------------------------------------------------------------")
-
-		configBaseBuilder.setModelFilename(modelFilename)
-		def configBase = configBaseBuilder.createConfigBase()
-		def config = configBuilder.setConfigBase(configBase).createConfig()
-
-		def exitValue = BenchmarkRunner.runPerformanceBenchmark(config, ec)
-		if (exitValue != 0) {
-			println "Timeout or error occured, skipping models for larger sizes. Error code: ${exitValue}"
-			break
-		}
-	}
-}
-
-for (scenario in scenarios) {
-	def scenarioName = scenario.toString()
-	def modelVariant = scenarioName.toLowerCase()
-
-	def bcbb = new BenchmarkConfigBaseBuilder().setBenchmarkId(benchmarkId)
-			.setTimeout(timeout).setRuns(runs).setQueryTransformationCount(queryTransformationCount)
-			.setTransformationChangeSetStrategy(transformationChangeSetStrategy)
-			.setTransformationConstant(transformationConstant);
-
-	def modelSetConfig = new ModelSetConfig(modelVariant, minSize, maxSize)
-
-	for (variant in 'A'..'C') {
-		bcbb.setWorkload("RouteSensor")
-		bcbb.setOperations([
-			RailwayOperation.ROUTESENSOR_REPAIR
-		])
-
-//		def bcb = new IngraphBenchmarkConfigBuilder().setMessageSize(messageSize).setQueryVariant(variant)
-//		runBenchmarkSeries(bcbb, bcb, ec, modelSetConfig)
-	}
-
-	for (variant in 'A'..'F') {
-		bcbb.setWorkload("SemaphoreNeighbor")
-		bcbb.setOperations([
-			RailwayOperation.SEMAPHORENEIGHBOR_REPAIR
-		])
-
-//		def bcb = new IngraphBenchmarkConfigBuilder().setMessageSize(messageSize).setQueryVariant(variant)
-//		runBenchmarkSeries(bcbb, bcb, ec, modelSetConfig)
-	}
-}
diff --git a/trainbenchmark/trainbenchmark-scripts/src/.gitignore b/trainbenchmark/trainbenchmark-scripts/src/.gitignore
deleted file mode 100644
index cebd7b311db701259aae8414d3c7dce1b1e6c312..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-scripts/src/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.groovy
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkMain.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..c322d66484fc22a18794463125866e7578f333b2
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkMain.java
@@ -0,0 +1,145 @@
+package de.tudresden.inf.st.train.scripts;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import hu.bme.mit.trainbenchmark.benchmark.config.*;
+import hu.bme.mit.trainbenchmark.benchmark.result.ResultHelper;
+import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkRunner;
+import hu.bme.mit.trainbenchmark.config.ExecutionConfig;
+import hu.bme.mit.trainbenchmark.constants.RailwayOperation;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * Main entry point to start benchmarks.
+ * Created by rschoene on 10/12/17.
+ */
+public class BenchmarkMain {
+
+  @SuppressWarnings("unchecked")
+  private static void runBenchmarkSeries(BenchmarkConfigBaseBuilder configBaseBuilder, BenchmarkConfigBuilder configBuilder,
+                                         ExecutionConfig ec, ModelSetConfig modelSetConfig, BenchmarkSettingsBasics bbs) {
+    Map<String, String> jvmSettingsMap = Utils.createJvmSettingsMap(bbs);
+    String jvmDefaultSettings = jvmSettingsMap.getOrDefault("*",
+      "-Xms{Xms} -Xmx{Xmx} -server -Xverify:none");
+    try {
+      for (int size = modelSetConfig.getMinSize(); size <= modelSetConfig.getMaxSize(); size *= 2) {
+        String modelFilename = "railway-" + modelSetConfig.getModelVariant() + "-" + size;
+
+        System.out.println("------------------------------------------------------------");
+        System.out.println("Model: " + modelFilename);
+        System.out.println("------------------------------------------------------------");
+
+        configBaseBuilder.setModelFilename(modelFilename);
+        BenchmarkConfigBase configBase = configBaseBuilder.createConfigBase();
+        BenchmarkConfig config = (BenchmarkConfig) configBuilder.setConfigBase(configBase).createConfig();
+
+        if (!bbs.isDryRun()) {
+          ResultHelper.prepare(config, ec);
+        }
+        String jvmSetting = jvmSettingsMap.getOrDefault(config.getToolName(), jvmDefaultSettings);
+
+        int exitValue = BenchmarkRunner.runPerformanceBenchmark(config, ec, jvmSetting);
+        if (exitValue != 0) {
+          System.out.println("Timeout or error occurred, skipping models for larger sizes. Error code: " + exitValue);
+          break;
+        }
+      }
+    } catch (InterruptedException | IOException e) {
+      System.out.println("Exception occurred during execution.");
+      e.printStackTrace();
+    }
+  }
+
+  public static void main(String args[]) throws Exception {
+    // set benchmark variant from program arguments
+    if (args.length == 0) {
+      System.err.println("Need to specify one argument identifying the benchmark variant");
+      System.exit(1);
+    }
+    String benchmarkVariant = args[0];
+
+    // read basic settings (min, maxsize, etc.)
+    ObjectMapper mapper = Utils.getMapper();
+    BenchmarkSettingsBasics bbs = Utils.readFromResource(mapper, "basic-settings.json",
+      BenchmarkSettingsBasics.class);
+    try {
+      BenchmarkSettingsBasics loca_bbs = Utils.readFromResource(mapper, "local-basic-settings.json",
+        BenchmarkSettingsBasics.class);
+      Utils.updateBasicsWithLocal(bbs, loca_bbs);
+    } catch (IOException e) {
+      System.out.println("No file 'local-basic-settings.json' found. Using default!");
+    }
+
+    // import tools to use
+    List<BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>> builders =
+      BenchmarkSettingsAvailableTools.getBuilders(bbs.getTools());
+    System.out.println(builders);
+
+    // read workloads based on benchmark variant
+    String workloadsFilename = "workloads.json";
+    BenchmarkSettingsVariantWorkloads bsvw = Utils.readFromResource(mapper, workloadsFilename,
+      BenchmarkSettingsVariantWorkloads.class);
+
+    Optional<BenchmarkSettingsWorkloads> workloadsOpt = bsvw.getVariants().stream()
+      .filter(w -> w.getName().equals(benchmarkVariant))
+      .findFirst();
+    if (!workloadsOpt.isPresent()) {
+      System.err.println("Could not find workloads for given variant, check " + workloadsFilename
+        + " and argument " + benchmarkVariant);
+      System.exit(4);
+    }
+    BenchmarkSettingsWorkloads workloads = workloadsOpt.get();
+
+    // start benchmark
+    String now = ResultHelper.getNow();
+    ExecutionConfig ec = new ExecutionConfig(4000, 8000, bbs.isDryRun());
+
+    System.out.println("Please remember to stop all other Java processes.");
+    System.out.println();
+    System.out.println("If in doubt, check with this command:");
+    System.out.println("$ ps auxw | grep jav[a]");
+    System.out.println();
+    System.out.println("If there are other Java processes, use:");
+    System.out.println("$ killall -9 java");
+    System.out.println();
+    System.out.println("############################################################");
+    System.out.println("Benchmark parameters:");
+    System.out.println("- execution config: " + ec);
+    System.out.println(bbs);
+//		System.out.println("- range: minSize=" + bbs.getMinSize() +", maxSize=" + bbs.getMaxSize());
+//		System.out.println("- timeout: " + bbs.getTimeout());
+//		System.out.println("- runs: " + bbs.getRuns());
+    System.out.println("############################################################");
+    System.out.println();
+
+    workloads.getWorkloads().forEach(workloadConfiguration -> {
+      String workloadName = workloadConfiguration.getWorkloadName();
+      String modelVariant = workloadConfiguration.getModelVariant();
+      List<RailwayOperation> operations = workloadConfiguration.getOperations();
+      TransformationChangeSetStrategy strategy = workloadConfiguration.getStrategy();
+      int constant = workloadConfiguration.getConstant();
+      int queryTransformationCount = workloadConfiguration.getQueryTransformationCount();
+
+      System.out.println("============================================================");
+      System.out.println("Workload: " + workloadName);
+      System.out.println("============================================================");
+
+      ModelSetConfig modelSetConfig = new ModelSetConfig(modelVariant, bbs.getMinSize(), bbs.getMaxSize());
+      BenchmarkConfigBaseBuilder bcbb = new BenchmarkConfigBaseBuilder()
+        .setBenchmarkId(now).setTimeout(bbs.getTimeout()).setRuns(bbs.getRuns())
+        .setOperations(operations).setWorkload(workloadName)
+        .setQueryTransformationCount(queryTransformationCount).setTransformationConstant(constant)
+        .setTransformationChangeSetStrategy(strategy);
+
+      builders.forEach(bcb -> runBenchmarkSeries(bcbb, bcb, ec, modelSetConfig, bbs));
+    });
+
+//		if (binding.variables.get("reportUrl")) {
+//			BenchmarkReporter.reportReady(reportUrl)
+//		}
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableFormats.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableFormats.java
new file mode 100644
index 0000000000000000000000000000000000000000..48ff5d763f948590aea5a1ce4f03e4cf786b1bf8
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableFormats.java
@@ -0,0 +1,80 @@
+package de.tudresden.inf.st.train.scripts;
+
+import de.tudresden.inf.st.trainbenchmark.generator.jastadd.config.ManualGeneratorConfigBuilder;
+import de.tudresden.inf.st.trainbenchmark.generator.jastadd.config.ManualIntrinsicGeneratorConfigBuilder;
+import de.tudresden.inf.st.trainbenchmark.generator.jastadd.config.RelASTGeneratorConfigBuilder;
+import hu.bme.mit.trainbenchmark.generator.config.*;
+import hu.bme.mit.trainbenchmark.generator.emf.config.EmfGeneratorConfigBuilder;
+import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphFormat;
+import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphGeneratorConfigBuilder;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * Format settings of a benchmark shared throughout all variants.
+ * Created by rschoene on 10/13/17.
+ */
+public class BenchmarkSettingsAvailableFormats {
+  /**
+   * Create a map, from projectName to a set of all builders in this project
+   *
+   * @return a mapping from projectName to all builders
+   */
+  public static Map<String, List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>>
+  getAvailableFormats() {
+    // { projectName -> [builder] }
+    GeneratorConfigBase dummyConfigBase = new GeneratorConfigBaseBuilder()
+        .setScenario(Scenario.BATCH).setSize(1)
+        .createGeneratorConfigBase();
+    return getAllBuilders().stream().collect(Collectors.toMap(
+        builder -> builder.setConfigBase(dummyConfigBase).createConfig().getProjectName(),
+        s -> new ArrayList<>(Collections.singletonList(s)),
+        (oldValue, newValue) -> {
+          oldValue.addAll(newValue);
+          return oldValue;
+        }));
+  }
+
+  private static GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>
+  getBuilderByName(String className) {
+    Optional<Object> result = Utils.maybeCreateNewInstance(className);
+    return (GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>) result.orElse(null);
+  }
+
+  private static List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>
+  getAllBuilders() {
+    return Arrays.asList(
+        new EmfGeneratorConfigBuilder(),
+        new TinkerGraphGeneratorConfigBuilder().setGraphFormat(TinkerGraphFormat.GRAPHML),
+        new ManualGeneratorConfigBuilder(),
+        new ManualIntrinsicGeneratorConfigBuilder(),
+        new RelASTGeneratorConfigBuilder()
+    );
+  }
+
+  /**
+   * Get all builders with the given names of formats. The format name in the config every builder creates
+   * must match one of the given project names.
+   *
+   * @param formatNames names of formats
+   * @return a set of matching generator config builders
+   */
+  public static List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>
+  getBuilders(String... formatNames) {
+    Map<String, List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>>
+        availableFormats = getAvailableFormats();
+    return Arrays.stream(formatNames).map(name -> {
+      List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>>
+          builders = availableFormats.get(name);
+      if (builders.isEmpty()) {
+        throw new IllegalArgumentException("Could not find format " + name + ", available formats are: "
+            + availableFormats.keySet());
+      }
+      return builders;
+    }).reduce((set1, set2) -> {
+      set1.addAll(set2);
+      return set1;
+    }).orElse(Collections.emptyList());
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableTools.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableTools.java
new file mode 100644
index 0000000000000000000000000000000000000000..f25540490a3e03201345d2bcdb266b9fb91a602e
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsAvailableTools.java
@@ -0,0 +1,73 @@
+package de.tudresden.inf.st.train.scripts;
+
+import de.tudresden.inf.st.train.jastadd.config.*;
+import hu.bme.mit.trainbenchmark.benchmark.config.*;
+import hu.bme.mit.trainbenchmark.benchmark.tinkergraph.config.TinkerGraphBenchmarkConfigBuilder;
+import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBackend;
+import hu.bme.mit.trainbenchmark.benchmark.viatra.config.ViatraBenchmarkConfigBuilder;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * Tool settings of a benchmark shared throughout all variants
+ * Created by rschoene on 10/12/17.
+ */
+public class BenchmarkSettingsAvailableTools {
+  public static Map<String, BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>>
+  getAvailableTools() {
+    // { toolName -> builder }
+    BenchmarkConfigBase dummyConfigBase = new BenchmarkConfigBaseBuilder()
+        .setBenchmarkId("").setTimeout(0L).setRuns(0).setModelFilename("")
+        .setOperations(new ArrayList<>()).setWorkload("")
+        .setTransformationChangeSetStrategy(TransformationChangeSetStrategy.FIXED)
+        .setQueryTransformationCount(0).setTransformationConstant(0)
+        .createConfigBase();
+    return getAllBuilders().stream().collect(Collectors.toMap(
+        builder -> builder.setConfigBase(dummyConfigBase).createConfig().getToolName(),
+        Function.identity()));
+  }
+
+  private static BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>
+  getBuilderByName(String className) {
+    Optional<Object> result = Utils.maybeCreateNewInstance(className);
+    return (BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>) result.orElse(null);
+  }
+
+  private static List<BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>>
+  getAllBuilders() {
+    return Arrays.asList(
+        new NameLookupBenchmarkConfigBuilder(),
+        new NameLookupIncrementalBenchmarkConfigBuilder(),
+        new IntrinsicBenchmarkConfigBuilder(),
+        new IntrinsicIncrementalBenchmarkConfigBuilder(),
+        new RelASTBenchmarkConfigBuilder(),
+        new RelASTIncrementalBenchmarkConfigBuilder(),
+        new ManualRelastBenchmarkConfigBuilder(),
+        new ManualRelastIncrementalBenchmarkConfigBuilder(),
+        new TinkerGraphBenchmarkConfigBuilder(),
+        new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.INCREMENTAL),
+        new ViatraBenchmarkConfigBuilder().setBackend(ViatraBackend.LOCAL_SEARCH)
+    );
+  }
+
+  /**
+   * Get all builders with the given names of tools. The tool name in the config every builder creates must match one
+   * of the given tool names.
+   *
+   * @param toolNames names of tools
+   * @return a list of matching benchmark config builders
+   */
+  public static List<BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>>
+  getBuilders(String... toolNames) {
+    Map<String, BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>>> availableTools = getAvailableTools();
+    return Arrays.stream(toolNames).map(name -> {
+      BenchmarkConfigBuilder<? extends BenchmarkConfig, ? extends BenchmarkConfigBuilder<?, ?>> builder = availableTools.get(name);
+      if (builder == null) {
+        throw new IllegalArgumentException("Could not find tool " + name + ", available tools are: " + availableTools.keySet());
+      }
+      return builder;
+    }).collect(Collectors.toList());
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsBasics.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsBasics.java
new file mode 100644
index 0000000000000000000000000000000000000000..9d8f60f9dc437a7488b27ac1812ed1ca3ab97f91
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsBasics.java
@@ -0,0 +1,147 @@
+package de.tudresden.inf.st.train.scripts;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonSetter;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Basic settings bean of a benchmark shared throughout all variants.
+ * Created by rschoene on 10/12/17.
+ */
+public class BenchmarkSettingsBasics {
+
+  @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+  private Integer minSize = null;
+  @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+  private Integer maxSize = null;
+  @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+  private Long timeout = null;
+  @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+  private Integer runs = null;
+  @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+  private Boolean dryRun = null;
+  private String[] tools;
+  private String[] formats;
+  private List<JVMSetting> jvmSettings;
+
+  /**
+   * Minimum model size
+   */
+  public Integer getMinSize() {
+    return minSize;
+  }
+
+  public void setMinSize(int minSize) {
+    this.minSize = minSize;
+  }
+
+  /**
+   * Maximum model size
+   */
+  public Integer getMaxSize() {
+    return maxSize;
+  }
+
+  public void setMaxSize(int maxSize) {
+    this.maxSize = maxSize;
+  }
+
+  /**
+   * Timeout in seconds for each single run.
+   */
+  public Long getTimeout() {
+    return timeout;
+  }
+
+  public void setTimeout(long timeout) {
+    this.timeout = timeout;
+  }
+
+  /**
+   * Number of runs per tool-workload combination.
+   */
+  public Integer getRuns() {
+    return runs;
+  }
+
+  public void setRuns(int runs) {
+    this.runs = runs;
+  }
+
+  /**
+   * Don't run any Java processes.
+   */
+  public Boolean isDryRun() {
+    return dryRun;
+  }
+
+  @JsonSetter("dry-run")
+  public void setDryRun(boolean dryRun) {
+    this.dryRun = dryRun;
+  }
+
+  /**
+   * List of tool names to use
+   */
+  public String[] getTools() {
+    return tools;
+  }
+
+  public void setTools(String[] tools) {
+    this.tools = tools;
+  }
+
+  /**
+   * List of format names to use
+   */
+  public String[] getFormats() {
+    return formats;
+  }
+
+  public void setFormats(String[] formats) {
+    this.formats = formats;
+  }
+
+  public List<JVMSetting> getJvmSettings() {
+    return jvmSettings;
+  }
+
+  public void setJvmSettings(List<JVMSetting> jvmSettings) {
+    this.jvmSettings = jvmSettings;
+  }
+
+  @Override
+  public String toString() {
+    return "BenchmarkSettingsBasics{" +
+      "minSize=" + minSize +
+      ", maxSize=" + maxSize +
+      ", timeout=" + timeout +
+      ", runs=" + runs +
+      ", dryRun=" + dryRun +
+      ", tools=" + Arrays.toString(tools) +
+      '}';
+  }
+
+  static class JVMSetting {
+    private List<String> applyTo;
+    private String args;
+
+    public List<String> getApplyTo() {
+      return applyTo;
+    }
+
+    public void setApplyTo(List<String> applyTo) {
+      this.applyTo = applyTo;
+    }
+
+    public String getArgs() {
+      return args;
+    }
+
+    public void setArgs(String args) {
+      this.args = args;
+    }
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsVariantWorkloads.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsVariantWorkloads.java
new file mode 100644
index 0000000000000000000000000000000000000000..03a52700208883201cd283e76b4dd5bc5ccae858
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsVariantWorkloads.java
@@ -0,0 +1,19 @@
+package de.tudresden.inf.st.train.scripts;
+
+import java.util.List;
+
+/**
+ * List of all workload settings by variant.
+ * Created by rschoene on 10/12/17.
+ */
+public class BenchmarkSettingsVariantWorkloads {
+  private List<BenchmarkSettingsWorkloads> variants;
+
+  public List<BenchmarkSettingsWorkloads> getVariants() {
+    return variants;
+  }
+
+  public void setVariants(List<BenchmarkSettingsWorkloads> variants) {
+    this.variants = variants;
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkload.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkload.java
new file mode 100644
index 0000000000000000000000000000000000000000..54f3d20090f0dfe5bfeb669313baa82e34f42951
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkload.java
@@ -0,0 +1,81 @@
+package de.tudresden.inf.st.train.scripts;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import hu.bme.mit.trainbenchmark.benchmark.config.TransformationChangeSetStrategy;
+import hu.bme.mit.trainbenchmark.constants.RailwayOperation;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * Benchmark setting workload bean.
+ * Created by rschoene on 10/12/17.
+ */
+public class BenchmarkSettingsWorkload {
+  private String workloadName;
+  private String modelVariant;
+  private List<RailwayOperation> operations;
+  private TransformationChangeSetStrategy strategy;
+  //	private String strategy;
+  private int constant;
+  private int queryTransformationCount;
+  @JsonIgnore
+  private Map<String, RailwayOperation> railwayOps;
+
+  public BenchmarkSettingsWorkload() {
+    railwayOps = Arrays.stream(RailwayOperation.values()).collect(Collectors.toMap(
+        RailwayOperation::toString, Function.identity()
+    ));
+  }
+
+  public String getWorkloadName() {
+    return workloadName;
+  }
+
+  public void setWorkloadName(String workloadName) {
+    this.workloadName = workloadName;
+  }
+
+  public String getModelVariant() {
+    return modelVariant;
+  }
+
+  public void setModelVariant(String modelVariant) {
+    this.modelVariant = modelVariant;
+  }
+
+  public List<RailwayOperation> getOperations() {
+    return operations;
+  }
+
+  public void setOperations(List<String> operations) {
+    this.operations = operations.stream().map(op -> railwayOps.get(op)).collect(Collectors.toList());
+  }
+
+  public TransformationChangeSetStrategy getStrategy() {
+    return strategy;
+  }
+
+  public void setStrategy(TransformationChangeSetStrategy strategy) {
+    this.strategy = strategy;
+  }
+
+  public int getConstant() {
+    return constant;
+  }
+
+  public void setConstant(int constant) {
+    this.constant = constant;
+  }
+
+  public int getQueryTransformationCount() {
+    return queryTransformationCount;
+  }
+
+  public void setQueryTransformationCount(int queryTransformationCount) {
+    this.queryTransformationCount = queryTransformationCount;
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkloads.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkloads.java
new file mode 100644
index 0000000000000000000000000000000000000000..984c997b269ce2c4c51e476a2128929c1a4fb535
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkSettingsWorkloads.java
@@ -0,0 +1,28 @@
+package de.tudresden.inf.st.train.scripts;
+
+import java.util.List;
+
+/**
+ * Workload settings bean.
+ * Created by rschoene on 10/12/17.
+ */
+public class BenchmarkSettingsWorkloads {
+  private String name;
+  private List<BenchmarkSettingsWorkload> workloads;
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public List<BenchmarkSettingsWorkload> getWorkloads() {
+    return workloads;
+  }
+
+  public void setWorkloads(List<BenchmarkSettingsWorkload> workloads) {
+    this.workloads = workloads;
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkVariant.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkVariant.java
similarity index 67%
rename from trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkVariant.java
rename to trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkVariant.java
index d6f04f1183bf0cd409f770347a87f6d769f15276..6d18ede25402301dcd4b8d05a5fd34c5d5957668 100644
--- a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkVariant.java
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/BenchmarkVariant.java
@@ -5,8 +5,8 @@ package de.tudresden.inf.st.train.scripts;
  * Created by rschoene on 10/12/17.
  */
 public enum BenchmarkVariant {
-	COMBINED,
-	INDIVIDUAL_INJECT,
-	INDIVIDUAL_REPAIR,
-	INDIVIDUAL_INCREMENTAL
+  COMBINED,
+  INDIVIDUAL_INJECT,
+  INDIVIDUAL_REPAIR,
+  INDIVIDUAL_INCREMENTAL
 }
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/GenerateMain.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/GenerateMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..cd1acff55e50f18d30876777badfed3b63105aeb
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/GenerateMain.java
@@ -0,0 +1,134 @@
+package de.tudresden.inf.st.train.scripts;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import hu.bme.mit.trainbenchmark.config.ExecutionConfig;
+import hu.bme.mit.trainbenchmark.generator.config.*;
+import hu.bme.mit.trainbenchmark.generator.runner.GeneratorRunner;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Main entry point to generate models.
+ * Created by rschoene on 10/13/17.
+ */
+public class GenerateMain {
+  public static void main(String[] args) throws Exception {
+    // read basic settings (min, maxsize, etc.)
+    ObjectMapper mapper = Utils.getMapper();
+    BenchmarkSettingsBasics bbs = Utils.readFromResource(mapper, "basic-settings.json",
+        BenchmarkSettingsBasics.class);
+    try {
+      BenchmarkSettingsBasics loca_bbs = Utils.readFromResource(mapper, "local-basic-settings.json",
+          BenchmarkSettingsBasics.class);
+      Utils.updateBasicsWithLocal(bbs, loca_bbs);
+    } catch (IOException e) {
+      System.out.println("No file 'local-basic-settings.json' found. Using default!");
+    }
+
+    // import formats to use
+    List<GeneratorConfigBuilder<? extends GeneratorConfig, ? extends GeneratorConfigBuilder<?, ?>>> builders =
+        BenchmarkSettingsAvailableFormats.getBuilders(bbs.getFormats());
+    System.out.println(builders);
+    ExecutionConfig ec = new ExecutionConfig(4000, 8000, bbs.isDryRun());
+
+    // generating the MINIMAL scenario
+    for (ModelType modelType : ModelType.values()) {
+      builders.forEach(generatorConfigBuilder -> {
+        try {
+          System.out.println("Scenario: " + Scenario.MINIMAL + ", type: " + modelType);
+          GeneratorConfigBase configBase = new GeneratorConfigBaseBuilder()
+              .setSize(0).setModelType(modelType).setScenario(Scenario.MINIMAL).createGeneratorConfigBase();
+          GeneratorConfig config = generatorConfigBuilder.setConfigBase(configBase).createConfig();
+          int exitValue = GeneratorRunner.run(config, ec);
+          if (exitValue != 0) {
+            System.out.println("Timeout or error occurred. Error code: " + exitValue);
+          }
+        } catch (Exception e) {
+          System.out.println("Exception occurred during execution.");
+        }
+      });
+    }
+
+    // generating the other scenarios
+    for (Scenario scenario : new Scenario[]{Scenario.BATCH, Scenario.INJECT, Scenario.REPAIR}) {
+      builders.forEach(generatorConfigBuilder -> {
+        try {
+
+          for (int size = bbs.getMinSize(); size <= bbs.getMaxSize(); size *= 2) {
+            System.out.println("Scenario: " + scenario + ", size: " + size);
+
+            GeneratorConfigBase configBase = new GeneratorConfigBaseBuilder()
+                .setSize(size).setScenario(scenario)
+                .createGeneratorConfigBase();
+            GeneratorConfig config = generatorConfigBuilder.setConfigBase(configBase).createConfig();
+
+            int exitValue = GeneratorRunner.run(config, ec);
+            if (exitValue != 0) {
+              System.out.println("Timeout or error occurred, skipping models for larger sizes. Error code: "
+                  + exitValue);
+              break;
+            }
+          }
+        } catch (Exception e) {
+          System.out.println("Exception occurred during execution.");
+        }
+      });
+    }
+
+
+  }
+
+}
+
+/*
+import de.tudresden.inf.st.trainbenchmark.generator.json4ag.config.ManualGeneratorConfigBuilder
+import de.tudresden.inf.st.trainbenchmark.generator.json4agref.config.JastAddManualRefGeneratorConfigBuilder
+import hu.bme.mit.trainbenchmark.config.ExecutionConfig
+import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase
+import hu.bme.mit.trainbenchmark.generator.config.Scenario
+import hu.bme.mit.trainbenchmark.generator.emf.config.EmfGeneratorConfigBuilder
+import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphFormat
+import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphGeneratorConfigBuilder
+import hu.bme.mit.trainbenchmark.generator.runner.GeneratorRunner
+
+def ec = new ExecutionConfig(4000, 6000)
+def minSize = 1
+/* def maxSize = 2048 *
+def maxSize = 256
+
+	def scenarios = [
+		Scenario.BATCH,
+		Scenario.INJECT,
+		Scenario.REPAIR,
+		]
+
+		def formats = [
+		new EmfGeneratorConfigBuilder(),
+		new TinkerGraphGeneratorConfigBuilder().setGraphFormat(TinkerGraphFormat.GRAPHML),
+		new ManualGeneratorConfigBuilder(),
+		new JastAddManualRefGeneratorConfigBuilder()
+		]
+
+		for (scenario in scenarios) {
+		formats.each { generatorConfigBuilder ->
+		try {
+		for (def size = minSize; size <= maxSize; size *= 2) {
+		println("Scenario: ${scenario}, size: ${size}")
+
+		def configBase = new GeneratorConfigBase(scenario, size)
+		def config = generatorConfigBuilder.setConfigBase(configBase).createConfig()
+
+		def exitValue = GeneratorRunner.run(config, ec)
+		if (exitValue != 0) {
+		println "Timeout or error occured, skipping models for larger sizes. Error code: ${exitValue}"
+		break
+		}
+		}
+		} catch (all) {
+		println "Exception occured during execution."
+		}
+		}
+		}
+
+ */
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/Utils.java b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/Utils.java
new file mode 100644
index 0000000000000000000000000000000000000000..46aee771e9a95c9c48a97192f886946c48db512c
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/java/de/tudresden/inf/st/train/scripts/Utils.java
@@ -0,0 +1,99 @@
+package de.tudresden.inf.st.train.scripts;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * Utility methods for the main entry points.
+ * Created by rschoene on 10/13/17.
+ */
+public class Utils {
+  static Map<String, String> createJvmSettingsMap(BenchmarkSettingsBasics bbs) {
+    Map<String, String> result = new HashMap<>();
+    for (BenchmarkSettingsBasics.JVMSetting setting : bbs.getJvmSettings()) {
+      for (String toolName : setting.getApplyTo()) {
+        result.put(toolName, setting.getArgs());
+      }
+    }
+    return result;
+  }
+
+  private static File readFromResource(String filename) throws IOException {
+    URL basicSettingsURL = BenchmarkMain.class.getClassLoader().getResource(filename);
+    if (basicSettingsURL == null) {
+      System.err.println();
+      throw new IOException("Could not access " + filename + ". Exiting.");
+    }
+    return new File(basicSettingsURL.getFile());
+  }
+
+  static <T> T readFromResource(ObjectMapper mapper, String filename, Class<T> clazz) throws IOException {
+    File basicSettingsFile = readFromResource(filename);
+    T result = null;
+    try {
+      result = mapper.readValue(basicSettingsFile, clazz);
+    } catch (Exception e) {
+      System.err.println("Could not load '" + filename + "'. Exiting.");
+      e.printStackTrace();
+      System.exit(2);
+    }
+    return result;
+  }
+
+  static void updateBasicsWithLocal(BenchmarkSettingsBasics base, BenchmarkSettingsBasics local)
+    throws IllegalStateException {
+    List<Method> setter = Arrays.stream(BenchmarkSettingsBasics.class.getMethods())
+      .filter(m -> m.getName().startsWith("set"))
+      .collect(Collectors.toList());
+    for (Method method : BenchmarkSettingsBasics.class.getMethods()) {
+      final String name = method.getName().startsWith("get") ?
+        method.getName().substring(3) :
+        (method.getName().startsWith("is") ? method.getName().substring(2) : null);
+      if (name == null) {
+        continue;
+      }
+      try {
+        Object result = method.invoke(local);
+        if (result != null) {
+          Optional<Method> matchingSetter = setter.stream()
+            .filter(m -> m.getName().endsWith(name))
+            .findFirst();
+          if (matchingSetter.isPresent()) {
+            matchingSetter.get().invoke(base, result);
+          }
+        }
+        // now do sanity check if set in updated base
+        result = method.invoke(base);
+        if (result == null) {
+          throw new IllegalStateException("Basic setting for " + name + " is not given.");
+        }
+      } catch (IllegalAccessException | InvocationTargetException e) {
+        e.printStackTrace();
+      }
+    }
+  }
+
+  static ObjectMapper getMapper() {
+    ObjectMapper mapper = new ObjectMapper();
+    mapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
+    return mapper;
+  }
+
+  static Optional<Object> maybeCreateNewInstance(final String className) {
+    try {
+      return Optional.of(Class.forName(className).newInstance());
+    } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+      System.err.println("Could not find builder class '" + className + "'");
+      e.printStackTrace();
+      return Optional.empty();
+    }
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/resources/.gitignore b/trainbenchmark/trainbenchmark-scripts/src/main/resources/.gitignore
similarity index 100%
rename from trainbenchmark/trainbenchmark-alternate-scripts/src/main/resources/.gitignore
rename to trainbenchmark/trainbenchmark-scripts/src/main/resources/.gitignore
diff --git a/trainbenchmark/trainbenchmark-scripts/src/main/resources/basic-settings.json b/trainbenchmark/trainbenchmark-scripts/src/main/resources/basic-settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..8d4694694ba928a0571ac46d24f0b8072bee17f4
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-scripts/src/main/resources/basic-settings.json
@@ -0,0 +1,35 @@
+{
+  "minSize": 1,
+  "maxSize": 8,
+  "timeout": 900,
+  "runs": 1,
+  "dry-run": false,
+  "tools": [
+    "Name Lookup",
+    "Name Lookup (Incremental)",
+    "Intrinsic References",
+    "Intrinsic References (Incremental)",
+    "Grammar Extension with Serializer",
+    "Grammar Extension with Serializer (Incremental)",
+    "Grammar Extension (Manual Serialization)",
+    "Grammar Extension (Manual Serialization, Incremental)",
+    "TinkerGraph",
+    "VIATRA (Incremental)",
+    "VIATRA (Local Search)"
+  ],
+  "formats": [
+    "emf",
+    "jastadd-manual",
+    "jastadd-manual-intrinsic",
+    "jastadd-relast",
+    "graph-tinkerpop"
+  ],
+  "jvmSettings": [
+    {
+      "applyTo": [
+        "*"
+      ],
+      "args": "-Xms%(Xms) -Xmx%(Xmx) -server -Xverify:none"
+    }
+  ]
+}
diff --git a/trainbenchmark/trainbenchmark-alternate-scripts/src/main/resources/workloads.json b/trainbenchmark/trainbenchmark-scripts/src/main/resources/workloads.json
similarity index 100%
rename from trainbenchmark/trainbenchmark-alternate-scripts/src/main/resources/workloads.json
rename to trainbenchmark/trainbenchmark-scripts/src/main/resources/workloads.json
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-base/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddAbstractBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-base/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddAbstractBenchmarkScenario.java
index f725f0bd254fd664148ad84f7a8f30811e8293e1..903911a76d3bb16ef88796159b783705029d082c 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-base/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddAbstractBenchmarkScenario.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-base/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddAbstractBenchmarkScenario.java
@@ -11,6 +11,7 @@ import hu.bme.mit.trainbenchmark.constants.RailwayOperation;
 import hu.bme.mit.trainbenchmark.benchmark.driver.Driver;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
 import de.tudresden.inf.st.train.jastadd.config.JastaddAbstractBenchmarkConfig;
+import hu.bme.mit.trainbenchmark.benchmark.result.ResultHelper;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -30,7 +31,7 @@ public abstract class JastaddAbstractBenchmarkScenario<TBenchmarkConfigWrapper e
 
   public void printTraces() {
     try {
-      String fileName = "../results/recent/tracing-" + this.bc.getToolName() + "-" + this.bc.getConfigBase().getWorkload() + "-" + this.bc.getConfigBase().getModelFilename() + "-.csv";
+      String fileName = ResultHelper.getResultDirectory(this.bc.getProjectName(), bc.getConfigBase().getBenchmarkId()) + "/tracing-" + this.bc.getToolName() + "-" + this.bc.getConfigBase().getWorkload() + "-" + this.bc.getConfigBase().getModelFilename() + "-.csv";
       File file = new File(fileName);
 
       FileOutputStream fos = new FileOutputStream(file, false);
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/.editorconfig b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/.editorconfig
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/.editorconfig
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/.editorconfig
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/build.gradle
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/build.gradle
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/build.gradle
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/Helpers.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/Helpers.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/Helpers.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/Helpers.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/References.jadd b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/References.jadd
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/References.jadd
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/References.jadd
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/TreeNavigation.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/TreeNavigation.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/TreeNavigation.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/TreeNavigation.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/ConnectedSegmentsMatch.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/ConnectedSegmentsMatch.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/ConnectedSegmentsMatch.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/ConnectedSegmentsMatch.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/PosLength.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/PosLength.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/PosLength.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/PosLength.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/RouteSensorMatch.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/RouteSensorMatch.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/RouteSensorMatch.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/RouteSensorMatch.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SwitchMonitoredMatch.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/SwitchMonitoredMatch.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SwitchMonitoredMatch.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/SwitchMonitoredMatch.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SwitchSetMatch.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/SwitchSetMatch.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SwitchSetMatch.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/queries/SwitchSetMatch.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/train.ast b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/train.ast
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/train.ast
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/train.ast
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
similarity index 97%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
index 47e998c7cc3a2e600696667a54fdade244db0067..ee595c277943eb8beee61a7438802b63eff7a7ed 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
@@ -55,7 +55,7 @@ public class JastaddDriver extends Driver {
 
   @Override
   public String getPostfix() {
-    return "-ag.json";
+    return "-jastadd-manual.json";
   }
 
   public void flushCache() {
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectConnectedSegments.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectConnectedSegments.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectConnectedSegments.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectConnectedSegments.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectPosLength.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectPosLength.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectPosLength.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectPosLength.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectRouteSensor.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectRouteSensor.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectRouteSensor.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectRouteSensor.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSemaphoreNeighbor.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSemaphoreNeighbor.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSemaphoreNeighbor.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSemaphoreNeighbor.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchMonitored.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchMonitored.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchMonitored.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchMonitored.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchSet.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchSet.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchSet.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchSet.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairPosLength.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairPosLength.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairPosLength.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairPosLength.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairRouteSensor.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairRouteSensor.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairRouteSensor.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairRouteSensor.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchSet.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchSet.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchSet.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchSet.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/.editorconfig b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/.editorconfig
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/.editorconfig
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/.editorconfig
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/.gitignore b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/.gitignore
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/.gitignore
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/.gitignore
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/build.gradle
similarity index 84%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/build.gradle
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/build.gradle
index 6aadf620cc2d074c283b4ffad4e08cf24ba76c2d..7c317073e29c0ed5120735ee0e87651ae448ba03 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/build.gradle
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/build.gradle
@@ -4,6 +4,7 @@ apply plugin: 'idea'
 
 idea {
     module {
+        generatedSourceDirs += file('src/main/java-gen')
         generatedSourceDirs += file('src/main/java-include')
     }
 }
@@ -12,13 +13,13 @@ task copyFromBase(type: Copy) {
     group = 'build'
     description = 'Copy Java sources from base project'
     from '../trainbenchmark-tool-jastadd-base/src/main/java'
-    from '../trainbenchmark-tool-jastadd-optimized-base/src/main/java'
+    from '../trainbenchmark-tool-jastadd-intrinsic-base/src/main/java'
     into 'src/main/java-include'
 }
 
 shadowJar {
     classifier = 'fat'
-    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
+    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.IntrinsicIncrementalBenchmarkMain' }
 }
 
 task jastadd(type: JavaExec) {
@@ -33,13 +34,13 @@ task jastadd(type: JavaExec) {
             "--package=de.tudresden.inf.st.train.jastadd.ast",
             "--o=src/main/java-gen",
             "--tracing=api",
-    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/")
+    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/")
     doFirst {
         delete fileTree('src/main/java-gen')
         mkdir 'src/main/java-gen'
     }
 
-    inputs.files fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/")
+    inputs.files fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/")
     outputs.files file("src/main/java-gen")
 }
 
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicIncrementalBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicIncrementalBenchmarkMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..bd9e5482b90abe7a9549cf3dd098516d81c63fc4
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicIncrementalBenchmarkMain.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.IntrinsicIncrementalBenchmarkConfig;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
+
+public class IntrinsicIncrementalBenchmarkMain {
+  public static void main(final String[] args) throws Exception {
+    final IntrinsicIncrementalBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], IntrinsicIncrementalBenchmarkConfig.class);
+    final IntrinsicIncrementalBenchmarkScenario scenario = new IntrinsicIncrementalBenchmarkScenario(bc);
+    scenario.performBenchmark();
+    scenario.printTraces();
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicIncrementalBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicIncrementalBenchmarkScenario.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e035674892771ab97bb6339ed4cad7fb3f28f24
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicIncrementalBenchmarkScenario.java
@@ -0,0 +1,12 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.IntrinsicIncrementalBenchmarkConfig;
+
+public class IntrinsicIncrementalBenchmarkScenario extends
+  JastaddAbstractBenchmarkScenario<IntrinsicIncrementalBenchmarkConfig> {
+
+  public IntrinsicIncrementalBenchmarkScenario(final IntrinsicIncrementalBenchmarkConfig bc) throws Exception {
+    super(bc, false);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedIncrementalBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicIncrementalBenchmarkConfig.java
similarity index 53%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedIncrementalBenchmarkConfig.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicIncrementalBenchmarkConfig.java
index c4aac5a4ae85b1a4c2ef8a32cef2f43c0f1084b1..676919f5e9964eb7680353e3940b8268e3244bbf 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedIncrementalBenchmarkConfig.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicIncrementalBenchmarkConfig.java
@@ -3,20 +3,20 @@ package de.tudresden.inf.st.train.jastadd.config;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 
-public class JastaddOptimizedIncrementalBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
+public class IntrinsicIncrementalBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
 
-  protected JastaddOptimizedIncrementalBenchmarkConfig(final BenchmarkConfigBase configBase) {
+  protected IntrinsicIncrementalBenchmarkConfig(final BenchmarkConfigBase configBase) {
     super(configBase);
   }
 
   @Override
   public String getToolName() {
-    return "Jastadd (Optimized Incremental)";
+    return "Intrinsic References (Incremental)";
   }
 
   @Override
   public String getProjectName() {
-    return "jastadd-optimized-incremental";
+    return "jastadd-intrinsic-incremental";
   }
 
 }
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicIncrementalBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicIncrementalBenchmarkConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ec294bb7bf31a2050263a10550b21fb16b18d5f
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicIncrementalBenchmarkConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
+
+public class IntrinsicIncrementalBenchmarkConfigBuilder extends BenchmarkConfigBuilder<IntrinsicIncrementalBenchmarkConfig, IntrinsicIncrementalBenchmarkConfigBuilder> {
+
+  @Override
+  public IntrinsicIncrementalBenchmarkConfig createConfig() {
+    checkNotNulls();
+    return new IntrinsicIncrementalBenchmarkConfig(configBase);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddRefTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddRefTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..789e744bf111cb1f5e935ca4f015eb22fdcd3a9b
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddRefTest.java
@@ -0,0 +1,20 @@
+package de.tudresden.inf.st.train.jastadd.test;
+
+import de.tudresden.inf.st.train.jastadd.IntrinsicIncrementalBenchmarkScenario;
+import de.tudresden.inf.st.train.jastadd.config.IntrinsicIncrementalBenchmarkConfig;
+import de.tudresden.inf.st.train.jastadd.config.IntrinsicIncrementalBenchmarkConfigBuilder;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
+import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
+import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
+
+public class JastaddRefTest extends TrainBenchmarkTest {
+
+  @Override
+  protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
+    final IntrinsicIncrementalBenchmarkConfig bc = new IntrinsicIncrementalBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
+    final IntrinsicIncrementalBenchmarkScenario scenario = new IntrinsicIncrementalBenchmarkScenario(bc);
+    final BenchmarkResult result = scenario.performBenchmark();
+    return result;
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/.editorconfig b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/.editorconfig
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized/.editorconfig
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/.editorconfig
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/.gitignore b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/.gitignore
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized/.gitignore
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/.gitignore
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/build.gradle
similarity index 84%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized/build.gradle
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/build.gradle
index f06dce97f406e5400edd07eca47c64aa5b3369ba..f5019a2adfb384f1b22a5aee5943c4c186e0a9fb 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/build.gradle
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/build.gradle
@@ -4,6 +4,7 @@ apply plugin: 'idea'
 
 idea {
     module {
+        generatedSourceDirs += file('src/main/java-gen')
         generatedSourceDirs += file('src/main/java-include')
     }
 }
@@ -12,13 +13,13 @@ task copyFromBase(type: Copy) {
     group = 'build'
     description = 'Copy Java sources from base project'
     from '../trainbenchmark-tool-jastadd-base/src/main/java'
-    from '../trainbenchmark-tool-jastadd-optimized-base/src/main/java'
+    from '../trainbenchmark-tool-jastadd-intrinsic-base/src/main/java'
     into 'src/main/java-include'
 }
 
 shadowJar {
     classifier = 'fat'
-    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
+    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.IntrinsicBenchmarkMain' }
 }
 
 task jastadd(type: JavaExec) {
@@ -31,13 +32,13 @@ task jastadd(type: JavaExec) {
             "--package=de.tudresden.inf.st.train.jastadd.ast",
             "--o=src/main/java-gen",
             "--tracing=api",
-    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/")
+    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/")
     doFirst {
         delete fileTree('src/main/java-gen')
         mkdir 'src/main/java-gen'
     }
 
-    inputs.files fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/")
+    inputs.files fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-intrinsic-base/src/main/jastadd/")
     outputs.files file("src/main/java-gen")
 }
 
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicBenchmarkMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..2bc2e8f4ce6d5535e1ee702e0b32f79264485ebc
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicBenchmarkMain.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.IntrinsicBenchmarkConfig;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
+
+public class IntrinsicBenchmarkMain {
+  public static void main(final String[] args) throws Exception {
+    final IntrinsicBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], IntrinsicBenchmarkConfig.class);
+    final IntrinsicBenchmarkScenario scenario = new IntrinsicBenchmarkScenario(bc);
+    scenario.performBenchmark();
+    scenario.printTraces();
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicBenchmarkScenario.java
new file mode 100644
index 0000000000000000000000000000000000000000..d5832e6791ff39a2536d3de03c95c5ddc73d8db4
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/IntrinsicBenchmarkScenario.java
@@ -0,0 +1,12 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.IntrinsicBenchmarkConfig;
+
+public class IntrinsicBenchmarkScenario extends
+  JastaddAbstractBenchmarkScenario<IntrinsicBenchmarkConfig> {
+
+  public IntrinsicBenchmarkScenario(final IntrinsicBenchmarkConfig bc) throws Exception {
+    super(bc, true);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicBenchmarkConfig.java
similarity index 57%
rename from trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedBenchmarkConfig.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicBenchmarkConfig.java
index 50852555dc08ce86719a747353085437efb2fbde..ca67a43d3cda6d69c13aa3f1a2018f7ba904aec3 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedBenchmarkConfig.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicBenchmarkConfig.java
@@ -3,20 +3,20 @@ package de.tudresden.inf.st.train.jastadd.config;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 
-public class JastaddOptimizedBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
+public class IntrinsicBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
 
-  protected JastaddOptimizedBenchmarkConfig(final BenchmarkConfigBase configBase) {
+  protected IntrinsicBenchmarkConfig(final BenchmarkConfigBase configBase) {
     super(configBase);
   }
 
   @Override
   public String getToolName() {
-    return "Jastadd (Optimized)";
+    return "Intrinsic References";
   }
 
   @Override
   public String getProjectName() {
-    return "jastadd-optimized";
+    return "jastadd-intrinsic";
   }
 
 }
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicBenchmarkConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..042369b1f30703d6dec8f9784a65adbffacf0caf
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/main/java/de/tudresden/inf/st/train/jastadd/config/IntrinsicBenchmarkConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
+
+public class IntrinsicBenchmarkConfigBuilder extends BenchmarkConfigBuilder<IntrinsicBenchmarkConfig, IntrinsicBenchmarkConfigBuilder> {
+
+  @Override
+  public IntrinsicBenchmarkConfig createConfig() {
+    checkNotNulls();
+    return new IntrinsicBenchmarkConfig(configBase);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/test/java/de/tudresden/inf/st/train/jastadd/test/IntrinsicTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/test/java/de/tudresden/inf/st/train/jastadd/test/IntrinsicTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ad1de06f860bf3f926556c1c158ef58a49144c7
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-intrinsic/src/test/java/de/tudresden/inf/st/train/jastadd/test/IntrinsicTest.java
@@ -0,0 +1,20 @@
+package de.tudresden.inf.st.train.jastadd.test;
+
+import de.tudresden.inf.st.train.jastadd.IntrinsicBenchmarkScenario;
+import de.tudresden.inf.st.train.jastadd.config.IntrinsicBenchmarkConfig;
+import de.tudresden.inf.st.train.jastadd.config.IntrinsicBenchmarkConfigBuilder;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
+import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
+import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
+
+public class IntrinsicTest extends TrainBenchmarkTest {
+
+  @Override
+  protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
+    final IntrinsicBenchmarkConfig bc = new IntrinsicBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
+    final IntrinsicBenchmarkScenario scenario = new IntrinsicBenchmarkScenario(bc);
+    final BenchmarkResult result = scenario.performBenchmark();
+    return result;
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/.editorconfig b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/.editorconfig
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/.editorconfig
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/.editorconfig
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/.gitignore b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/.gitignore
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/.gitignore
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/.gitignore
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/build.gradle
similarity index 84%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/build.gradle
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/build.gradle
index 17a4bdda957cbf6de735ca128f5e1dbef1effb46..96cf69b65619c9a1661e489dc71042f417d67f46 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/build.gradle
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/build.gradle
@@ -13,13 +13,13 @@ task copyFromBase(type: Copy) {
     group = 'build'
     description = 'Copy Java sources from base project'
     from '../trainbenchmark-tool-jastadd-base/src/main/java'
-    from '../trainbenchmark-tool-jastadd-specialized-base/src/main/java'
+    from '../trainbenchmark-tool-jastadd-relast-base/src/main/java'
     into 'src/main/java-include'
 }
 
 shadowJar {
     classifier = 'fat'
-    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
+    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.ManualRelastIncrementalBenchmarkMain' }
 }
 
 task preprocess(type: JavaExec) {
@@ -31,13 +31,13 @@ task preprocess(type: JavaExec) {
     main = "-jar"
     args = [
             "../trainbenchmark-tool-jastadd-base/libs/relast-compiler.jar",
-            "../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast",
+            "../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast",
             "--listClass=RefList",
             "--grammarName=src/main/jastadd-gen/Train",
             "--file"
     ]
 
-    inputs.files "../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast"
+    inputs.files "../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast"
     outputs.files "src/main/jastadd-gen/Train.ast",
             "src/main/jastadd-gen/Train.jadd"
 
@@ -62,7 +62,7 @@ task jastadd(type: JavaExec) {
             "--tracing=api",
             "src/main/jastadd-gen/Train.ast",
             "src/main/jastadd-gen/Train.jadd"
-    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/").matching {exclude "*.relast"}
+    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/").matching {exclude "*.relast"}
 
     doLast {
         ant.replaceregexp(match:'RefList extends List', replace:'RefList<T extends ASTNode> extends List<T>', flags:'g', byline:true) {
@@ -73,7 +73,7 @@ task jastadd(type: JavaExec) {
     inputs.files "src/main/jastadd-gen/Train.ast",
             "src/main/jastadd-gen/Train.jadd",
             fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/"),
-            fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/")
+            fileTree("../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/")
     outputs.files "src/main/java-gen"
 }
 
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastIncrementalBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastIncrementalBenchmarkMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..78a2ffbeb92730b11a1a9a7e100f5f83944f94ff
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastIncrementalBenchmarkMain.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.ManualRelastIncrementalBenchmarkConfig;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
+
+public class ManualRelastIncrementalBenchmarkMain {
+  public static void main(final String[] args) throws Exception {
+    final ManualRelastIncrementalBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], ManualRelastIncrementalBenchmarkConfig.class);
+    final ManualRelastIncrementalBenchmarkScenario scenario = new ManualRelastIncrementalBenchmarkScenario(bc);
+    scenario.performBenchmark();
+    scenario.printTraces();
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastIncrementalBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastIncrementalBenchmarkScenario.java
new file mode 100644
index 0000000000000000000000000000000000000000..638372a078cf3003dcec19d1bd2cec9b605d7257
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastIncrementalBenchmarkScenario.java
@@ -0,0 +1,12 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.ManualRelastIncrementalBenchmarkConfig;
+
+public class ManualRelastIncrementalBenchmarkScenario extends
+  JastaddAbstractBenchmarkScenario<ManualRelastIncrementalBenchmarkConfig> {
+
+  public ManualRelastIncrementalBenchmarkScenario(final ManualRelastIncrementalBenchmarkConfig bc) throws Exception {
+    super(bc, false);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastIncrementalBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastIncrementalBenchmarkConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..33a1abfafeecd44d7ffaa6ae23ff18908527734a
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastIncrementalBenchmarkConfig.java
@@ -0,0 +1,21 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
+
+public class ManualRelastIncrementalBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
+
+  protected ManualRelastIncrementalBenchmarkConfig(final BenchmarkConfigBase configBase) {
+    super(configBase);
+  }
+
+  @Override
+  public String getToolName() {
+    return "Grammar Extension (Manual Serialization, Incremental)";
+  }
+
+  @Override
+  public String getProjectName() {
+    return "jastadd-manual-relast-incremental";
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastIncrementalBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastIncrementalBenchmarkConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..49d86d3b4f4039a97c6a2b61068be7f18f802abe
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastIncrementalBenchmarkConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
+
+public class ManualRelastIncrementalBenchmarkConfigBuilder extends BenchmarkConfigBuilder<ManualRelastIncrementalBenchmarkConfig, ManualRelastIncrementalBenchmarkConfigBuilder> {
+
+  @Override
+  public ManualRelastIncrementalBenchmarkConfig createConfig() {
+    checkNotNulls();
+    return new ManualRelastIncrementalBenchmarkConfig(configBase);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
similarity index 97%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
index 902fc1ab214a03a0fcc8fbd7f815ddeaaa064abb..302490b8f46336fadfe3337e61c0ac8fa4f8c62d 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
@@ -52,7 +52,7 @@ public class JastaddDriver extends Driver {
 
   @Override
   public String getPostfix() {
-    return "-ag-special.json";
+    return "-jastadd-manual-intrinsic.json";
   }
 
   public void flushCache() {
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTIncrementalTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTIncrementalTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..1473f7d201021ff2b4eadc8e711a201dd5f6ab53
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTIncrementalTest.java
@@ -0,0 +1,20 @@
+package de.tudresden.inf.st.train.jastadd.test;
+
+import de.tudresden.inf.st.train.jastadd.ManualRelastIncrementalBenchmarkScenario;
+import de.tudresden.inf.st.train.jastadd.config.ManualRelastIncrementalBenchmarkConfig;
+import de.tudresden.inf.st.train.jastadd.config.ManualRelastIncrementalBenchmarkConfigBuilder;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
+import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
+import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
+
+public class RelASTIncrementalTest extends TrainBenchmarkTest {
+
+  @Override
+  protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
+    final ManualRelastIncrementalBenchmarkConfig bc = new ManualRelastIncrementalBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
+    final ManualRelastIncrementalBenchmarkScenario scenario = new ManualRelastIncrementalBenchmarkScenario(bc);
+    final BenchmarkResult result = scenario.performBenchmark();
+    return result;
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/.editorconfig b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/.editorconfig
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/.editorconfig
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/.editorconfig
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/.gitignore b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/.gitignore
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized/.gitignore
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/.gitignore
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/build.gradle
similarity index 84%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized/build.gradle
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/build.gradle
index 10f04a66471d1d7829a373ca429e14dc67223f8d..a52f2efafbfabb73b183193882e9197436317951 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/build.gradle
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/build.gradle
@@ -13,13 +13,13 @@ task copyFromBase(type: Copy) {
     group = 'build'
     description = 'Copy Java sources from base project'
     from '../trainbenchmark-tool-jastadd-base/src/main/java'
-    from '../trainbenchmark-tool-jastadd-specialized-base/src/main/java'
+    from '../trainbenchmark-tool-jastadd-relast-base/src/main/java'
     into 'src/main/java-include'
 }
 
 shadowJar {
     classifier = 'fat'
-    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
+    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.ManualRelastBenchmarkMain' }
 }
 
 task preprocess(type: JavaExec) {
@@ -31,13 +31,13 @@ task preprocess(type: JavaExec) {
     main = "-jar"
     args = [
             "../trainbenchmark-tool-jastadd-base/libs/relast-compiler.jar",
-            "../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast",
+            "../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast",
             "--listClass=RefList",
             "--grammarName=src/main/jastadd-gen/Train",
             "--file"
     ]
 
-    inputs.files "../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast"
+    inputs.files "../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast"
     outputs.files "src/main/jastadd-gen/Train.ast",
             "src/main/jastadd-gen/Train.jadd"
 
@@ -60,7 +60,7 @@ task jastadd(type: JavaExec) {
             "--tracing=api",
             "src/main/jastadd-gen/Train.ast",
             "src/main/jastadd-gen/Train.jadd"
-    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/").matching {exclude "*.relast"}
+    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/").matching {exclude "*.relast"}
 
     doLast {
         ant.replaceregexp(match:'RefList extends List', replace:'RefList<T extends ASTNode> extends List<T>', flags:'g', byline:true) {
@@ -71,7 +71,7 @@ task jastadd(type: JavaExec) {
     inputs.files "src/main/jastadd-gen/Train.ast",
             "src/main/jastadd-gen/Train.jadd",
             fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/"),
-            fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/")
+            fileTree("../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/")
     outputs.files "src/main/java-gen"
 }
 
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastBenchmarkMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..4aaca2f18ac491e775d7e6770951065e286ec2c1
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastBenchmarkMain.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.ManualRelastBenchmarkConfig;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
+
+public class ManualRelastBenchmarkMain {
+  public static void main(final String[] args) throws Exception {
+    final ManualRelastBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], ManualRelastBenchmarkConfig.class);
+    final ManualRelastBenchmarkScenario scenario = new ManualRelastBenchmarkScenario(bc);
+    scenario.performBenchmark();
+    scenario.printTraces();
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastBenchmarkScenario.java
new file mode 100644
index 0000000000000000000000000000000000000000..5dbac1cb67a256abf88d237b5d7b51ef23196ed1
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/ManualRelastBenchmarkScenario.java
@@ -0,0 +1,12 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.ManualRelastBenchmarkConfig;
+
+public class ManualRelastBenchmarkScenario extends
+  JastaddAbstractBenchmarkScenario<ManualRelastBenchmarkConfig> {
+
+  public ManualRelastBenchmarkScenario(final ManualRelastBenchmarkConfig bc) throws Exception {
+    super(bc, true);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastBenchmarkConfig.java
similarity index 56%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedBenchmarkConfig.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastBenchmarkConfig.java
index 8bc3e7b21bf136fb04a6a94769d29c55bff04e2f..7b3bd1508618d2bbeeefe627720832addb590dc6 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedBenchmarkConfig.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastBenchmarkConfig.java
@@ -3,20 +3,20 @@ package de.tudresden.inf.st.train.jastadd.config;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 
-public class JastaddSpecializedBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
+public class ManualRelastBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
 
-  protected JastaddSpecializedBenchmarkConfig(final BenchmarkConfigBase configBase) {
+  protected ManualRelastBenchmarkConfig(final BenchmarkConfigBase configBase) {
     super(configBase);
   }
 
   @Override
   public String getToolName() {
-    return "Jastadd (Specialized)";
+    return "Grammar Extension (Manual Serialization)";
   }
 
   @Override
   public String getProjectName() {
-    return "jastadd-specialized";
+    return "jastadd-manual-relast";
   }
 
 }
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastBenchmarkConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..692b621a8a29d006fd9f021906d945145a1d5372
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/ManualRelastBenchmarkConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
+
+public class ManualRelastBenchmarkConfigBuilder extends BenchmarkConfigBuilder<ManualRelastBenchmarkConfig, ManualRelastBenchmarkConfigBuilder> {
+
+  @Override
+  public ManualRelastBenchmarkConfig createConfig() {
+    checkNotNulls();
+    return new ManualRelastBenchmarkConfig(configBase);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
similarity index 97%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
index 902fc1ab214a03a0fcc8fbd7f815ddeaaa064abb..302490b8f46336fadfe3337e61c0ac8fa4f8c62d 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
@@ -52,7 +52,7 @@ public class JastaddDriver extends Driver {
 
   @Override
   public String getPostfix() {
-    return "-ag-special.json";
+    return "-jastadd-manual-intrinsic.json";
   }
 
   public void flushCache() {
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/main/java/de/tudresden/inf/st/train/jastadd/driver/deserializer/ASTNodeDeserializer.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTTest.java
similarity index 51%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTTest.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTTest.java
index da68376043d05b1d96a4d1cc54c5231a8a72a8f7..9587215035383cc148bfba30fd26eee9b57858df 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTTest.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-manual-relast/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTTest.java
@@ -1,8 +1,8 @@
 package de.tudresden.inf.st.train.jastadd.test;
 
-import de.tudresden.inf.st.train.jastadd.JastaddSpecializedBenchmarkScenario;
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedBenchmarkConfig;
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedBenchmarkConfigBuilder;
+import de.tudresden.inf.st.train.jastadd.ManualRelastBenchmarkScenario;
+import de.tudresden.inf.st.train.jastadd.config.ManualRelastBenchmarkConfig;
+import de.tudresden.inf.st.train.jastadd.config.ManualRelastBenchmarkConfigBuilder;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
 import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
@@ -11,8 +11,8 @@ public class RelASTTest extends TrainBenchmarkTest {
 
   @Override
   protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
-    final JastaddSpecializedBenchmarkConfig bc = new JastaddSpecializedBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
-    final JastaddSpecializedBenchmarkScenario scenario = new JastaddSpecializedBenchmarkScenario(bc);
+    final ManualRelastBenchmarkConfig bc = new ManualRelastBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
+    final ManualRelastBenchmarkScenario scenario = new ManualRelastBenchmarkScenario(bc);
     final BenchmarkResult result = scenario.performBenchmark();
     return result;
   }
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
index 47e998c7cc3a2e600696667a54fdade244db0067..ee595c277943eb8beee61a7438802b63eff7a7ed 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
@@ -55,7 +55,7 @@ public class JastaddDriver extends Driver {
 
   @Override
   public String getPostfix() {
-    return "-ag.json";
+    return "-jastadd-manual.json";
   }
 
   public void flushCache() {
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/build.gradle
index c91ada167d8068ff6ea3f519da4c1fdd7c542ebf..ad7dacdb9fddf13b165a3044bf93b2746015c6ac 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/build.gradle
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/build.gradle
@@ -4,6 +4,7 @@ apply plugin: 'idea'
 
 idea {
     module {
+        generatedSourceDirs += file('src/main/java-gen')
         generatedSourceDirs += file('src/main/java-include')
     }
 }
@@ -18,7 +19,7 @@ task copyFromBase(type: Copy) {
 
 shadowJar {
     classifier = 'fat'
-    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
+    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.NameLookupIncrementalBenchmarkMain' }
 }
 
 task jastadd(type: JavaExec) {
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
deleted file mode 100644
index 5488e76555c32338776234c464cf1079a2e2dd53..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupIncrementalBenchmarkConfig;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
-
-public class JastaddBenchmarkMain {
-  public static void main(final String[] args) throws Exception {
-    final JastaddNameLookupIncrementalBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddNameLookupIncrementalBenchmarkConfig.class);
-    final JastaddNameLookupIncrementalBenchmarkScenario scenario = new JastaddNameLookupIncrementalBenchmarkScenario(bc);
-    scenario.performBenchmark();
-    scenario.printTraces();
-  }
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddNameLookupIncrementalBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddNameLookupIncrementalBenchmarkScenario.java
deleted file mode 100644
index 573b0093a176474af33a4cc6ad100648cd7b3860..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddNameLookupIncrementalBenchmarkScenario.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupIncrementalBenchmarkConfig;
-
-public class JastaddNameLookupIncrementalBenchmarkScenario extends
-  JastaddAbstractBenchmarkScenario<JastaddNameLookupIncrementalBenchmarkConfig> {
-
-  public JastaddNameLookupIncrementalBenchmarkScenario(final JastaddNameLookupIncrementalBenchmarkConfig bc) throws Exception {
-    super(bc, false);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupIncrementalBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupIncrementalBenchmarkMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..13e45e10ea4c5ae4c8b59a85505d4e2daa25cf11
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupIncrementalBenchmarkMain.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.NameLookupIncrementalBenchmarkConfig;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
+
+public class NameLookupIncrementalBenchmarkMain {
+  public static void main(final String[] args) throws Exception {
+    final NameLookupIncrementalBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], NameLookupIncrementalBenchmarkConfig.class);
+    final NameLookupIncrementalBenchmarkScenario scenario = new NameLookupIncrementalBenchmarkScenario(bc);
+    scenario.performBenchmark();
+    scenario.printTraces();
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupIncrementalBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupIncrementalBenchmarkScenario.java
new file mode 100644
index 0000000000000000000000000000000000000000..5406269e5e145024206d7043ddbd1d9b4c0af5d1
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupIncrementalBenchmarkScenario.java
@@ -0,0 +1,12 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.NameLookupIncrementalBenchmarkConfig;
+
+public class NameLookupIncrementalBenchmarkScenario extends
+  JastaddAbstractBenchmarkScenario<NameLookupIncrementalBenchmarkConfig> {
+
+  public NameLookupIncrementalBenchmarkScenario(final NameLookupIncrementalBenchmarkConfig bc) throws Exception {
+    super(bc, false);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupIncrementalBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupIncrementalBenchmarkConfigBuilder.java
deleted file mode 100644
index 59709840e5387675635e56a2036991a1bd934530..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupIncrementalBenchmarkConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
-
-public class JastaddNameLookupIncrementalBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddNameLookupIncrementalBenchmarkConfig, JastaddNameLookupIncrementalBenchmarkConfigBuilder> {
-
-  @Override
-  public JastaddNameLookupIncrementalBenchmarkConfig createConfig() {
-    checkNotNulls();
-    return new JastaddNameLookupIncrementalBenchmarkConfig(configBase);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupIncrementalBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupIncrementalBenchmarkConfig.java
similarity index 55%
rename from trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupIncrementalBenchmarkConfig.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupIncrementalBenchmarkConfig.java
index 838f8e8450916c607f4d03f9ae989cdf555fcf2b..a8bc5899fb15b2d1feda89e2b0ca6d5ec1c70821 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupIncrementalBenchmarkConfig.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupIncrementalBenchmarkConfig.java
@@ -2,15 +2,15 @@ package de.tudresden.inf.st.train.jastadd.config;
 
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 
-public class JastaddNameLookupIncrementalBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
+public class NameLookupIncrementalBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
 
-  protected JastaddNameLookupIncrementalBenchmarkConfig(final BenchmarkConfigBase configBase) {
+  protected NameLookupIncrementalBenchmarkConfig(final BenchmarkConfigBase configBase) {
     super(configBase);
   }
 
   @Override
   public String getToolName() {
-    return "Jastadd (Incremental Name Lookup)";
+    return "Name Lookup (Incremental)";
   }
 
   @Override
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupIncrementalBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupIncrementalBenchmarkConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..c14a437cd59397a900810d6e862db2bf0e612bf5
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupIncrementalBenchmarkConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
+
+public class NameLookupIncrementalBenchmarkConfigBuilder extends BenchmarkConfigBuilder<NameLookupIncrementalBenchmarkConfig, NameLookupIncrementalBenchmarkConfigBuilder> {
+
+  @Override
+  public NameLookupIncrementalBenchmarkConfig createConfig() {
+    checkNotNulls();
+    return new NameLookupIncrementalBenchmarkConfig(configBase);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddIncrementalTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddIncrementalTest.java
index 677a78b108173f2dd50310fdd9c1c339198fae3f..d8c66cce2c9cb661ef25546a8aee6685a2ab52c2 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddIncrementalTest.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddIncrementalTest.java
@@ -1,8 +1,8 @@
 package de.tudresden.inf.st.train.jastadd.test;
 
-import de.tudresden.inf.st.train.jastadd.JastaddNameLookupIncrementalBenchmarkScenario;
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupIncrementalBenchmarkConfig;
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupIncrementalBenchmarkConfigBuilder;
+import de.tudresden.inf.st.train.jastadd.NameLookupIncrementalBenchmarkScenario;
+import de.tudresden.inf.st.train.jastadd.config.NameLookupIncrementalBenchmarkConfig;
+import de.tudresden.inf.st.train.jastadd.config.NameLookupIncrementalBenchmarkConfigBuilder;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
 import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
@@ -11,8 +11,8 @@ public class JastaddIncrementalTest extends TrainBenchmarkTest {
 
   @Override
   protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
-    final JastaddNameLookupIncrementalBenchmarkConfig bc = new JastaddNameLookupIncrementalBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
-    final JastaddNameLookupIncrementalBenchmarkScenario scenario = new JastaddNameLookupIncrementalBenchmarkScenario(bc);
+    final NameLookupIncrementalBenchmarkConfig bc = new NameLookupIncrementalBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
+    final NameLookupIncrementalBenchmarkScenario scenario = new NameLookupIncrementalBenchmarkScenario(bc);
     final BenchmarkResult result = scenario.performBenchmark();
     return result;
   }
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/build.gradle
index 6f827ccb559b02272a66e3fb777e2a24b0751190..7f002d7d34ba91e8a813b128440873e9b723ecf6 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/build.gradle
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/build.gradle
@@ -4,6 +4,7 @@ apply plugin: 'idea'
 
 idea {
     module {
+        generatedSourceDirs += file('src/main/java-gen')
         generatedSourceDirs += file('src/main/java-include')
     }
 }
@@ -18,7 +19,7 @@ task copyFromBase(type: Copy) {
 
 shadowJar {
     classifier = 'fat'
-    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
+    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.NameLookupBenchmarkMain' }
 }
 
 task jastadd(type: JavaExec) {
@@ -33,14 +34,6 @@ task jastadd(type: JavaExec) {
             "--tracing=api",
     ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/")
     doFirst {
-        print([
-                "../trainbenchmark-tool-jastadd-base/libs/jastadd2.jar",
-                "--cache=all",
-                "--flush=full",
-                "--package=de.tudresden.inf.st.train.jastadd.ast",
-                "--o=src/main/java-gen",
-                "--tracing=api",
-        ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/"))
         delete fileTree('src/main/java-gen')
         mkdir 'src/main/java-gen'
     }
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
deleted file mode 100644
index 3734d422ced860b1b82f4ddd7676de70194f3788..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupBenchmarkConfig;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
-
-public class JastaddBenchmarkMain {
-  public static void main(final String[] args) throws Exception {
-    final JastaddNameLookupBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddNameLookupBenchmarkConfig.class);
-    final JastaddNameLookupBenchmarkScenario scenario = new JastaddNameLookupBenchmarkScenario(bc);
-    scenario.performBenchmark();
-    scenario.printTraces();
-  }
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddNameLookupBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddNameLookupBenchmarkScenario.java
deleted file mode 100644
index 7d715f9539bf8910498f31cf3e0ae8e4042275a4..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddNameLookupBenchmarkScenario.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupBenchmarkConfig;
-
-public class JastaddNameLookupBenchmarkScenario extends
-  JastaddAbstractBenchmarkScenario<JastaddNameLookupBenchmarkConfig> {
-
-  public JastaddNameLookupBenchmarkScenario(final JastaddNameLookupBenchmarkConfig bc) throws Exception {
-    super(bc, true);
-  }
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupBenchmarkMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..923cfc8cf98a3a4ec319d12f4775162fdc774b43
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupBenchmarkMain.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.NameLookupBenchmarkConfig;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
+
+public class NameLookupBenchmarkMain {
+  public static void main(final String[] args) throws Exception {
+    final NameLookupBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], NameLookupBenchmarkConfig.class);
+    final NameLookupBenchmarkScenario scenario = new NameLookupBenchmarkScenario(bc);
+    scenario.performBenchmark();
+    scenario.printTraces();
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupBenchmarkScenario.java
new file mode 100644
index 0000000000000000000000000000000000000000..8ce7a96ca00ba8f25c2d8e80183e06c0f41250ad
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/NameLookupBenchmarkScenario.java
@@ -0,0 +1,11 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.NameLookupBenchmarkConfig;
+
+public class NameLookupBenchmarkScenario extends
+  JastaddAbstractBenchmarkScenario<NameLookupBenchmarkConfig> {
+
+  public NameLookupBenchmarkScenario(final NameLookupBenchmarkConfig bc) throws Exception {
+    super(bc, true);
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupBenchmarkConfigBuilder.java
deleted file mode 100644
index 7ca5984d1971fcf9e3c6deaf2fd3728d209ad5ca..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupBenchmarkConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
-
-public class JastaddNameLookupBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddNameLookupBenchmarkConfig, JastaddNameLookupBenchmarkConfigBuilder> {
-
-  @Override
-  public JastaddNameLookupBenchmarkConfig createConfig() {
-    checkNotNulls();
-    return new JastaddNameLookupBenchmarkConfig(configBase);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupBenchmarkConfig.java
similarity index 58%
rename from trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupBenchmarkConfig.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupBenchmarkConfig.java
index 566c738700e3f5d45d9d2ae7c8df29916e2e1b9f..627ba3d0af185cd90d9722be577b12c91c0f2bda 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddNameLookupBenchmarkConfig.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupBenchmarkConfig.java
@@ -2,15 +2,15 @@ package de.tudresden.inf.st.train.jastadd.config;
 
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 
-public class JastaddNameLookupBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
+public class NameLookupBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
 
-  protected JastaddNameLookupBenchmarkConfig(final BenchmarkConfigBase configBase) {
+  protected NameLookupBenchmarkConfig(final BenchmarkConfigBase configBase) {
     super(configBase);
   }
 
   @Override
   public String getToolName() {
-    return "Jastadd (Name Lookup)";
+    return "Name Lookup";
   }
 
   @Override
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupBenchmarkConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..66f01a9946c484021978f93205ba8d8c65f60ff7
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/main/java/de/tudresden/inf/st/train/jastadd/config/NameLookupBenchmarkConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
+
+public class NameLookupBenchmarkConfigBuilder extends BenchmarkConfigBuilder<NameLookupBenchmarkConfig, NameLookupBenchmarkConfigBuilder> {
+
+  @Override
+  public NameLookupBenchmarkConfig createConfig() {
+    checkNotNulls();
+    return new NameLookupBenchmarkConfig(configBase);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddTest.java
index cc1b986aadd3d8590169a768ae25144af895d223..56917b6eef6ce940818b302c939c055b6bfbd44d 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddTest.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-namelookup/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddTest.java
@@ -1,8 +1,8 @@
 package de.tudresden.inf.st.train.jastadd.test;
 
-import de.tudresden.inf.st.train.jastadd.JastaddNameLookupBenchmarkScenario;
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupBenchmarkConfig;
-import de.tudresden.inf.st.train.jastadd.config.JastaddNameLookupBenchmarkConfigBuilder;
+import de.tudresden.inf.st.train.jastadd.NameLookupBenchmarkScenario;
+import de.tudresden.inf.st.train.jastadd.config.NameLookupBenchmarkConfig;
+import de.tudresden.inf.st.train.jastadd.config.NameLookupBenchmarkConfigBuilder;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
 import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
@@ -11,8 +11,8 @@ public class JastaddTest extends TrainBenchmarkTest {
 
   @Override
   protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
-    final JastaddNameLookupBenchmarkConfig bc = new JastaddNameLookupBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
-    final JastaddNameLookupBenchmarkScenario scenario = new JastaddNameLookupBenchmarkScenario(bc);
+    final NameLookupBenchmarkConfig bc = new NameLookupBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
+    final NameLookupBenchmarkScenario scenario = new NameLookupBenchmarkScenario(bc);
     final BenchmarkResult result = scenario.performBenchmark();
     return result;
   }
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
deleted file mode 100644
index 02fb70b550591eb0b2e7ba73c5f6404307037873..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedIncrementalBenchmarkConfig;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
-
-public class JastaddBenchmarkMain {
-  public static void main(final String[] args) throws Exception {
-    final JastaddOptimizedIncrementalBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddOptimizedIncrementalBenchmarkConfig.class);
-    final JastaddOptimizedIncrementalBenchmarkScenario scenario = new JastaddOptimizedIncrementalBenchmarkScenario(bc);
-    scenario.performBenchmark();
-    scenario.printTraces();
-  }
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddOptimizedIncrementalBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddOptimizedIncrementalBenchmarkScenario.java
deleted file mode 100644
index 2196ce7b76d8aace1329daa3f4da8f6e48d8d29f..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddOptimizedIncrementalBenchmarkScenario.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedIncrementalBenchmarkConfig;
-
-public class JastaddOptimizedIncrementalBenchmarkScenario extends
-  JastaddAbstractBenchmarkScenario<JastaddOptimizedIncrementalBenchmarkConfig> {
-
-  public JastaddOptimizedIncrementalBenchmarkScenario(final JastaddOptimizedIncrementalBenchmarkConfig bc) throws Exception {
-    super(bc, false);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedIncrementalBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedIncrementalBenchmarkConfigBuilder.java
deleted file mode 100644
index 71dae6a393a66d2ec367a622d08c08c4c882b71b..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedIncrementalBenchmarkConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
-
-public class JastaddOptimizedIncrementalBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddOptimizedIncrementalBenchmarkConfig, JastaddOptimizedIncrementalBenchmarkConfigBuilder> {
-
-  @Override
-  public JastaddOptimizedIncrementalBenchmarkConfig createConfig() {
-    checkNotNulls();
-    return new JastaddOptimizedIncrementalBenchmarkConfig(configBase);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddRefTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddRefTest.java
deleted file mode 100644
index f8c1a7e065b65a015fbfad1d4c73ef80fdd18bfb..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddRefTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.test;
-
-import de.tudresden.inf.st.train.jastadd.JastaddOptimizedIncrementalBenchmarkScenario;
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedIncrementalBenchmarkConfig;
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedIncrementalBenchmarkConfigBuilder;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
-import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
-
-public class JastaddRefTest extends TrainBenchmarkTest {
-
-  @Override
-  protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
-    final JastaddOptimizedIncrementalBenchmarkConfig bc = new JastaddOptimizedIncrementalBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
-    final JastaddOptimizedIncrementalBenchmarkScenario scenario = new JastaddOptimizedIncrementalBenchmarkScenario(bc);
-    final BenchmarkResult result = scenario.performBenchmark();
-    return result;
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
deleted file mode 100644
index 1db553c30e515f13a8a461abd16c92ed3bf28ef6..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedBenchmarkConfig;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
-
-public class JastaddBenchmarkMain {
-  public static void main(final String[] args) throws Exception {
-    final JastaddOptimizedBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddOptimizedBenchmarkConfig.class);
-    final JastaddOptimizedBenchmarkScenario scenario = new JastaddOptimizedBenchmarkScenario(bc);
-    scenario.performBenchmark();
-    scenario.printTraces();
-  }
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddOptimizedBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddOptimizedBenchmarkScenario.java
deleted file mode 100644
index a925cfbbbfd920cbbaf45eb79aa04d0a55e25ca0..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddOptimizedBenchmarkScenario.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedBenchmarkConfig;
-
-public class JastaddOptimizedBenchmarkScenario extends
-  JastaddAbstractBenchmarkScenario<JastaddOptimizedBenchmarkConfig> {
-
-  public JastaddOptimizedBenchmarkScenario(final JastaddOptimizedBenchmarkConfig bc) throws Exception {
-    super(bc, true);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedBenchmarkConfigBuilder.java
deleted file mode 100644
index 8f7f90af1ea5fb508cc8ef5a4a1c790ac5409856..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddOptimizedBenchmarkConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
-
-public class JastaddOptimizedBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddOptimizedBenchmarkConfig, JastaddOptimizedBenchmarkConfigBuilder> {
-
-  @Override
-  public JastaddOptimizedBenchmarkConfig createConfig() {
-    checkNotNulls();
-    return new JastaddOptimizedBenchmarkConfig(configBase);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddOptimizedTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddOptimizedTest.java
deleted file mode 100644
index b0fc3d65afc6904407d61446881a9e34e975cf31..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-optimized/src/test/java/de/tudresden/inf/st/train/jastadd/test/JastaddOptimizedTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.test;
-
-import de.tudresden.inf.st.train.jastadd.JastaddOptimizedBenchmarkScenario;
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedBenchmarkConfig;
-import de.tudresden.inf.st.train.jastadd.config.JastaddOptimizedBenchmarkConfigBuilder;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
-import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
-
-public class JastaddOptimizedTest extends TrainBenchmarkTest {
-
-  @Override
-  protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
-    final JastaddOptimizedBenchmarkConfig bc = new JastaddOptimizedBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
-    final JastaddOptimizedBenchmarkScenario scenario = new JastaddOptimizedBenchmarkScenario(bc);
-    final BenchmarkResult result = scenario.performBenchmark();
-    return result;
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/.editorconfig b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/.editorconfig
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized/.editorconfig
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/.editorconfig
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/build.gradle
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/build.gradle
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/build.gradle
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/.gitignore b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/.gitignore
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/.gitignore
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/.gitignore
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/ASTPrinting.jadd b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/ASTPrinting.jadd
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/ASTPrinting.jadd
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/ASTPrinting.jadd
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/RefList.jadd b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/RefList.jadd
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/RefList.jadd
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/RefList.jadd
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/TreeNavigation.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/TreeNavigation.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/TreeNavigation.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/TreeNavigation.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/ConnectedSegmentsMatch.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/ConnectedSegmentsMatch.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/ConnectedSegmentsMatch.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/ConnectedSegmentsMatch.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/PosLength.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/PosLength.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/PosLength.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/PosLength.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/RouteSensorMatch.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/RouteSensorMatch.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/RouteSensorMatch.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/RouteSensorMatch.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SwitchMonitoredMatch.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/SwitchMonitoredMatch.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SwitchMonitoredMatch.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/SwitchMonitoredMatch.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SwitchSetMatch.jrag b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/SwitchSetMatch.jrag
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SwitchSetMatch.jrag
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/queries/SwitchSetMatch.jrag
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectConnectedSegments.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectConnectedSegments.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectConnectedSegments.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectConnectedSegments.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectPosLength.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectPosLength.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectPosLength.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectPosLength.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectRouteSensor.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectRouteSensor.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectRouteSensor.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectRouteSensor.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSemaphoreNeighbor.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSemaphoreNeighbor.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSemaphoreNeighbor.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSemaphoreNeighbor.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchMonitored.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchMonitored.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchMonitored.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchMonitored.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchSet.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchSet.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchSet.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/inject/JastaddTransformationInjectSwitchSet.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairConnectedSegments.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairPosLength.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairPosLength.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairPosLength.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairPosLength.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairRouteSensor.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairRouteSensor.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairRouteSensor.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairRouteSensor.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchSet.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchSet.java
similarity index 100%
rename from trainbenchmark/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchSet.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchSet.java
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/build.gradle
index dc24bb0ed8808fdb84b7186d2ff3415245b512f9..7bb113181fcfe8075da5b383823c1892f0cf9e19 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/build.gradle
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/build.gradle
@@ -13,13 +13,13 @@ task copyFromBase(type: Copy) {
     group = 'build'
     description = 'Copy Java sources from base project'
     from '../trainbenchmark-tool-jastadd-base/src/main/java'
-    from '../trainbenchmark-tool-jastadd-specialized-base/src/main/java'
+    from '../trainbenchmark-tool-jastadd-relast-base/src/main/java'
     into 'src/main/java-include'
 }
 
 shadowJar {
     classifier = 'fat'
-    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
+    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.RelASTIncrementalBenchmarkMain' }
 }
 
 task preprocess(type: JavaExec) {
@@ -31,14 +31,14 @@ task preprocess(type: JavaExec) {
     main = "-jar"
     args = [
             "../trainbenchmark-tool-jastadd-base/libs/relast-compiler.jar",
-            "../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast",
+            "../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast",
             "--listClass=RefList",
             "--serializer=jackson",
             "--grammarName=src/main/jastadd-gen/Train",
             "--file"
     ]
 
-    inputs.files "../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast"
+    inputs.files "../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast"
     outputs.files "src/main/jastadd-gen/Train.ast",
             "src/main/jastadd-gen/Train.jadd",
             "src/main/jastadd-gen/TrainRefResolver.jadd",
@@ -69,7 +69,7 @@ task jastadd(type: JavaExec) {
             "src/main/jastadd-gen/TrainRefResolver.jadd",
             "src/main/jastadd-gen/TrainResolverStubs.jrag",
             "src/main/jastadd-gen/TrainSerializer.jadd"
-    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/").matching {exclude "*.relast"}
+    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/").matching {exclude "*.relast"}
 
     doLast {
         ant.replaceregexp(match:'RefList extends List', replace:'RefList<T extends ASTNode> extends List<T>', flags:'g', byline:true) {
@@ -83,7 +83,7 @@ task jastadd(type: JavaExec) {
             "src/main/jastadd-gen/TrainResolverStubs.jrag",
             "src/main/jastadd-gen/TrainSerializer.jadd",
             fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/"),
-            fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/")
+            fileTree("../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/")
     outputs.files "src/main/java-gen"
 }
 
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
deleted file mode 100644
index 98249d03b6d870c0a9996c81f8993e02dd6abbb8..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTIncrementalBenchmarkConfig;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
-
-public class JastaddBenchmarkMain {
-  public static void main(final String[] args) throws Exception {
-    final JastaddRelASTIncrementalBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddRelASTIncrementalBenchmarkConfig.class);
-    final JastaddRelASTBenchmarkScenario scenario = new JastaddRelASTBenchmarkScenario(bc);
-    scenario.performBenchmark();
-    scenario.printTraces();
-  }
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddRelASTBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddRelASTBenchmarkScenario.java
deleted file mode 100644
index dc0ff5548d25acfe140c1d53f38a6306e128876e..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddRelASTBenchmarkScenario.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTIncrementalBenchmarkConfig;
-
-public class JastaddRelASTBenchmarkScenario extends
-  JastaddAbstractBenchmarkScenario<JastaddRelASTIncrementalBenchmarkConfig> {
-
-  public JastaddRelASTBenchmarkScenario(final JastaddRelASTIncrementalBenchmarkConfig bc) throws Exception {
-    super(bc, true);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTIncrementalBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTIncrementalBenchmarkMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..321b7d09700781efeba001d0ae2472a3799e261f
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTIncrementalBenchmarkMain.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.RelASTIncrementalBenchmarkConfig;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
+
+public class RelASTIncrementalBenchmarkMain {
+  public static void main(final String[] args) throws Exception {
+    final RelASTIncrementalBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], RelASTIncrementalBenchmarkConfig.class);
+    final RelASTIncrementalBenchmarkScenario scenario = new RelASTIncrementalBenchmarkScenario(bc);
+    scenario.performBenchmark();
+    scenario.printTraces();
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTIncrementalBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTIncrementalBenchmarkScenario.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7535405f31cbd9e83618141180ba349c1d24384
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTIncrementalBenchmarkScenario.java
@@ -0,0 +1,12 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.RelASTIncrementalBenchmarkConfig;
+
+public class RelASTIncrementalBenchmarkScenario extends
+  JastaddAbstractBenchmarkScenario<RelASTIncrementalBenchmarkConfig> {
+
+  public RelASTIncrementalBenchmarkScenario(final RelASTIncrementalBenchmarkConfig bc) throws Exception {
+    super(bc, true);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTIncrementalBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTIncrementalBenchmarkConfig.java
deleted file mode 100644
index 54eb703447e4edc57163402acf2f97d92dd25f0a..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTIncrementalBenchmarkConfig.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
-
-public class JastaddRelASTIncrementalBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
-
-  protected JastaddRelASTIncrementalBenchmarkConfig(final BenchmarkConfigBase configBase) {
-    super(configBase);
-  }
-
-  @Override
-  public String getToolName() {
-    return "Grammar Extension with Serialiser (Incremental)";
-  }
-
-  @Override
-  public String getProjectName() {
-    return "jastadd-relast";
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTIncrementalBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTIncrementalBenchmarkConfigBuilder.java
deleted file mode 100644
index c588bd5f03efa5b1386318c4ee0397ea0a3295f8..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTIncrementalBenchmarkConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
-
-public class JastaddRelASTIncrementalBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddRelASTIncrementalBenchmarkConfig, JastaddRelASTIncrementalBenchmarkConfigBuilder> {
-
-  @Override
-  public JastaddRelASTIncrementalBenchmarkConfig createConfig() {
-    checkNotNulls();
-    return new JastaddRelASTIncrementalBenchmarkConfig(configBase);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTIncrementalBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTIncrementalBenchmarkConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..77a332a4bb92c60062cf8f502f7e7e318529ca07
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTIncrementalBenchmarkConfig.java
@@ -0,0 +1,21 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
+
+public class RelASTIncrementalBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
+
+  protected RelASTIncrementalBenchmarkConfig(final BenchmarkConfigBase configBase) {
+    super(configBase);
+  }
+
+  @Override
+  public String getToolName() {
+    return "Grammar Extension with Serializer (Incremental)";
+  }
+
+  @Override
+  public String getProjectName() {
+    return "jastadd-relast-incremental";
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTIncrementalBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTIncrementalBenchmarkConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..3790680c244f2fa31c2dad829e2e85261ac39ec8
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTIncrementalBenchmarkConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
+
+public class RelASTIncrementalBenchmarkConfigBuilder extends BenchmarkConfigBuilder<RelASTIncrementalBenchmarkConfig, RelASTIncrementalBenchmarkConfigBuilder> {
+
+  @Override
+  public RelASTIncrementalBenchmarkConfig createConfig() {
+    checkNotNulls();
+    return new RelASTIncrementalBenchmarkConfig(configBase);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
index b4e1374576146486cfde5b66f3b873ce99aa8f12..be5cc1de56ea7ff9377a61bcaf5105da49341e0e 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
@@ -62,7 +62,7 @@ public class JastaddDriver extends Driver {
 
   @Override
   public String getPostfix() {
-    return "-relast.json";
+    return "-jastadd-relast.json";
   }
 
   public void flushCache() {
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTSerializerIncrementalTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTSerializerIncrementalTest.java
index 2b789c6f7a9e703c594f1708374a775e9334d46a..975b569dfe2315cf072be97be101aab1c689d9f8 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTSerializerIncrementalTest.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTSerializerIncrementalTest.java
@@ -1,8 +1,8 @@
 package de.tudresden.inf.st.train.jastadd.test;
 
-import de.tudresden.inf.st.train.jastadd.JastaddRelASTBenchmarkScenario;
-import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTIncrementalBenchmarkConfig;
-import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTIncrementalBenchmarkConfigBuilder;
+import de.tudresden.inf.st.train.jastadd.RelASTIncrementalBenchmarkScenario;
+import de.tudresden.inf.st.train.jastadd.config.RelASTIncrementalBenchmarkConfig;
+import de.tudresden.inf.st.train.jastadd.config.RelASTIncrementalBenchmarkConfigBuilder;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
 import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
@@ -11,8 +11,8 @@ public class RelASTSerializerIncrementalTest extends TrainBenchmarkTest {
 
   @Override
   protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
-    final JastaddRelASTIncrementalBenchmarkConfig bc = new JastaddRelASTIncrementalBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
-    final JastaddRelASTBenchmarkScenario scenario = new JastaddRelASTBenchmarkScenario(bc);
+    final RelASTIncrementalBenchmarkConfig bc = new RelASTIncrementalBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
+    final RelASTIncrementalBenchmarkScenario scenario = new RelASTIncrementalBenchmarkScenario(bc);
     final BenchmarkResult result = scenario.performBenchmark();
     return result;
   }
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/build.gradle b/trainbenchmark/trainbenchmark-tool-jastadd-relast/build.gradle
index b03d29c1b4a63dc24ac0b9605082441953c7b234..9658e0679dcb6e52da82cc0a5dfd4d8849b978ce 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast/build.gradle
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast/build.gradle
@@ -13,13 +13,13 @@ task copyFromBase(type: Copy) {
     group = 'build'
     description = 'Copy Java sources from base project'
     from '../trainbenchmark-tool-jastadd-base/src/main/java'
-    from '../trainbenchmark-tool-jastadd-specialized-base/src/main/java'
+    from '../trainbenchmark-tool-jastadd-relast-base/src/main/java'
     into 'src/main/java-include'
 }
 
 shadowJar {
     classifier = 'fat'
-    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.JastaddBenchmarkMain' }
+    manifest { attributes 'Main-Class': 'de.tudresden.inf.st.train.jastadd.RelASTBenchmarkMain' }
 }
 
 task preprocess(type: JavaExec) {
@@ -31,14 +31,14 @@ task preprocess(type: JavaExec) {
     main = "-jar"
     args = [
             "../trainbenchmark-tool-jastadd-base/libs/relast-compiler.jar",
-            "../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast",
+            "../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast",
             "--listClass=RefList",
             "--serializer=jackson",
             "--grammarName=src/main/jastadd-gen/Train",
             "--file"
     ]
 
-    inputs.files "../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/Train.relast"
+    inputs.files "../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/Train.relast"
     outputs.files "src/main/jastadd-gen/Train.ast",
             "src/main/jastadd-gen/Train.jadd",
             "src/main/jastadd-gen/TrainRefResolver.jadd",
@@ -67,7 +67,7 @@ task jastadd(type: JavaExec) {
             "src/main/jastadd-gen/TrainRefResolver.jadd",
             "src/main/jastadd-gen/TrainResolverStubs.jrag",
             "src/main/jastadd-gen/TrainSerializer.jadd"
-    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/").matching {exclude "*.relast"}
+    ] + fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/") + fileTree("../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/").matching {exclude "*.relast"}
 
     doLast {
         ant.replaceregexp(match:'RefList extends List', replace:'RefList<T extends ASTNode> extends List<T>', flags:'g', byline:true) {
@@ -81,7 +81,7 @@ task jastadd(type: JavaExec) {
             "src/main/jastadd-gen/TrainResolverStubs.jrag",
             "src/main/jastadd-gen/TrainSerializer.jadd",
             fileTree("../trainbenchmark-tool-jastadd-base/src/main/jastadd/"),
-            fileTree("../trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/")
+            fileTree("../trainbenchmark-tool-jastadd-relast-base/src/main/jastadd/")
     outputs.files "src/main/java-gen"
 }
 
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
deleted file mode 100644
index c17cbc9a495056eace5c8fa80a68f9425b641eed..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfig;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
-
-public class JastaddBenchmarkMain {
-  public static void main(final String[] args) throws Exception {
-    final JastaddRelASTBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddRelASTBenchmarkConfig.class);
-    final JastaddRelASTBenchmarkScenario scenario = new JastaddRelASTBenchmarkScenario(bc);
-    scenario.performBenchmark();
-    scenario.printTraces();
-  }
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddRelASTBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddRelASTBenchmarkScenario.java
deleted file mode 100644
index 0fc13c828070faea0d08f6bd76bbf1c4c0aabbe2..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddRelASTBenchmarkScenario.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfig;
-
-public class JastaddRelASTBenchmarkScenario extends
-  JastaddAbstractBenchmarkScenario<JastaddRelASTBenchmarkConfig> {
-
-  public JastaddRelASTBenchmarkScenario(final JastaddRelASTBenchmarkConfig bc) throws Exception {
-    super(bc, true);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTBenchmarkMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..ecab6df45191738390608bc48afd9d73a2cb8ab5
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTBenchmarkMain.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.RelASTBenchmarkConfig;
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
+
+public class RelASTBenchmarkMain {
+  public static void main(final String[] args) throws Exception {
+    final RelASTBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], RelASTBenchmarkConfig.class);
+    final RelASTBenchmarkScenario scenario = new RelASTBenchmarkScenario(bc);
+    scenario.performBenchmark();
+    scenario.printTraces();
+  }
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTBenchmarkScenario.java
new file mode 100644
index 0000000000000000000000000000000000000000..184bfe93a5056a780a171a6172d5ed9e98505122
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/RelASTBenchmarkScenario.java
@@ -0,0 +1,12 @@
+package de.tudresden.inf.st.train.jastadd;
+
+import de.tudresden.inf.st.train.jastadd.config.RelASTBenchmarkConfig;
+
+public class RelASTBenchmarkScenario extends
+  JastaddAbstractBenchmarkScenario<RelASTBenchmarkConfig> {
+
+  public RelASTBenchmarkScenario(final RelASTBenchmarkConfig bc) throws Exception {
+    super(bc, true);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTBenchmarkConfigBuilder.java
deleted file mode 100644
index 6880451cee0f9cccf43e205630d47f18061eb384..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTBenchmarkConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
-
-public class JastaddRelASTBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddRelASTBenchmarkConfig, JastaddRelASTBenchmarkConfigBuilder> {
-
-  @Override
-  public JastaddRelASTBenchmarkConfig createConfig() {
-    checkNotNulls();
-    return new JastaddRelASTBenchmarkConfig(configBase);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTBenchmarkConfig.java
similarity index 57%
rename from trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTBenchmarkConfig.java
rename to trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTBenchmarkConfig.java
index f1f89ec2df1c5223634b25513c1d3b226862864b..b28d50ebd04f4327ca1ff1521b0bd9c4feca86e0 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddRelASTBenchmarkConfig.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTBenchmarkConfig.java
@@ -2,15 +2,15 @@ package de.tudresden.inf.st.train.jastadd.config;
 
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 
-public class JastaddRelASTBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
+public class RelASTBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
 
-  protected JastaddRelASTBenchmarkConfig(final BenchmarkConfigBase configBase) {
+  protected RelASTBenchmarkConfig(final BenchmarkConfigBase configBase) {
     super(configBase);
   }
 
   @Override
   public String getToolName() {
-    return "Grammar Extension with Serialiser";
+    return "Grammar Extension with Serializer";
   }
 
   @Override
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTBenchmarkConfigBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..0682584c40babaf8c45736868e0f8a1f803ca204
--- /dev/null
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/config/RelASTBenchmarkConfigBuilder.java
@@ -0,0 +1,13 @@
+package de.tudresden.inf.st.train.jastadd.config;
+
+import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
+
+public class RelASTBenchmarkConfigBuilder extends BenchmarkConfigBuilder<RelASTBenchmarkConfig, RelASTBenchmarkConfigBuilder> {
+
+  @Override
+  public RelASTBenchmarkConfig createConfig() {
+    checkNotNulls();
+    return new RelASTBenchmarkConfig(configBase);
+  }
+
+}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
index b4e1374576146486cfde5b66f3b873ce99aa8f12..be5cc1de56ea7ff9377a61bcaf5105da49341e0e 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/main/java/de/tudresden/inf/st/train/jastadd/driver/JastaddDriver.java
@@ -62,7 +62,7 @@ public class JastaddDriver extends Driver {
 
   @Override
   public String getPostfix() {
-    return "-relast.json";
+    return "-jastadd-relast.json";
   }
 
   public void flushCache() {
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTSerializerTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTSerializerTest.java
index 057b12f84bfab086ece4e03ef537ac9f788a3323..dead3cd41223af4a21473e64deed85bbcdc62568 100644
--- a/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTSerializerTest.java
+++ b/trainbenchmark/trainbenchmark-tool-jastadd-relast/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTSerializerTest.java
@@ -1,8 +1,8 @@
 package de.tudresden.inf.st.train.jastadd.test;
 
-import de.tudresden.inf.st.train.jastadd.JastaddRelASTBenchmarkScenario;
-import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfig;
-import de.tudresden.inf.st.train.jastadd.config.JastaddRelASTBenchmarkConfigBuilder;
+import de.tudresden.inf.st.train.jastadd.RelASTBenchmarkScenario;
+import de.tudresden.inf.st.train.jastadd.config.RelASTBenchmarkConfig;
+import de.tudresden.inf.st.train.jastadd.config.RelASTBenchmarkConfigBuilder;
 import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
 import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
 import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
@@ -11,8 +11,8 @@ public class RelASTSerializerTest extends TrainBenchmarkTest {
 
   @Override
   protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
-    final JastaddRelASTBenchmarkConfig bc = new JastaddRelASTBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
-    final JastaddRelASTBenchmarkScenario scenario = new JastaddRelASTBenchmarkScenario(bc);
+    final RelASTBenchmarkConfig bc = new RelASTBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
+    final RelASTBenchmarkScenario scenario = new RelASTBenchmarkScenario(bc);
     final BenchmarkResult result = scenario.performBenchmark();
     return result;
   }
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
deleted file mode 100644
index c33670736d61d7e5296ec4760d349be3b94decb0..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedIncrementalBenchmarkConfig;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
-
-public class JastaddBenchmarkMain {
-  public static void main(final String[] args) throws Exception {
-    final JastaddSpecializedIncrementalBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddSpecializedIncrementalBenchmarkConfig.class);
-    final JastaddSpecializedIncrementalBenchmarkScenario scenario = new JastaddSpecializedIncrementalBenchmarkScenario(bc);
-    scenario.performBenchmark();
-    scenario.printTraces();
-  }
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddSpecializedIncrementalBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddSpecializedIncrementalBenchmarkScenario.java
deleted file mode 100644
index 4d6ec97b55a8a7ce0eaf04fd0443127bdf508f31..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddSpecializedIncrementalBenchmarkScenario.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedIncrementalBenchmarkConfig;
-
-public class JastaddSpecializedIncrementalBenchmarkScenario extends
-  JastaddAbstractBenchmarkScenario<JastaddSpecializedIncrementalBenchmarkConfig> {
-
-  public JastaddSpecializedIncrementalBenchmarkScenario(final JastaddSpecializedIncrementalBenchmarkConfig bc) throws Exception {
-    super(bc, false);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedIncrementalBenchmarkConfig.java b/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedIncrementalBenchmarkConfig.java
deleted file mode 100644
index f1db8986103d4ac58b75e4c83b1ac04d71911a2f..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedIncrementalBenchmarkConfig.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
-
-public class JastaddSpecializedIncrementalBenchmarkConfig extends JastaddAbstractBenchmarkConfig {
-
-  protected JastaddSpecializedIncrementalBenchmarkConfig(final BenchmarkConfigBase configBase) {
-    super(configBase);
-  }
-
-  @Override
-  public String getToolName() {
-    return "Jastadd (Specialized Incremental)";
-  }
-
-  @Override
-  public String getProjectName() {
-    return "jastadd-specialized-incremental";
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedIncrementalBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedIncrementalBenchmarkConfigBuilder.java
deleted file mode 100644
index 3359af6519dda35f034ec44c954b96749f572472..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedIncrementalBenchmarkConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
-
-public class JastaddSpecializedIncrementalBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddSpecializedIncrementalBenchmarkConfig, JastaddSpecializedIncrementalBenchmarkConfigBuilder> {
-
-  @Override
-  public JastaddSpecializedIncrementalBenchmarkConfig createConfig() {
-    checkNotNulls();
-    return new JastaddSpecializedIncrementalBenchmarkConfig(configBase);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTIncrementalTest.java b/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTIncrementalTest.java
deleted file mode 100644
index 0de660941c750fff02d6fc4739ff3745de65ce65..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized-incremental/src/test/java/de/tudresden/inf/st/train/jastadd/test/RelASTIncrementalTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.test;
-
-import de.tudresden.inf.st.train.jastadd.JastaddSpecializedIncrementalBenchmarkScenario;
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedIncrementalBenchmarkConfig;
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedIncrementalBenchmarkConfigBuilder;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBase;
-import hu.bme.mit.trainbenchmark.benchmark.runcomponents.BenchmarkResult;
-import hu.bme.mit.trainbenchmark.benchmark.test.TrainBenchmarkTest;
-
-public class RelASTIncrementalTest extends TrainBenchmarkTest {
-
-  @Override
-  protected BenchmarkResult runTest(final BenchmarkConfigBase bcb) throws Exception {
-    final JastaddSpecializedIncrementalBenchmarkConfig bc = new JastaddSpecializedIncrementalBenchmarkConfigBuilder().setConfigBase(bcb).createConfig();
-    final JastaddSpecializedIncrementalBenchmarkScenario scenario = new JastaddSpecializedIncrementalBenchmarkScenario(bc);
-    final BenchmarkResult result = scenario.performBenchmark();
-    return result;
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java b/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
deleted file mode 100644
index 81ee0ab295b972225a8b8cb532e7620701af8407..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddBenchmarkMain.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedBenchmarkConfig;
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfig;
-
-public class JastaddBenchmarkMain {
-  public static void main(final String[] args) throws Exception {
-    final JastaddSpecializedBenchmarkConfig bc = BenchmarkConfig.fromFile(args[0], JastaddSpecializedBenchmarkConfig.class);
-    final JastaddSpecializedBenchmarkScenario scenario = new JastaddSpecializedBenchmarkScenario(bc);
-    scenario.performBenchmark();
-    scenario.printTraces();
-  }
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddSpecializedBenchmarkScenario.java b/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddSpecializedBenchmarkScenario.java
deleted file mode 100644
index 5e8b8484fcc6c35bc9658a8c1ed7db233937c9ca..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/JastaddSpecializedBenchmarkScenario.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package de.tudresden.inf.st.train.jastadd;
-
-import de.tudresden.inf.st.train.jastadd.config.JastaddSpecializedBenchmarkConfig;
-
-public class JastaddSpecializedBenchmarkScenario extends
-  JastaddAbstractBenchmarkScenario<JastaddSpecializedBenchmarkConfig> {
-
-  public JastaddSpecializedBenchmarkScenario(final JastaddSpecializedBenchmarkConfig bc) throws Exception {
-    super(bc, true);
-  }
-
-}
diff --git a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedBenchmarkConfigBuilder.java b/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedBenchmarkConfigBuilder.java
deleted file mode 100644
index f714f0638c5ed8f49015934daefe93ce5f6ab525..0000000000000000000000000000000000000000
--- a/trainbenchmark/trainbenchmark-tool-jastadd-specialized/src/main/java/de/tudresden/inf/st/train/jastadd/config/JastaddSpecializedBenchmarkConfigBuilder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tudresden.inf.st.train.jastadd.config;
-
-import hu.bme.mit.trainbenchmark.benchmark.config.BenchmarkConfigBuilder;
-
-public class JastaddSpecializedBenchmarkConfigBuilder extends BenchmarkConfigBuilder<JastaddSpecializedBenchmarkConfig, JastaddSpecializedBenchmarkConfigBuilder> {
-
-  @Override
-  public JastaddSpecializedBenchmarkConfig createConfig() {
-    checkNotNulls();
-    return new JastaddSpecializedBenchmarkConfig(configBase);
-  }
-
-}