diff --git a/solve/build.gradle b/solve/build.gradle
index 453bc94084d8bab418368d1226eac20bb459a5b0..ee359bd29b2f25e963b1da7223a364a8623118d4 100644
--- a/solve/build.gradle
+++ b/solve/build.gradle
@@ -47,7 +47,7 @@ task jastadd(type: JavaExec) {
             "libs/jastadd2.jar",
             "--debug",
             "--cache=all",
-            "--flush=full",
+            "--flush=api",
             "--rewrite=cnta",
             "--incremental=param,debug",
             "--package=de.tudresden.inf.st.ttc18live.jastadd.model",
@@ -85,4 +85,4 @@ jastadd.outputs.upToDateWhen {false}
 jar.enabled = false
 distTar.enabled = false
 distZip.enabled=false // always disabled
-packageSources.enabled = false
+packageSources.enabled=false // always disabled
diff --git a/solve/libs/jastadd2.jar b/solve/libs/jastadd2.jar
index 6d774ba8ebfc5e9189e1feae9d9e8ac04cf723f9..09255c49ed78adddd355733ddb944c9b3586725a 100644
Binary files a/solve/libs/jastadd2.jar and b/solve/libs/jastadd2.jar differ
diff --git a/solve/src/main/java/de/tudresden/inf/st/ttc18live/AbstractLiveContestDriver.java b/solve/src/main/java/de/tudresden/inf/st/ttc18live/AbstractLiveContestDriver.java
index 5030b6afc2383cdbd3ec26e0dc331bc6c0278f6a..1be491d06c5a33a84176b1f82d9723c4f7e44343 100644
--- a/solve/src/main/java/de/tudresden/inf/st/ttc18live/AbstractLiveContestDriver.java
+++ b/solve/src/main/java/de/tudresden/inf/st/ttc18live/AbstractLiveContestDriver.java
@@ -28,6 +28,12 @@ public abstract class AbstractLiveContestDriver {
   private boolean traceEvents;
   private Path pathOfEventFile;
 
+  AbstractLiveContestDriver() {
+    ChangeSet = System.getenv("ChangeSet");
+    ChangePath = System.getenv("ChangePath");
+    Query = System.getenv("Query").toUpperCase();
+  }
+
   AbstractLiveContestDriver enableTracing(Path pathOfEventFile) {
     this.pathOfEventFile = pathOfEventFile;
     this.traceEvents = true;
@@ -82,12 +88,9 @@ public abstract class AbstractLiveContestDriver {
 
   private void Initialize() throws Exception {
     stopwatch = System.nanoTime();
-    ChangePath = System.getenv("ChangePath");
     RunIndex = System.getenv("RunIndex");
     Sequences = Integer.parseInt(System.getenv("Sequences"));
     Tool = System.getenv("Tool");
-    ChangeSet = System.getenv("ChangeSet");
-    Query = System.getenv("Query").toUpperCase();
 
     InitializeSpecial();
 
diff --git a/solve/src/main/java/de/tudresden/inf/st/ttc18live/Main.java b/solve/src/main/java/de/tudresden/inf/st/ttc18live/Main.java
index 5e3a801c94c2c41b59ffb604810ccd8c1fa7e03f..74c7bec791aa5cae032557de36ed74129e21338b 100644
--- a/solve/src/main/java/de/tudresden/inf/st/ttc18live/Main.java
+++ b/solve/src/main/java/de/tudresden/inf/st/ttc18live/Main.java
@@ -162,22 +162,22 @@ public class Main {
           modelChangeSet.getNumModelChange(), socialNetwork.isValid());
 
 //      // flush to get ids correct after parsing
-//      socialNetwork.flushTreeCache();
+      socialNetwork.flushTreeCache();
 
       if (splitApply) {
         // copy code of modelChangeSet.apply
         for (ModelChange change : modelChangeSet.getModelChangeList()) {
           change.apply();
           // flush to update for changes
-//          modelChangeSet.flushTreeCache();
-//          socialNetwork.flushTreeCache();
+          modelChangeSet.flushTreeCache();
+          socialNetwork.flushTreeCache();
           // and validate
           socialNetwork.isValid();
         }
       } else {
         modelChangeSet.apply();
         // flush to update for changes
-//        socialNetwork.flushTreeCache();
+        socialNetwork.flushTreeCache();
       }
 
       logger.info("Validity after application of changes: {}", socialNetwork.isValid());
diff --git a/solve/src/main/java/de/tudresden/inf/st/ttc18live/Solution.java b/solve/src/main/java/de/tudresden/inf/st/ttc18live/Solution.java
index 8fcbc7ee7b2dd70bb2ca6175251988ed0ab135bc..ceb14dc3628868d429ebf62acd901aeb49b9b361 100644
--- a/solve/src/main/java/de/tudresden/inf/st/ttc18live/Solution.java
+++ b/solve/src/main/java/de/tudresden/inf/st/ttc18live/Solution.java
@@ -16,6 +16,11 @@ public abstract class Solution {
     socialNetwork = network;
   }
 
+  void apply(ModelChangeSet changes) {
+    changes.apply();
+    socialNetwork.flushTreeCache();
+  }
+
   public abstract String Initial();
 
   public abstract String Update(ModelChangeSet changes);
diff --git a/solve/src/main/java/de/tudresden/inf/st/ttc18live/SolutionQ1.java b/solve/src/main/java/de/tudresden/inf/st/ttc18live/SolutionQ1.java
index adbf82cf4ebe75b788c57fc2b0575dc04c3b9a9c..5290a1cfd3d0b33130fa334936774d6c93a8c2f1 100644
--- a/solve/src/main/java/de/tudresden/inf/st/ttc18live/SolutionQ1.java
+++ b/solve/src/main/java/de/tudresden/inf/st/ttc18live/SolutionQ1.java
@@ -13,7 +13,7 @@ public class SolutionQ1 extends Solution {
 
   @Override
   public String Update(ModelChangeSet changes) {
-    changes.apply();
+    apply(changes);
     return this.getSocialNetwork().query1();
   }
 
diff --git a/solve/src/main/java/de/tudresden/inf/st/ttc18live/SolutionQ2.java b/solve/src/main/java/de/tudresden/inf/st/ttc18live/SolutionQ2.java
index 10c1db54714190451b1204b196070c3ef852f425..9ad4ff3fd6cec791ea20ec385a9369a855695e58 100644
--- a/solve/src/main/java/de/tudresden/inf/st/ttc18live/SolutionQ2.java
+++ b/solve/src/main/java/de/tudresden/inf/st/ttc18live/SolutionQ2.java
@@ -11,7 +11,7 @@ public class SolutionQ2 extends Solution {
 
   @Override
   public String Update(ModelChangeSet changes) {
-    changes.apply();
+    apply(changes);
     return getSocialNetwork().query2();
   }