diff --git a/benchmarks/step/A319.brep.gz b/benchmarks/step/A319.brep.gz
new file mode 100644
index 0000000000000000000000000000000000000000..775f723c6bc4a94cf8773df737d0b16caa803da4
Binary files /dev/null and b/benchmarks/step/A319.brep.gz differ
diff --git a/benchmarks/step/A319_in_a_box.geo b/benchmarks/step/A319_in_a_box.geo
new file mode 100644
index 0000000000000000000000000000000000000000..63f920a9e759855c66756ba8696d430a0ae54a57
--- /dev/null
+++ b/benchmarks/step/A319_in_a_box.geo
@@ -0,0 +1,35 @@
+
+Merge "A319.brep";
+
+xmin = General.MinX;
+xmax = General.MaxX;
+ymin = General.MinY;
+ymax = General.MaxY;
+zmin = General.MinZ;
+zmax = General.MaxZ;
+
+l = Sqrt((xmax - xmin)^2 + (ymax - ymin)^2 + (zmax - zmin)^2) / 5;
+lc = l;
+
+Point(10001) = { xmin - l, ymin - l, zmin - l, lc};
+Point(10002) = { xmax + l, ymin - l, zmin - l, lc};
+Point(10003) = { xmax + l, ymax + l, zmin - l, lc};
+Point(10004) = { xmin - l, ymax + l, zmin - l, lc};
+
+Line(10001) = {10004, 10003};
+Line(10002) = {10003, 10002};
+Line(10003) = {10002, 10001};
+Line(10004) = {10001, 10004};
+Line Loop(10005) = {10002, 10003, 10004, 10001};
+Plane Surface(10006) = {10005};
+tmp[] = Extrude {0, 0, (zmax - zmin) + 2 * l} {
+  Surface{10006};
+};
+Delete { Volume{tmp[1]}; }
+
+Characteristic Length{1:1000} = lc / 20;
+
+//created in the gui:
+Surface Loop(10029) = {10028,10015,10006,10019,10023,10027};
+Surface Loop(10030) = {36,82,72,65,40,46,37,43,42,39,38,41,49,45,48,47,44,35,34,19,13,12,31,29,11,30,10,7,8,9,21,22,23,15,20,18,16,14,17,25,24,27,28,26,33,32,62,56,50,58,54,71,1,6,66,57,68,53,55,61,69,64,4,52,5,51,2,3,67,63,60,70,59,81,78,79,83,75,80,73,74,77,76};
+Volume(10031) = {10029,10030};
diff --git a/benchmarks/step/io1-pe-203.step.gz b/benchmarks/step/io1-pe-203.step.gz
new file mode 100644
index 0000000000000000000000000000000000000000..4871ff9897ce79410c92555db6f1a3d6a47f1918
Binary files /dev/null and b/benchmarks/step/io1-pe-203.step.gz differ
diff --git a/benchmarks/step/io1-pe-203_in_a_box.geo b/benchmarks/step/io1-pe-203_in_a_box.geo
new file mode 100644
index 0000000000000000000000000000000000000000..90cdcad48e87a30b52fa394c5f15aa9c5eed99e7
--- /dev/null
+++ b/benchmarks/step/io1-pe-203_in_a_box.geo
@@ -0,0 +1,36 @@
+
+Merge "io1-pe-203.step";
+
+xmin = General.MinX;
+xmax = General.MaxX;
+ymin = General.MinY;
+ymax = General.MaxY;
+zmin = General.MinZ;
+zmax = General.MaxZ;
+
+l = Sqrt((xmax - xmin)^2 + (ymax - ymin)^2 + (zmax - zmin)^2) / 5;
+lc = l;
+
+Point(10001) = { xmin - l, ymin - l, zmin - l, lc};
+Point(10002) = { xmax + l, ymin - l, zmin - l, lc};
+Point(10003) = { xmax + l, ymax + l, zmin - l, lc};
+Point(10004) = { xmin - l, ymax + l, zmin - l, lc};
+
+Line(10001) = {10004, 10003};
+Line(10002) = {10003, 10002};
+Line(10003) = {10002, 10001};
+Line(10004) = {10001, 10004};
+Line Loop(10005) = {10002, 10003, 10004, 10001};
+Plane Surface(10006) = {10005};
+Extrude {0, 0, (zmax - zmin) + 2 * l} {
+  Surface{10006};
+}
+tmp[] = Extrude {0, 0, (zmax - zmin) + 2 * l} {
+  Surface{10006};
+};
+Delete { Volume{tmp[1]}; }
+
+//created in the gui:
+Surface Loop(10029) = {10027,10006,10015,10019,10023,10028};
+Surface Loop(10030) = {21,22,23,24,25,1,2,3,27,26,6,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,28,29};
+Volume(10031) = {10029,10030};
diff --git a/benchmarks/step/linkrods_in_a_box.geo b/benchmarks/step/linkrods_in_a_box.geo
index 2dd826a6287b9924713593e4d2448980cfeb76fc..85e61631ed2f5f241bf0362249c81693ebaf517a 100644
--- a/benchmarks/step/linkrods_in_a_box.geo
+++ b/benchmarks/step/linkrods_in_a_box.geo
@@ -21,9 +21,10 @@ Line(10003) = {10002, 10001};
 Line(10004) = {10001, 10004};
 Line Loop(10005) = {10002, 10003, 10004, 10001};
 Plane Surface(10006) = {10005};
-Extrude {0, 0, (zmax - zmin) + 2 * l} {
+tmp[] = Extrude {0, 0, (zmax - zmin) + 2 * l} {
   Surface{10006};
-}
+};
+Delete { Volume{tmp[1]}; }
 
 Surface Loop(10029) = {10027,10006,10015,10019,10023,10028};
 Surface Loop(10030) = {7,9,10,11,8,6,28,26,36,15,2,4,5,12,3,1,13,24,23,14,16,22,21,18,20,37,34,19,17,35,31,33,32,30,29,27,25};
diff --git a/benchmarks/stl/falcon1.geo b/benchmarks/stl/falcon1.geo
new file mode 100644
index 0000000000000000000000000000000000000000..1cea7963e5891bfac8f57a72bbc3f96e4564467b
--- /dev/null
+++ b/benchmarks/stl/falcon1.geo
@@ -0,0 +1,18 @@
+Merge 'falcon1.stl';
+
+Point(201) = {-30.0,30.0,15.0,0.1};
+Point(202) = {-30.0,30.0,-15.0,0.1};
+Point(203) = {0.0,30.0,15.0,0.1};
+Point(204) = {0.0,30.0,-15.0,0.1};
+
+Line(203) = {202,204};
+Line(204) = {204,203};
+Line(205) = {203,201};
+Line(206) = {201,202};
+Line Loop(207) = {203,204,205,206};
+Plane Surface(208) = {207};
+Extrude {0,-50,0} { Surface{208}; }
+
+Surface Loop(1) = {1};
+Surface Loop(232) = {-217,208,-221,-225,-229,-230};
+Volume(233) = {232,1};
diff --git a/benchmarks/stl/falcon1.stl.gz b/benchmarks/stl/falcon1.stl.gz
new file mode 100644
index 0000000000000000000000000000000000000000..8c518d20de3d62bad659d7f7763542c981d2b463
Binary files /dev/null and b/benchmarks/stl/falcon1.stl.gz differ