diff --git a/ros3rag.coordinator/.gitignore b/ros3rag.coordinator/.gitignore
deleted file mode 100644
index 87b4cdd3d7c6a41502ca98703abeeb69a1d536fb..0000000000000000000000000000000000000000
--- a/ros3rag.coordinator/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-build
-src/gen-res/
-src/gen/
-out/
-*.class
diff --git a/ros3rag.coordinator/build.gradle b/ros3rag.coordinator/build.gradle
deleted file mode 100644
index ca9ba4a5c8626c22b0128f956c3ac91a6547c0a3..0000000000000000000000000000000000000000
--- a/ros3rag.coordinator/build.gradle
+++ /dev/null
@@ -1,158 +0,0 @@
-buildscript {
-    repositories.mavenCentral()
-    dependencies {
-        classpath group: 'org.jastadd', name: 'jastaddgradle', version: '1.13.3'
-    }
-}
-
-plugins {
-    id 'ros3rag.java-application-conventions'
-    id 'ros3rag.java-ragconnect-conventions'
-}
-
-mainClassName = 'de.tudresden.inf.st.coordinator.MainCoordinator'
-
-dependencies {
-}
-
-ext.ragConnectInputGrammar = 'src/main/jastadd/Coordinator.relast'
-ext.ragConnectInputConnect = 'src/main/jastadd/Coordinator.connect'
-ext.ragConnectRootNode = 'Coordinator'
-ext.relastFiles = ["src/gen/jastadd/Coordinator.relast", "src/gen/jastadd/RagConnect.relast"]
-ext.jastaddAstPackage = 'de.tudresden.inf.st.coordinator.ast'
-
-
-apply plugin: 'jastadd'
-
-dependencies {
-//    jastadd2 "org.jastadd:jastadd:2.3.5"
-    jastadd2 fileTree(include: ['jastadd2.jar'], dir: '../libs')
-    api group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.15'
-
-    implementation project(':ros3rag.common')
-}
-
-sourceCompatibility = 11
-targetCompatibility = 11
-
-// phases: ragConnect -> RelAst -> JastAdd
-// phase: ragConnect
-task ragConnect(type: JavaExec) {
-    group = 'Build'
-    main = 'org.jastadd.ragconnect.compiler.Compiler'
-    classpath = configurations.ragconnectClasspath
-
-    args([
-            '--o=src/gen/jastadd',
-            project.ext.ragConnectInputGrammar,
-            project.ext.ragConnectInputConnect,
-            '--logReads',
-            '--logWrites',
-//            '--verbose',
-            '--rootNode=' + project.ext.ragConnectRootNode,
-            '--incremental=param',
-            "--tracing=cache,flush"
-    ])
-
-}
-
-// Input files for relast
-//def relastFiles = ["src/gen/jastadd/MinimalModel.relast", "src/gen/jastadd/RagConnect.relast"]
-
-task grammar2uml(type: JavaExec) {
-    main = 'de.tudresden.inf.st.jastadd.grammar2uml.compiler.Compiler'
-    classpath = configurations.grammar2umlClasspath
-
-    args([
-            '--verbose',
-    ] + project.ext.relastFiles)
-}
-
-// phase: RelAst
-task relastToJastAdd(type: JavaExec) {
-    group = 'Build'
-    main = "-jar"
-
-    args(["../libs/relast.jar",
-          "--grammarName=./src/gen/jastadd/model",
-          "--useJastAddNames",
-          "--listClass=java.util.ArrayList",
-          "--jastAddList=JastAddList",
-          "--serializer=jackson",
-          "--resolverHelper",
-          "--file"
-    ] + project.ext.relastFiles)
-
-    inputs.files project.ext.relastFiles
-    outputs.files file("./src/gen/jastadd/model.ast"), file("./src/gen/jastadd/model.jadd")
-}
-
-// phase: JastAdd
-jastadd {
-    configureModuleBuild()
-    modules {
-        //noinspection GroovyAssignabilityCheck
-        module("coordinator") {
-
-//            java {
-//                basedir "src/"
-//                include "main/**/*.java"
-//                include "gen/**/*.java"
-//            }
-
-            jastadd {
-                basedir "src/"
-                include "main/jastadd/**/*.ast"
-                include "main/jastadd/**/*.jadd"
-                include "main/jastadd/**/*.jrag"
-                include "gen/jastadd/**/*.ast"
-                include "gen/jastadd/**/*.jadd"
-                include "gen/jastadd/**/*.jrag"
-            }
-            scanner {
-                include "src/main/jastadd/Coordinator.flex"
-            }
-
-            parser {
-                include "src/main/jastadd/Coordinator.parser"
-            }
-        }
-    }
-
-    cleanGen.doFirst {
-        delete "src/gen/java/de"
-        delete "src/gen-res/BuildInfo.properties"
-    }
-
-    module = "coordinator"
-
-    astPackage = project.ext.jastaddAstPackage
-
-    genDir = 'src/gen/java'
-
-    buildInfoDir = 'src/gen-res'
-
-    parser.name = 'CoordinatorParser'
-
-    scanner.genDir = "src/gen/java/de/tudresden/inf/st/coordinator/scanner"
-    parser.genDir = "src/gen/java/de/tudresden/inf/st/coordinator/parser"
-
-    // jastaddOptions = ["--lineColumnNumbers", "--visitCheck=true", "--rewrite=cnta", "--cache=all"]
-    // default options are: '--rewrite=cnta', '--safeLazy', '--visitCheck=false', '--cacheCycle=false'
-    extraJastAddOptions = [
-            '--lineColumnNumbers',
-            '--List=JastAddList',
-            '--cache=all',
-            "--flush=api",
-            "--incremental=param,debug",
-            "--tracing=cache,flush",
-    ]
-}
-
-cleanGen.doFirst {
-    delete "src/gen/jastadd"
-}
-
-// Workflow configuration for phases
-generateAst.dependsOn relastToJastAdd
-relastToJastAdd.dependsOn ragConnect
diff --git a/ros3rag.coordinator/src/main/jastadd/Coordinator.connect b/ros3rag.coordinator/src/main/jastadd/Coordinator.connect
deleted file mode 100644
index d7bca5d0925174df4c372f77c2f155fd7abdee94..0000000000000000000000000000000000000000
--- a/ros3rag.coordinator/src/main/jastadd/Coordinator.connect
+++ /dev/null
@@ -1,15 +0,0 @@
-receive Component.IncomingStatus ;
-//send tree Coordinator.NextComponentToStart using NameOfComponent ;
-//
-//NameOfComponent maps Component c to String {:
-//  return c.getName();
-//:}
-
-send Component.NextCommand using CommandCheck ;
-
-CommandCheck maps String command to String {:
-  if (command == null) {
-    reject();
-  }
-  return command;
-:}
diff --git a/ros3rag.coordinator/src/main/jastadd/Coordinator.flex b/ros3rag.coordinator/src/main/jastadd/Coordinator.flex
deleted file mode 100644
index 7e6698e2f86fce4ffa574bb64438f5260ce873fe..0000000000000000000000000000000000000000
--- a/ros3rag.coordinator/src/main/jastadd/Coordinator.flex
+++ /dev/null
@@ -1,60 +0,0 @@
-package de.tudresden.inf.st.coordinator.scanner;
-
-import de.tudresden.inf.st.coordinator.parser.CoordinatorParser.Terminals;
-
-%%
-
-// define the signature for the generated scanner
-%public
-%final
-%class CoordinatorScanner
-%extends beaver.Scanner
-
-// the interface between the scanner and the parser is the nextToken() method
-%type beaver.Symbol
-%function nextToken
-%yylexthrow beaver.Scanner.Exception
-
-// store line and column information in the tokens
-%line
-%column
-
-// this code will be inlined in the body of the generated scanner class
-%{
-  private beaver.Symbol sym(short id) {
-    return new beaver.Symbol(id, yyline + 1, yycolumn + 1, yylength(), yytext());
-  }
-  private beaver.Symbol symText(short id) {
-    return new beaver.Symbol(id, yyline + 1, yycolumn + 1, yylength(), yytext().substring(1, yytext().length() - 1));
-  }
-%}
-
-WhiteSpace = [ ] | \t | \f | \n | \r | \r\n
-Identifier = [:jletter:][:jletterdigit:]*
-Text = \" ([^\"]*) \"
-
-Comment = "//" [^\n\r]+
-
-%%
-
-// discard whitespace information and comments
-{WhiteSpace}  { }
-{Comment}     { }
-
-// ** token definitions **
-// Begin of line with capital letter
-"components"        { return sym(Terminals.COMPONENTS); }
-"component"         { return sym(Terminals.COMPONENT); }
-"docker compose"    { return sym(Terminals.DOCKER_COMPOSE); }
-"mqtt topic"        { return sym(Terminals.MQTT_TOPIC); }
-"="                 { return sym(Terminals.EQUALS); }
-","                 { return sym(Terminals.COMMA); }
-"<"                 { return sym(Terminals.LT); }
-"{"                 { return sym(Terminals.LB_CURLY); }
-"}"                 { return sym(Terminals.RB_CURLY); }
-
-{Identifier}        { return sym(Terminals.NAME); }
-{Text}              { return symText(Terminals.TEXT); }
-<<EOF>>             { return sym(Terminals.EOF); }
-/* error fallback */
-[^]                 { throw new Error("Illegal character '"+ yytext() +"' at line " + (yyline+1) + " column " + (yycolumn+1) + " in state " + yystate()); }
diff --git a/ros3rag.coordinator/src/main/jastadd/Coordinator.jrag b/ros3rag.coordinator/src/main/jastadd/Coordinator.jrag
deleted file mode 100644
index f45edb007f0365b4d964411b47ec49f861f6dacf..0000000000000000000000000000000000000000
--- a/ros3rag.coordinator/src/main/jastadd/Coordinator.jrag
+++ /dev/null
@@ -1,143 +0,0 @@
-import java.util.*;
-
-aspect Computation {
-  syn String Component.getNextCommand() {
-    if (!getIncomingStatus().equals("up")) {
-      System.out.println(getName() + " not up");
-      // component is not "up" yet
-      return null;
-    }
-    for (Component predecessor : getPredecessorList()) {
-      if (!predecessor.getIncomingStatus().equals("ready")) {
-        // one of required component is not "ready" yet
-        System.out.println(getName() + " missing " + predecessor.getName());
-        return null;
-      }
-    }
-    // all required components are "ready", and this component is "up"
-    System.out.println(getName() + " ready to be started");
-    return "start";
-  }
-}
-
-aspect Manipulation {
-  public static boolean Coordinator.DRY_RUN = false;
-
-  public Set<Component> Coordinator.getRunningComponents() throws IOException, InterruptedException {
-    String[] args = { "docker-compose", "ps", "--services", "--filter", "status=running" };
-    if (DRY_RUN) {
-      System.out.println("Would start > " + java.util.Arrays.toString(args));
-      return Collections.emptySet();
-    }
-    ProcessBuilder builder = new ProcessBuilder(args);
-
-    Process process = builder.start();
-    process.waitFor();
-    if (process.exitValue() != 0) {
-      System.err.println("Could not list services.");
-      return Collections.emptySet();
-    }
-    Set<Component> result = new HashSet<>();
-    List<String> services;
-    try (java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(process.getInputStream()))) {
-      services = reader.lines().collect(java.util.stream.Collectors.toList());
-    } catch (IOException e) {
-      e.printStackTrace();
-      return Collections.emptySet();
-    }
-    for (String service : services) {
-      resolveComponentByDockerComposeName(service).ifPresentOrElse(
-        comp -> result.add(comp),
-        () -> System.err.println("Could not resolve component for '" + service + "'!")
-      );
-    }
-    return result;
-  }
-
-  public boolean Component.callDockerCompose() throws IOException, InterruptedException {
-    String[] args = { "docker-compose", "up", "-d", getDockerComposeName() };
-    if (coordinator().DRY_RUN) {
-      System.out.println("Would start > " + java.util.Arrays.toString(args));
-      return true;
-    }
-    ProcessBuilder builder = new ProcessBuilder(args);
-
-    Process process = builder.start();
-    process.waitFor();
-    return process.exitValue() == 0;
-  }
-}
-
-aspect Navigation {
-  inh Coordinator Component.coordinator();
-  inh Coordinator ParsedPrecedenceRelation.coordinator();
-  eq Coordinator.getChild().coordinator() = this;
-}
-
-aspect Printing {
-  syn String Coordinator.prettyPrint() {
-    StringBuilder sb = new StringBuilder();
-    for (Component comp : getComponentList()) {
-      sb.append(comp.prettyPrint()).append("\n");
-    }
-    return sb.toString();
-  }
-
-  syn String Component.prettyPrint() {
-    return "<Name: " + getName() + ", DockerComposeName: " + getDockerComposeName() + ", MqttTopicPrefix: " + getMqttTopicPrefix() + ", IncomingStatus: " + getIncomingStatus() + ", NextCommand: " + getNextCommand() + ">";
-  }
-
-  syn String ParsedPrecedenceRelation.prettyPrint() {
-    StringBuilder sb = new StringBuilder();
-    StringJoiner sjPred = new StringJoiner(", ");
-    getPredecessorList().forEach(pred -> sjPred.add(pred.getName()));
-    StringJoiner sjSucc = new StringJoiner(", ");
-    getSuccessorList().forEach(succ -> sjSucc.add(succ.getName()));
-    sb.append(sjPred.toString()).append(" < ").append(sjSucc.toString());
-    return sb.toString();
-  }
-}
-
-aspect Resolving {
-  syn Optional<Component> Coordinator.resolveComponent(String name) {
-    for (Component comp : getComponentList()) {
-      if (comp.getName().equals(name)) {
-        return Optional.of(comp);
-      }
-    }
-    return Optional.empty();
-  }
-
-  syn Optional<Component> Coordinator.resolveComponentByDockerComposeName(String dockerComposeName) {
-    for (Component comp : getComponentList()) {
-      if (comp.getDockerComposeName().equals(dockerComposeName)) {
-        return Optional.of(comp);
-      }
-    }
-    return Optional.empty();
-  }
-
-  refine RefResolverStubs eq ParsedPrecedenceRelation.resolvePredecessorByToken(String id, int position) {
-    return coordinator().resolveComponent(id).orElseThrow(() -> new RuntimeException("Predecessor '" + id + "' not found in " + this.prettyPrint() + "!"));
-  }
-
-  refine RefResolverStubs eq ParsedPrecedenceRelation.resolveSuccessorByToken(String id, int position) {
-    return coordinator().resolveComponent(id).orElseThrow(() -> new RuntimeException("Successor '" + id + "' not found in " + this.prettyPrint() + "!"));
-  }
-}
-
-aspect AdditionalTypes {
-  public class ReversedList<T> extends beaver.Symbol implements Iterable<T> {
-    private java.util.Deque<T> delegatee = new java.util.ArrayDeque<>();
-
-    public java.util.Iterator<T> iterator() {
-      return delegatee.descendingIterator();
-    }
-
-    public void add(T t) {
-      delegatee.add(t);
-    }
-  }
-
-  public class StringList extends ReversedList<String> {}
-}
diff --git a/ros3rag.coordinator/src/main/jastadd/Coordinator.parser b/ros3rag.coordinator/src/main/jastadd/Coordinator.parser
deleted file mode 100644
index 82edabd287fae77cc9955b197a49e655e9aff101..0000000000000000000000000000000000000000
--- a/ros3rag.coordinator/src/main/jastadd/Coordinator.parser
+++ /dev/null
@@ -1,56 +0,0 @@
-%header {:
-package de.tudresden.inf.st.coordinator.parser;
-import de.tudresden.inf.st.coordinator.ast.*;
-import java.util.Map;
-import java.util.HashMap;
-:} ;
-
-%embed {:
-  private static <T extends ASTNode<?>> void insertZero(JastAddList<T> listNode, T child) {
-    listNode.insertChild(child, 0);
-  }
-
-  private void replaceRelations(Coordinator o) {
-    for (ParsedPrecedenceRelation rel : o.getParsedPrecedenceRelationList()) {
-      for (Component pred : rel.getPredecessorList()) {
-        for (Component succ : rel.getSuccessorList()) {
-          pred.addSuccessor(succ);
-        }
-      }
-    }
-  }
-:} ;
-
-%goal goal;
-Coordinator goal =
-     COMPONENTS LB_CURLY coordinator_body.o RB_CURLY {: o.treeResolveAll(); replaceRelations(o); return o; :}
-  ;
-
-Coordinator coordinator_body =
-     component.c coordinator_body.o    {: o.addComponent(c); return o; :}
-  |  string_list.preds LT string_list.succs coordinator_body.o
-     {:
-        ParsedPrecedenceRelation rel = new ParsedPrecedenceRelation();
-        o.addParsedPrecedenceRelation(rel);
-        preds.forEach(pred -> rel.addPredecessor(Component.createRef(pred)));
-        succs.forEach(succ -> rel.addPredecessor(Component.createRef(succ)));
-        return o;
-     :}
-  |                        {: return new Coordinator(); :}
-  ;
-
-Component component =
-     COMPONENT NAME.name COMMA DOCKER_COMPOSE EQUALS TEXT.dc COMMA MQTT_TOPIC EQUALS TEXT.mqtt
-      {:
-        Component result = new Component();
-        result.setName(name);
-        result.setDockerComposeName(dc);
-        result.setMqttTopicPrefix(mqtt);
-        return result;
-      :}
-  ;
-
-StringList string_list =
-     NAME.n COMMA string_list.slb    {: slb.add(n); return slb; :}
-  |  NAME.n                          {: StringList slb = new StringList(); slb.add(n); return slb; :}
-  ;
diff --git a/ros3rag.coordinator/src/main/jastadd/Coordinator.relast b/ros3rag.coordinator/src/main/jastadd/Coordinator.relast
deleted file mode 100644
index f5acd03b7aa2ae41cd3dd2609b6156e2e5e07a9d..0000000000000000000000000000000000000000
--- a/ros3rag.coordinator/src/main/jastadd/Coordinator.relast
+++ /dev/null
@@ -1,6 +0,0 @@
-Coordinator ::= Component* ParsedPrecedenceRelation* ; // /NextComponentToStart:Component/ ;
-Component ::= <Name:String> <DockerComposeName:String> <MqttTopicPrefix:String> <IncomingStatus:String> /<NextCommand:String>/ ;
-rel Component.Predecessor* <-> Component.Successor* ;
-ParsedPrecedenceRelation ;
-rel ParsedPrecedenceRelation.Predecessor* -> Component ;
-rel ParsedPrecedenceRelation.Successor* -> Component ;
diff --git a/ros3rag.coordinator/src/main/java/de/tudresden/inf/st/coordinator/MainCoordinator.java b/ros3rag.coordinator/src/main/java/de/tudresden/inf/st/coordinator/MainCoordinator.java
deleted file mode 100644
index 0d6989166ea9997e1dd30355e58c14a55e8b4f8f..0000000000000000000000000000000000000000
--- a/ros3rag.coordinator/src/main/java/de/tudresden/inf/st/coordinator/MainCoordinator.java
+++ /dev/null
@@ -1,176 +0,0 @@
-package de.tudresden.inf.st.coordinator;
-
-import beaver.Parser;
-import de.tudresden.inf.st.coordinator.ast.Component;
-import de.tudresden.inf.st.coordinator.ast.Coordinator;
-import de.tudresden.inf.st.coordinator.ast.MqttHandler;
-import de.tudresden.inf.st.coordinator.parser.CoordinatorParser;
-import de.tudresden.inf.st.coordinator.scanner.CoordinatorScanner;
-import de.tudresden.inf.st.ros3rag.common.Util;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.util.Arrays;
-import java.util.Set;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Entrypoint for Coordinator.
- *
- * @author rschoene - Initial contribution
- */
-public class MainCoordinator {
-
-  private static final String TOPIC_EXIT = "coordinator/exit";
-  private static final String TOPIC_MODEL = "coordinator/model";
-  private static final String TOPIC_STATUS = "coordinator/status";
-  private static final String TOPIC_READY = "coordinator/ready";
-  private Coordinator coordinator;
-  private MqttHandler mainHandler;
-  private Component rosCore;
-  private Component mosquitto;
-
-  public static void main(String[] args) throws Exception {
-    MainCoordinator main = new MainCoordinator();
-//    main.manuallyBuild();
-    main.parsedBuild();
-    if (Arrays.asList(args).contains("--dry-run")) {
-      Coordinator.DRY_RUN = true;
-    }
-    main.start();
-  }
-
-  @SuppressWarnings("unused")
-  private void manuallyBuild() {
-    coordinator = new Coordinator();
-    Component robotCtrlA = newComponent("Robot Control A", "ros_place_a", "ros-place-a");
-    Component robotCtrlB = newComponent("Robot Control B", "ros_place_b", "ros-place-b");
-    Component ragA = newComponent("RAG A", "rag_place_a", "rag-a");
-    Component ragB = newComponent("RAG B", "rag_place_b", "rag-b");
-    Component random = newComponent("Random Dummy", "cgv_random_dummy", "random");
-    rosCore = newComponent("ROS core", "ros_core", "");
-    mosquitto = newComponent("MQTT broker", "mosquitto", "");
-
-    coordinator.addComponent(robotCtrlA);
-    coordinator.addComponent(robotCtrlB);
-    coordinator.addComponent(ragA);
-    coordinator.addComponent(ragB);
-    coordinator.addComponent(random);
-    coordinator.addComponent(rosCore);
-    coordinator.addComponent(mosquitto);
-
-    // ros core needed for all other ros nodes
-    rosCore.addSuccessor(robotCtrlA);
-    rosCore.addSuccessor(robotCtrlB);
-    rosCore.addSuccessor(random);
-
-    // mqtt broker needed for all robot ctrl and rag nodes
-    mosquitto.addSuccessor(robotCtrlA);
-    mosquitto.addSuccessor(robotCtrlB);
-    mosquitto.addSuccessor(ragA);
-    mosquitto.addSuccessor(ragB);
-
-    // robot control needs to start before rag
-    robotCtrlA.addSuccessor(ragA);
-    robotCtrlB.addSuccessor(ragB);
-
-    // rag place B needs to start before rag place A
-    ragB.addSuccessor(ragA);
-
-    // random should start last
-    robotCtrlA.addSuccessor(random);
-    robotCtrlB.addSuccessor(random);
-    ragA.addSuccessor(random);
-    ragB.addSuccessor(random);
-  }
-
-  private void parsedBuild() throws IOException, Parser.Exception {
-    Reader in = Files.newBufferedReader(Util.pathToModuleDirectory("ros3rag.coordinator")
-        .resolve("src/main/resources/ros3rag.coordinator"));
-
-    CoordinatorScanner scanner = new CoordinatorScanner(in);
-    CoordinatorParser parser = new CoordinatorParser();
-
-    coordinator = (Coordinator) parser.parse(scanner);
-
-    for (Component comp : coordinator.getComponentList()) {
-      if (comp.getName().equals("rosCore")) {
-        rosCore = comp;
-      }
-      if (comp.getName().equals("mosquitto")) {
-        mosquitto = comp;
-      }
-    }
-
-    in.close();
-  }
-
-  private void start() throws Exception {
-    final String mqttHost = "localhost";
-
-    coordinator.ragconnectSetupMqttWaitUntilReady(2, TimeUnit.SECONDS);
-
-    for (Component comp : coordinator.getComponentList()) {
-      comp.connectIncomingStatus("mqtt://" + mqttHost + "/" + comp.getMqttTopicPrefix() + "/status");
-      comp.connectNextCommand("mqtt://" + mqttHost + "/" + comp.getMqttTopicPrefix() + "/command", false);
-    }
-
-    Set<Component> alreadyRunning = coordinator.getRunningComponents();
-    for (Component comp : coordinator.getComponentList()) {
-      if (!alreadyRunning.contains(comp)) {
-        comp.callDockerCompose();
-      }
-    }
-
-    mainHandler = new MqttHandler().dontSendWelcomeMessage();
-    mainHandler.setHost(mqttHost);
-    mainHandler.waitUntilReady(2, TimeUnit.SECONDS);
-    CountDownLatch exitCondition = new CountDownLatch(1);
-    mainHandler.newConnection(TOPIC_EXIT, bytes -> exitCondition.countDown());
-    mainHandler.newConnection(TOPIC_MODEL, bytes -> this.printStatus());
-    mainHandler.newConnection(TOPIC_READY, bytes -> this.setReady());
-    Runtime.getRuntime().addShutdownHook(new Thread(this::close));
-
-    // wait some time for ros_core and mqtt_broker to be started
-    TimeUnit.SECONDS.sleep(2);
-
-    setReady();
-
-    exitCondition.await();
-  }
-
-  private void setReady() {
-    // set ros-core and mqtt-broker to ready
-    rosCore.setIncomingStatus("ready");
-    mosquitto.setIncomingStatus("ready");
-  }
-
-  private void printStatus() {
-    String content = coordinator.prettyPrint();
-    System.out.println(content);
-    if (mainHandler != null) {
-      mainHandler.publish(TOPIC_STATUS, content.getBytes(StandardCharsets.UTF_8));
-    }
-  }
-
-  private void close() {
-    if (coordinator != null) {
-      coordinator.ragconnectCloseConnections();
-    }
-    if (mainHandler != null) {
-      mainHandler.close();
-    }
-  }
-
-  private static Component newComponent(String name, String dockerComposeName, String mqttTopicPrefix) {
-    Component result = new Component();
-    result.setName(name);
-    result.setDockerComposeName(dockerComposeName);
-    result.setMqttTopicPrefix(mqttTopicPrefix);
-    return result;
-  }
-
-}
diff --git a/ros3rag.coordinator/src/main/resources/ros3rag.coordinator b/ros3rag.coordinator/src/main/resources/ros3rag.coordinator
deleted file mode 100644
index 1ba79e5bea49ba8086ba9da64d6c91869ec77b38..0000000000000000000000000000000000000000
--- a/ros3rag.coordinator/src/main/resources/ros3rag.coordinator
+++ /dev/null
@@ -1,25 +0,0 @@
-components {
-  component robotCtrlA, docker compose = "ros_place_a",      mqtt topic = "ros-place-a"
-  component robotCtrlB, docker compose = "ros_place_b",      mqtt topic = "ros-place-b"
-  component ragA,       docker compose = "rag_place_a",      mqtt topic = "rag-a"
-  component ragB,       docker compose = "rag_place_b",      mqtt topic = "rag-b"
-  component random,     docker compose = "cgv_random_dummy", mqtt topic = "random"
-  component rosCore,    docker compose = "ros_core",         mqtt topic = ""
-  component mosquitto,  docker compose = "mosquitto",        mqtt topic = ""
-
-  // ros core needed for all other ros nodes
-  rosCore < robotCtrlA, robotCtrlB, random
-
-  // mqtt broker needed for all robot ctrl and rag nodes
-  mosquitto < robotCtrlA, robotCtrlB, ragA, ragB
-
-  // robot control needs to start before rag
-  robotCtrlA < ragA
-  robotCtrlB < ragB
-
-  // rag place B needs to start before rag place A
-  ragB < ragA
-
-  // random should start last
-  robotCtrlA, robotCtrlB, ragA, ragB < random
-}
diff --git a/settings.gradle b/settings.gradle
index b2e62ebd90e287a75d9234f132668859ec1bb9ff..bd2c1a8453b44141ce617dbfeb3570e9786f6637 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -3,7 +3,6 @@ rootProject.name = 'ros3rag'
 include 'ros3rag.placeA'
 include 'ros3rag.placeB'
 include 'ros3rag.common'
-include 'ros3rag.coordinator'
 
 // include 'ros3rag.senderstub'
 // include 'ros3rag.receiverstub'