diff --git a/assets/SimpleFolds/brochurefold.svg b/assets/SimpleFolds/brochurefold.svg
new file mode 100644
index 0000000000000000000000000000000000000000..089f9b4dc8a5dbd59579852bb12e737a148009f7
--- /dev/null
+++ b/assets/SimpleFolds/brochurefold.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="3456px" height="6912px" viewBox="0 0 3456 6912" enable-background="new 0 0 3456 6912" xml:space="preserve">
+<path fill="none" stroke="#000000" stroke-miterlimit="10" d="M2851.823,3456H889V2014.824h1962.823V3456z"/>
+<path fill="none" stroke="#0000FF" stroke-miterlimit="10" d="M1379.706,2014.824V3456 M1870.411,2014.824V3456 M2361.117,2014.824
+	V3456 M889,2735.412h490.706 M1870.411,2735.412h490.706"/>
+<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M1379.706,2735.412h490.706 M2361.117,2735.412h490.706"/>
+</svg>
diff --git a/assets/SimpleFolds/mapfold.svg b/assets/SimpleFolds/mapfold.svg
new file mode 100644
index 0000000000000000000000000000000000000000..556ee5e5f660a63a09439184e819293452e01d45
--- /dev/null
+++ b/assets/SimpleFolds/mapfold.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="3456px" height="6912px" viewBox="0 0 3456 6912" enable-background="new 0 0 3456 6912" xml:space="preserve">
+<path fill="none" stroke="#000000" stroke-miterlimit="10" d="M2851.823,3456H889V2014.824h1962.823V3456z"/>
+<path fill="none" stroke="#0000FF" stroke-miterlimit="10" d="M1379.706,2014.824V3456 M2361.117,2014.824V3456 M889,2735.412
+	h490.706 M1870.411,2735.412h490.706"/>
+<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M1870.411,2014.824V3456 M1379.706,2735.412h490.706
+	 M2361.117,2735.412h490.706"/>
+</svg>
diff --git a/assets/SimpleFolds/russianTuck.svg b/assets/SimpleFolds/russianTuck.svg
new file mode 100644
index 0000000000000000000000000000000000000000..528846129f445ea87614f958f6a2affeff7d5538
--- /dev/null
+++ b/assets/SimpleFolds/russianTuck.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="3456px" height="6912px" viewBox="0 0 3456 6912" enable-background="new 0 0 3456 6912" xml:space="preserve">
+<path fill="none" stroke="#0000FF" stroke-miterlimit="10" d="M316.529,232.941l1300,1300 M1616.529,232.941l-650,650
+	 M1616.529,232.941l650,650 M2266.529,882.941l-650,650 M1616.529,232.941v1300"/>
+<path fill="none" stroke="#000000" stroke-miterlimit="10" d="M2266.529,1532.941h-1950v-1300h1950V1532.941z"/>
+<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M966.529,882.941l-650,650"/>
+</svg>
diff --git a/index.html b/index.html
index f6412f51fe1233562dd59251df0615d6981e26a4..835cece444f0d58f86245c9dbbfa6a38cc390957 100755
--- a/index.html
+++ b/index.html
@@ -603,6 +603,9 @@
                         <a tabindex="-1">Simple Folds<span class="pull-right fui-arrow-right"></span></a>
                         <ul class="dropdown-menu">
                             <li><a href="#" class="demo" data-url="SimpleFolds/simpleVertex.svg">Simple Vertex</a></li>
+                            <li><a href="#" class="demo" data-url="SimpleFolds/russianTuck.svg">Russian Tuck</a></li>
+                            <li><a href="#" class="demo" data-url="SimpleFolds/mapFold.svg">Map Fold</a></li>
+                            <li><a href="#" class="demo" data-url="SimpleFolds/brochureFold.svg">Brochure Fold</a></li>
                         </ul>
                     </li>
                     <li class="divider"></li>
diff --git a/js/saveSTL.js b/js/saveSTL.js
index a71d5c96c88a1922dae0a300df3b54223db20783..db3e3b7891e8bb81e6dda0559fcb226af565d6c7 100755
--- a/js/saveSTL.js
+++ b/js/saveSTL.js
@@ -15,71 +15,69 @@ function makeSaveGEO(doublesided){
     }
 
 
