diff --git a/object_fracture_cell/fracture_cell_setup.py b/object_fracture_cell/fracture_cell_setup.py
index 6bd8937dbbee87789f319968ab02578434608721..83f7cdd1fcad934a3b5966d3b59ac87e2289d077 100644
--- a/object_fracture_cell/fracture_cell_setup.py
+++ b/object_fracture_cell/fracture_cell_setup.py
@@ -321,7 +321,6 @@ def cell_fracture_boolean(context, obj, objects,
     collection = context.collection
     scene = context.scene
     view_layer = context.view_layer
-    depsgraph = context.evaluated_depsgraph_get()
 
     if use_interior_hide and level == 0:
         # only set for level 0
@@ -337,11 +336,18 @@ def cell_fracture_boolean(context, obj, objects,
             if use_interior_hide:
                 obj_cell.data.polygons.foreach_set("hide", [True] * len(obj_cell.data.polygons))
 
+    # Calculates all booleans at once (faster).
+    depsgraph = context.evaluated_depsgraph_get()
+
+    for obj_cell in objects:
+
+        if not use_debug_bool:
+
             obj_cell_eval = obj_cell.evaluated_get(depsgraph)
             mesh_new = bpy.data.meshes.new_from_object(obj_cell_eval)
             mesh_old = obj_cell.data
             obj_cell.data = mesh_new
-            obj_cell.modifiers.remove(mod)
+            obj_cell.modifiers.remove(obj_cell.modifiers[-1])
 
             # remove if not valid
             if not mesh_old.users: