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