-    if (globals.thickenModel){
-        var numVertices = geo.vertices.length;
-        geo.computeVertexNormals();
-        geo.computeFaceNormals();
-        for (var i=0;i<numVertices;i++){
-            var face;
-            var vertexNormal = new THREE.Vector3();
-            var lastFaceIndex = 0;
-            for (var j=0;j<geo.faces.length;j++){
-                face = geo.faces[j];
-                if (face.a == i) {
-                    var a = geo.vertices[face.a];
-                    var b = geo.vertices[face.b];
-                    var c = geo.vertices[face.c];
-                    var  weight = Math.abs(Math.acos( (b.clone().sub(a)).normalize().dot( (c.clone().sub(a)).normalize() ) ));
-                    console.log(weight);
-                    vertexNormal.add(face.normal.clone().multiplyScalar(weight));
-                    lastFaceIndex = j;
-                } else if (face.b == i) {
-                    var a = geo.vertices[face.a];
-                    var b = geo.vertices[face.b];
-                    var c = geo.vertices[face.c];
-                    var  weight = Math.abs(Math.acos( (c.clone().sub(b)).normalize().dot( (a.clone().sub(b)).normalize() ) ));
-                    console.log(weight);
-                    vertexNormal.add(face.normal.clone().multiplyScalar(weight));
-                    lastFaceIndex = j;
-                } else if (face.c == i) {
-                    var a = geo.vertices[face.a];
-                    var b = geo.vertices[face.b];
-                    var c = geo.vertices[face.c];
-                    var  weight = Math.abs(Math.acos( (b.clone().sub(c)).normalize().dot( (a.clone().sub(c)).normalize() ) ));
-                    console.log(weight);
-                    vertexNormal.add(face.normal.clone().multiplyScalar(weight));
-                    lastFaceIndex = j;
-                }
-                // if (vertexNormal !== null) break;
-            }
-            // if (vertexNormal === undefined) {
-            //     geo.vertices.push(new THREE.Vector3());
-            //     continue;
-            // }
-            //filter out duplicate normals
-            vertexNormal.normalize();
-            var offset = vertexNormal.clone().multiplyScalar(globals.thickenOffset/(2*vertexNormal.clone().dot(geo.faces[lastFaceIndex].normal)));
-
-            // geo.vertices.push(geo.vertices[i].clone().sub(offset));
-            geo.vertices[i].add(offset);
-        }
-        // var numFaces = geo.faces.length;
-        // for (var i=0;i<numFaces;i++){
-        //     var face = geo.faces[i].clone();
-        //     face.a += numVertices;
-        //     face.b += numVertices;
-        //     face.c += numVertices;
-        //     var b = face.b;
-        //     face.b = face.c;
-        //     face.c = b;
-        //     geo.faces.push(face);
-        // }
-        geo.computeVertexNormals();
-        geo.computeFaceNormals();
+    // if (globals.thickenModel){
+    //     var numVertices = geo.vertices.length;
+    //     geo.computeVertexNormals();
+    //     geo.computeFaceNormals();
+    //     for (var i=0;i<numVertices;i++){
+    //         var face;
+    //         var vertexNormal = new THREE.Vector3();
+    //         var lastFaceIndex = 0;
+    //         for (var j=0;j<geo.faces.length;j++){
+    //             face = geo.faces[j];
+    //             if (face.a == i) {
+    //                 var a = geo.vertices[face.a];
+    //                 var b = geo.vertices[face.b];
+    //                 var c = geo.vertices[face.c];
+    //                 var  weight = Math.abs(Math.acos( (b.clone().sub(a)).normalize().dot( (c.clone().sub(a)).normalize() ) ));
+    //                 vertexNormal.add(face.normal.clone().multiplyScalar(weight));
+    //                 lastFaceIndex = j;
+    //             } else if (face.b == i) {
+    //                 var a = geo.vertices[face.a];
+    //                 var b = geo.vertices[face.b];
+    //                 var c = geo.vertices[face.c];
+    //                 var  weight = Math.abs(Math.acos( (c.clone().sub(b)).normalize().dot( (a.clone().sub(b)).normalize() ) ));
+    //                 vertexNormal.add(face.normal.clone().multiplyScalar(weight));
+    //                 lastFaceIndex = j;
+    //             } else if (face.c == i) {
+    //                 var a = geo.vertices[face.a];
+    //                 var b = geo.vertices[face.b];
+    //                 var c = geo.vertices[face.c];
+    //                 var  weight = Math.abs(Math.acos( (b.clone().sub(c)).normalize().dot( (a.clone().sub(c)).normalize() ) ));
+    //                 vertexNormal.add(face.normal.clone().multiplyScalar(weight));
+    //                 lastFaceIndex = j;
+    //             }
+    //             // if (vertexNormal !== null) break;
+    //         }
+    //         // if (vertexNormal === undefined) {
+    //         //     geo.vertices.push(new THREE.Vector3());
+    //         //     continue;
+    //         // }
+    //         //filter out duplicate normals
+    //         vertexNormal.normalize();
+    //         console.log(vertexNormal);
+    //         var offset = vertexNormal.clone().multiplyScalar(5);//globals.thickenOffset/(2*vertexNormal.clone().dot(geo.faces[lastFaceIndex].normal)));
+    //
+    //         geo.vertices.push(geo.vertices[i].clone().sub(offset));
+    //         geo.vertices[i].add(offset);
+    //     }
+    //     var numFaces = geo.faces.length;
+    //     for (var i=0;i<numFaces;i++){
+    //         var face = geo.faces[i].clone();
+    //         face.a += numVertices;
+    //         face.b += numVertices;
+    //         face.c += numVertices;
+    //         var b = face.b;
+    //         face.b = face.c;
+    //         face.c = b;
+    //         geo.faces.push(face);
+    //     }
+    //     geo.computeVertexNormals();
+    //     geo.computeFaceNormals();
 
 
 
-    } else if (doublesided){
+    if (doublesided){
         var numFaces = geo.faces.length;
         for (var i=0;i<numFaces;i++){
             var face = geo.faces[i];