diff --git a/library/src/main/java/trikita/anvil/Anvil.java b/library/src/main/java/trikita/anvil/Anvil.java
index <HASH>..<HASH> 100644
--- a/library/src/main/java/trikita/anvil/Anvil.java
+++ b/library/src/main/java/trikita/anvil/Anvil.java
@@ -11,6 +11,8 @@ import java.util.Map;
 import java.util.WeakHashMap;
 
 import static trikita.anvil.Nodes.*;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * <p>
@@ -108,7 +110,11 @@ public final class Anvil {
 			skipNextRender = false;
 			return;
 		}
-		for (Renderable r: mounts.keySet()) {
+		// We need to copy the keyset, otherwise a concurrent modification may
+		// happen if Renderables are nested
+		Set<Renderable> set = new HashSet<Renderable>();
+		set.addAll(mounts.keySet());
+		for (Renderable r: set) {
 			render(r);
 		}
 	}
fixed renderable iteration in Anvil to avoid concurrent modification exceptions