diff --git a/index.html b/index.html
index 063155efbc964950404636b498cec18c22242e5b..8483854aad100fdea83cbd6aea930102d022fab2 100644
--- a/index.html
+++ b/index.html
@@ -464,6 +464,24 @@
                     <input id="edgesVisible" data-toggle="checkbox" class="custom-checkbox layersSelector" type="checkbox"><span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span>
                     Edges Visible
                 </label>
+                <div id="edgeVisOptions" class="indent">
+                    <label class="checkbox" for="mtnsVisible">
+                        <input id="mtnsVisible" data-toggle="checkbox" class="custom-checkbox layersSelector" type="checkbox"><span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span>
+                        Mountains
+                    </label>
+                    <label class="checkbox" for="valleysVisible">
+                        <input id="valleysVisible" data-toggle="checkbox" class="custom-checkbox layersSelector" type="checkbox"><span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span>
+                        Valleys
+                    </label>
+                    <label class="checkbox" for="panelsVisible">
+                        <input id="panelsVisible" data-toggle="checkbox" class="custom-checkbox layersSelector" type="checkbox"><span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span>
+                        Panel Creases
+                    </label>
+                    <label class="checkbox" for="passiveEdgesVisible">
+                        <input id="passiveEdgesVisible" data-toggle="checkbox" class="custom-checkbox layersSelector" type="checkbox"><span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span>
+                        Undriven Edges
+                    </label>
+                </div>
             </div><br/>
             Rendering:
             <div class="indent">
diff --git a/js/controls.js b/js/controls.js
index 52e5618a3d63713fbdac2f24649aad53a516b85a..3bece06f2f08c6a80da10e84320451f1a1350121 100644
--- a/js/controls.js
+++ b/js/controls.js
@@ -232,6 +232,24 @@ function initControls(globals){
 
     setCheckbox("#edgesVisible", globals.edgesVisible, function(val){
         globals.edgesVisible = val;
+        if (globals.edgesVisible) $("#edgeVisOptions").show();
+        else $("#edgeVisOptions").hide();
+        globals.model.updateEdgeVisibility();
+    });
+    setCheckbox("#mtnsVisible", globals.mtnsVisible, function(val){
+        globals.mtnsVisible = val;
+        globals.model.updateEdgeVisibility();
+    });
+    setCheckbox("#valleysVisible", globals.valleysVisible, function(val){
+        globals.valleysVisible = val;
+        globals.model.updateEdgeVisibility();
+    });
+    setCheckbox("#panelsVisible", globals.panelsVisible, function(val){
+        globals.panelsVisible = val;
+        globals.model.updateEdgeVisibility();
+    });
+    setCheckbox("#passiveEdgesVisible", globals.passiveEdgesVisible, function(val){
+        globals.passiveEdgesVisible = val;
         globals.model.updateEdgeVisibility();
     });
 
diff --git a/js/crease.js b/js/crease.js
index dc3805fe435bac287d854f780c72aaa7691c1899..b4bc4e373257b2301d4f130a1f07b518d3b07411 100644
--- a/js/crease.js
+++ b/js/crease.js
@@ -7,7 +7,6 @@ function Crease(edge, face1Index, face2Index, targetTheta, type, node1, node2, i
 
     //face1 corresponds to node1, face2 to node2
     this.edge = edge;
-    if (targetTheta>0) this.edge.highlight();
     for (var i=0;i<edge.nodes.length;i++){
         edge.nodes[i].addInvCrease(this);
     }
@@ -84,6 +83,15 @@ Crease.prototype.getNodeIndex = function(node){
     return 0;
 };
 
+Crease.prototype.setVisibility = function(){
+    var vis = false;
+    if (this.type==0) vis = globals.panelsVisible;
+    else {
+        vis = (this.targetTheta>0 && globals.mtnsVisible) || (this.targetTheta<0 && globals.valleysVisible);
+    }
+    this.edge.setVisibility(vis);
+};
+
 Crease.prototype.destroy = function(){
     this.node1.removeCrease(this);
     this.node2.removeCrease(this);
diff --git a/js/globals.js b/js/globals.js
index 3a6e0696cd08dde94af6fdddd9bbc8e0ab37d160..87a95685cf1bca4cbe8aa8110ec5affcd5bc6ed1 100644
--- a/js/globals.js
+++ b/js/globals.js
@@ -14,8 +14,12 @@ function initGlobals(){
         color1: "ec008b",
         color2: "dddddd",
         edgesVisible: true,
+        mtnsVisible: true,
+        valleysVisible: true,
+        panelsVisible: true,
+        passiveEdgesVisible: true,
         meshVisible: true,
-        ambientOcclusion: true,
+        ambientOcclusion: false,
 
         //flags
         fixedHasChanged: false,
diff --git a/js/model.js b/js/model.js
index 5eae06ce6b247f1c2fb607a2cbe95b7be87ec941..460d2c2faaa2a7d5f2d665ba5f020bc08710d55f 100644
--- a/js/model.js
+++ b/js/model.js
@@ -23,7 +23,14 @@ function initModel(globals){
 
     function updateEdgeVisibility(){
         for (var i=0;i<edges.length;i++){
-            edges[i].setVisibility(globals.edgesVisible);
+            edges[i].setVisibility(false);
+        }
+        if (!globals.edgesVisible) return;
+        for (var i=0;i<edges.length;i++){
+            edges[i].setVisibility(globals.passiveEdgesVisible);
+        }
+        for (var i=0;i<creases.length;i++){
+            creases[i].setVisibility();
         }
     }
 
@@ -229,6 +236,10 @@ function initModel(globals){
         return allNodeObject3Ds;
     }
 
+    function updateEdgeVis(){
+
+    }
+
     return {
         pause: pause,
         resume: resume,