diff --git a/object_fracture_cell/fracture_cell_setup.py b/object_fracture_cell/fracture_cell_setup.py
index c26994f1f94e04633682f8d2d8abcbf975e36ea8..36e8691f977687522a4c8bd59b759368a6d33804 100644
--- a/object_fracture_cell/fracture_cell_setup.py
+++ b/object_fracture_cell/fracture_cell_setup.py
@@ -312,6 +312,7 @@ def cell_fracture_boolean(scene, obj, objects,
                           use_interior_hide=False,
                           use_debug_redraw=False,
                           level=0,
+                          remove_doubles=True
                           ):
 
     objects_boolean = []
@@ -350,22 +351,29 @@ def cell_fracture_boolean(scene, obj, objects,
                         mesh_new = None
 
             # avoid unneeded bmesh re-conversion
-            bm = None
-
-            if clean and mesh_new:
-                if bm is None:  # ok this will always be true for now...
-                    bm = bmesh.new()
-                    bm.from_mesh(mesh_new)
-                bm.normal_update()
-                try:
-                    bmesh.ops.dissolve_limit(bm, verts=bm.verts, edges=bm.edges, angle_limit=0.001)
-                except RuntimeError:
-                    import traceback
-                    traceback.print_exc()
-
-            if bm is not None:
-                bm.to_mesh(mesh_new)
-                bm.free()
+            if mesh_new is not None:
+                bm = None
+
+                if clean:
+                    if bm is None:  # ok this will always be true for now...
+                        bm = bmesh.new()
+                        bm.from_mesh(mesh_new)
+                    bm.normal_update()
+                    try:
+                        bmesh.ops.dissolve_limit(bm, verts=bm.verts, edges=bm.edges, angle_limit=0.001)
+                    except RuntimeError:
+                        import traceback
+                        traceback.print_exc()
+
+                if remove_doubles:
+                    if bm is None:
+                        bm = bmesh.new()
+                        bm.from_mesh(mesh_new)
+                    bmesh.ops.remove_doubles(bm, verts=bm.verts, dist=0.005)
+
+                if bm is not None:
+                    bm.to_mesh(mesh_new)
+                    bm.free()
 
             del mesh_new
             del mesh_old
@@ -429,8 +437,7 @@ def cell_fracture_interior_handle(objects,
             for bm_edge in bm.edges:
                 if len({bm_face.hide for bm_face in bm_edge.link_faces}) == 2:
                     bm_edge.smooth = False
-    
-        
+
             if use_sharp_edges_apply:
                 edges = [edge for edge in bm.edges if edge.smooth is False]
                 if edges: