Further adjustments to save memory
diff --git a/core/plugins/org.eclipse.hawk.graph/src/org/eclipse/hawk/graph/updater/GraphModelUpdater.java b/core/plugins/org.eclipse.hawk.graph/src/org/eclipse/hawk/graph/updater/GraphModelUpdater.java
index b0e9195..1a4cc43 100644
--- a/core/plugins/org.eclipse.hawk.graph/src/org/eclipse/hawk/graph/updater/GraphModelUpdater.java
+++ b/core/plugins/org.eclipse.hawk.graph/src/org/eclipse/hawk/graph/updater/GraphModelUpdater.java
@@ -21,7 +21,6 @@
 import java.util.Collections;

 import java.util.Date;

 import java.util.HashSet;

-import java.util.Iterator;

 import java.util.Set;

 

 import org.eclipse.hawk.core.IConsole;

@@ -54,7 +53,6 @@
 

 	protected IModelIndexer indexer;

 	protected IConsole console;

-	protected TypeCache typeCache;

 	private boolean isActive = false;

 	protected Set<IGraphNode> toBeUpdated = new HashSet<>();

 

@@ -62,7 +60,6 @@
 	public void run(IConsole c, IModelIndexer hawk) throws Exception {

 		this.indexer = hawk;

 		this.console = c;

-		this.typeCache = new TypeCache(hawk);

 	}

 

 	@Override

@@ -179,9 +176,6 @@
 		long end = System.currentTimeMillis();

 		console.println((end - start) / 1000 + "s" + (end - start) % 1000

 				+ "ms [proxy update]");

-

-		// Clear the type cache by creating a new one and letting the old one be GC'ed

-		typeCache = new TypeCache(indexer);

 	}

 

 	public boolean isActive() {

@@ -353,7 +347,7 @@
 	}

 

 	public GraphModelInserter createInserter() {

-		return new GraphModelInserter(indexer, this::createDeletionUtils, typeCache);

+		return new GraphModelInserter(indexer, this::createDeletionUtils,  new TypeCache(this.indexer));

 	}

 

 	protected DeletionUtils createDeletionUtils() {

diff --git a/core/plugins/org.eclipse.hawk.timeaware/src/org/eclipse/hawk/timeaware/graph/TimeAwareModelUpdater.java b/core/plugins/org.eclipse.hawk.timeaware/src/org/eclipse/hawk/timeaware/graph/TimeAwareModelUpdater.java
index e74007e..ca3d785 100644
--- a/core/plugins/org.eclipse.hawk.timeaware/src/org/eclipse/hawk/timeaware/graph/TimeAwareModelUpdater.java
+++ b/core/plugins/org.eclipse.hawk.timeaware/src/org/eclipse/hawk/timeaware/graph/TimeAwareModelUpdater.java
@@ -22,6 +22,7 @@
 import org.eclipse.hawk.graph.updater.DeletionUtils;
 import org.eclipse.hawk.graph.updater.GraphModelInserter;
 import org.eclipse.hawk.graph.updater.GraphModelUpdater;
+import org.eclipse.hawk.graph.updater.TypeCache;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -72,7 +73,7 @@
 
 	@Override
 	public GraphModelInserter createInserter() {
-		return new GraphModelInserter(indexer, this::createDeletionUtils, typeCache) {
+		return new GraphModelInserter(indexer, this::createDeletionUtils, new TypeCache(this.indexer)) {
 			@Override
 			protected double calculateModelDeltaRatio(IGraphNode fileNode, boolean verbose) throws Exception {
 				super.calculateModelDeltaRatio(fileNode, verbose);
diff --git a/core/tests/org.eclipse.hawk.timeaware.tests/src/org/eclipse/hawk/timeaware/tests/GitNodeHistoryTest.java b/core/tests/org.eclipse.hawk.timeaware.tests/src/org/eclipse/hawk/timeaware/tests/GitNodeHistoryTest.java
index 5d58b33..ddd4762 100644
--- a/core/tests/org.eclipse.hawk.timeaware.tests/src/org/eclipse/hawk/timeaware/tests/GitNodeHistoryTest.java
+++ b/core/tests/org.eclipse.hawk.timeaware.tests/src/org/eclipse/hawk/timeaware/tests/GitNodeHistoryTest.java
@@ -36,7 +36,7 @@
 import org.junit.runners.Parameterized.Parameters;
 
 /**
- * Tests for the time-aware indexing of model element nodes, using Subversion.
+ * Tests for the time-aware indexing of model element nodes, using Git.
  */
 @RunWith(Parameterized.class)
 public class GitNodeHistoryTest extends AbstractTimeAwareModelIndexingTest {
diff --git a/greycat/org.eclipse.hawk.greycat/src/org/eclipse/hawk/greycat/GreycatHeavyEdge.java b/greycat/org.eclipse.hawk.greycat/src/org/eclipse/hawk/greycat/GreycatHeavyEdge.java
index 9417d49..853c028 100644
--- a/greycat/org.eclipse.hawk.greycat/src/org/eclipse/hawk/greycat/GreycatHeavyEdge.java
+++ b/greycat/org.eclipse.hawk.greycat/src/org/eclipse/hawk/greycat/GreycatHeavyEdge.java
@@ -154,7 +154,9 @@
 				final Node target = targets[0];
 				final GreycatNode newNode = node.getGraph().lookup(
 					target.world(), target.time(), target.id());
-				target.free();
+				for (Node t : targets) {
+					t.free();
+				}
 				result.complete(newNode);
 			});
 
diff --git a/greycat/org.eclipse.hawk.greycat/src/org/eclipse/hawk/greycat/GreycatNode.java b/greycat/org.eclipse.hawk.greycat/src/org/eclipse/hawk/greycat/GreycatNode.java
index 14656b6..b7909fc 100644
--- a/greycat/org.eclipse.hawk.greycat/src/org/eclipse/hawk/greycat/GreycatNode.java
+++ b/greycat/org.eclipse.hawk.greycat/src/org/eclipse/hawk/greycat/GreycatNode.java
@@ -244,7 +244,6 @@
 		this.id = id;
 
 		this.nodeProvider = new NodeProvider(db.getGraph(), node);
-		this.nodeProvider.markDirty();
 	}
 
 	@Override