diff --git a/index.html b/index.html
index 9c763eeaba26bce9c9ad5a9a1142e0312aa9ce24..b9c08cd7acce9bc3d5b0b719d547716951e98539 100644
--- a/index.html
+++ b/index.html
@@ -125,7 +125,7 @@
             vec4 neighborIndices = texture2D(u_meta, scaledFragCoord);
             vec2 meta = texture2D(u_meta, scaledFragCoord).xy;
 
-            for (int j=0;j<100;j++){//for all beams
+            for (int j=0;j<100;j++){//for all beams (up to 100, had to put a const int in here)
                 if (j >= int(meta[1])) break;
 
                 float beamIndex1D = meta[0]+float(j);
@@ -201,30 +201,31 @@
     </div>
     <br/><br/>
     <div class="dynamicSim">
-        Dynamic Sim Settings:<br/>
+        <div class="paddingBottom">Dynamic Sim Settings:</div>
         <div class="indent">
             <div class="sliderContainer">
                 <span class="label-slider">Damping : </span><div id="damping"  class="flat-slider ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"></div><br/>
             </div>
-            <a href="#" id="resetDynamicSim" class="btn btn-lg btn-default">Replay Dynamic Simulation</a>
+            <a href="#" id="resetDynamicSim" class="paddingBottom btn btn-lg btn-default">Replay Dynamic Simulation</a>
+            <div>&Delta; t = <span id="deltaT"></span> seconds</div>
         </div>
     </div>
     <div id="extraSpace"></div>
 </div>
 <div id="controls">
     <a href="#" id="about" class="btn btn-lg btn-default">About</a><br/><br/>
-    <!--<div class="sliderInput" id="density">-->
-        <!--<span class="label-slider">Density : </span><div class="flat-slider ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"></div>-->
-        <!--<input value="" placeholder="" class="form-control int" type="text">-->
-    <!--</div>-->
-    <!--<div class="sliderInput" id="width">-->
-        <!--<span class="label-slider">Width (m) : </span><div class="flat-slider ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"></div>-->
-        <!--<input value="" placeholder="" class="form-control int" type="text">-->
-    <!--</div>-->
-    <!--<div class="sliderInput" id="length">-->
-        <!--<span class="label-slider">Length (m) : </span><div class="flat-slider ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"></div>-->
-        <!--<input value="" placeholder="" class="form-control int" type="text">-->
-    <!--</div>-->
+    <div class="sliderInput" id="axialStiffness">
+        <span class="label-slider">Axial Stiffness : </span><div class="flat-slider ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"></div>
+        <input value="" placeholder="" class="form-control int" type="text">
+    </div>
+    <div class="sliderInput" id="creaseStiffness">
+        <span class="label-slider">Crease Stiffness : </span><div class="flat-slider ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"></div>
+        <input value="" placeholder="" class="form-control int" type="text">
+    </div>
+    <div class="sliderInput" id="panelStiffness">
+        <span class="label-slider">Panel Stiffness : </span><div class="flat-slider ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"></div>
+        <input value="" placeholder="" class="form-control int" type="text">
+    </div>
     <!--<a href="#" id="addRemoveFixed" class="btn btn-lg btn-default">Add/Remove Fixed Constraint</a>-->
     <!--<span class="titleSpan">Available Materials:</span>-->
     <!--<div id="materialTypes" class="indent">-->
diff --git a/js/controls.js b/js/controls.js
index 46c93d389894f862f276751bcff3c3b6a10c6481..9518af6ee7b66f3405384ae9b9c3404016538a51 100644
--- a/js/controls.js
+++ b/js/controls.js
@@ -36,10 +36,32 @@ function initControls(globals){
         globals.schematicVisible = val;
     });
 
-    setSlider("#damping", globals.percentDamping, 0.01, 1, 0.01, function(val){
+    setSliderInput("#axialStiffness", globals.axialStiffness, 1, 1000, 1, function(val){
+        globals.axialStiffness = val;
+        globals.dynamicModel.updateMaterials();
+    });
+
+    setSliderInput("#creaseStiffness", globals.creaseStiffness, 1, 1000, 1, function(val){
+        globals.creaseStiffness = val;
+    });
+
+    setSliderInput("#panelStiffness", globals.panelStiffness, 1, 1000, 1, function(val){
+        globals.panelStiffness = val;
+    });
+
+    setSlider("#damping", globals.percentDamping, 0, 1, 0.01, function(val){
         globals.percentDamping = val;
     }, function(){
-        // globals.resetSimFromInitialState();
+        globals.dynamicModel.updateMaterials();
+        globals.dynamicModel.reset();
+    });
+
+    function setDeltaT(val){
+        $("#deltaT").html(val.toFixed(4));
+    }
+
+    setLink("#resetDynamicSim", function(){
+        globals.dynamicModel.reset();
     });
 
     function setButtonGroup(id, callback){
@@ -200,7 +222,8 @@ function initControls(globals){
     }
 
     return {
-        update:update
+        update:update,
+        setDeltaT: setDeltaT
     }
 }
 
diff --git a/js/dynamicModel.js b/js/dynamicModel.js
index 786368d60191da97eb2418208e6739af744e1430..c5b1469666e3431ea85070e677bb6b7e066d320c 100644
--- a/js/dynamicModel.js
+++ b/js/dynamicModel.js
@@ -65,16 +65,6 @@ function initDynamicModel(globals){
         object3D.visible = state;
     }
 
-    function setSelfWeight(){
-        // console.log(nodes[0].getSelfWeight().length());
-        for (var i=0;i<nodes.length;i++){
-            var node = nodes[i];
-            if (globals.applySelfWeight) globals.schematic.forces[i].setSelfWeight(node.getSelfWeight());
-            else globals.schematic.forces[i].setSelfWeight(new THREE.Vector3(0,0,0));
-        }
-        globals.forceArrayUpdated();
-    }
-
     function solveStep(){
 
         if (globals.forceHasChanged){
@@ -85,9 +75,9 @@ function initDynamicModel(globals){
             updateFixed();
             globals.fixedHasChanged = false;
         }
-        if (globals.dynamicSimMaterialsChanged){
+        if (globals.materialHasChanged){
             updateMaterials();
-            globals.dynamicSimMaterialsChanged = false;
+            globals.materialHasChanged = false;
         }
         if (globals.shouldResetDynamicSim){
             reset();
@@ -149,6 +139,7 @@ function initDynamicModel(globals){
         globals.gpuMath.setUniformForProgram("velocityCalc", "u_dt", dt, "1f");
         globals.gpuMath.setProgram("positionCalc");
         globals.gpuMath.setUniformForProgram("positionCalc", "u_dt", dt, "1f");
+        globals.controls.setDeltaT(dt);
         return numSteps;
     }
 
@@ -160,12 +151,6 @@ function initDynamicModel(globals){
         return (1/(2*Math.PI*maxFreqNat))*0.5;//half of max delta t for good measure
     }
 
-    function updateTextures(gpuMath){
-        gpuMath.initTextureFromData("u_originalPosition", textureDim, textureDim, "FLOAT", originalPosition, true);
-        gpuMath.initTextureFromData("u_meta", textureDim, textureDim, "FLOAT", meta, true);
-        reset();
-    }
-
     function initTexturesAndPrograms(gpuMath){
 
         var vertexShader = document.getElementById("vertexShader").text;
@@ -222,7 +207,7 @@ function initDynamicModel(globals){
         return 0;
     }
 
-    function updateMaterials(){
+    function updateMaterials(shouldUpdateLength){
         var index = 0;
         for (var i=0;i<nodes.length;i++){
             meta[4*i] = index;
@@ -231,7 +216,7 @@ function initDynamicModel(globals){
                 var beam = nodes[i].beams[j];
                 beamMeta[4*index] = beam.getK();
                 beamMeta[4*index+1] = beam.getD();
-                beamMeta[4*index+2] = beam.getLength();
+                if (shouldUpdateLength) beamMeta[4*index+2] = beam.getLength();
                 beamMeta[4*index+3] = beam.getOtherNode(nodes[i]).getIndex();
                 index+=1;
             }
@@ -297,7 +282,7 @@ function initDynamicModel(globals){
         });
 
         updateOriginalPosition();
-        updateMaterials();
+        updateMaterials(true);
         updateFixed();
         updateExternalForces();
     }
@@ -311,6 +296,8 @@ function initDynamicModel(globals){
         getChildren: getChildren,
         setViewMode: setViewMode,
         syncNodesAndEdges: syncNodesAndEdges,
-        updateOriginalPosition: updateOriginalPosition
+        updateOriginalPosition: updateOriginalPosition,
+        updateMaterials:updateMaterials,
+        reset: reset
     }
 }
\ No newline at end of file
diff --git a/js/globals.js b/js/globals.js
index 3e74fc094828f3bf21fe627ae15962fbfea8cd1f..28fc080c2e4ab58e1bfef47cb14e02ca6ca0dbf8 100644
--- a/js/globals.js
+++ b/js/globals.js
@@ -7,6 +7,12 @@ function initGlobals(){
 
     var _globals = {
 
+        //flags
+        fixedHasChanged: false,
+        forceHasChanged: false,
+        materialHasChanged: false,
+        shouldResetDynamicSim: false,
+
         //3d vis
         dynamicSimVisible: true,
         staticSimVisible: false,
diff --git a/main.css b/main.css
index aa80c9d46c782428153f6e09f030739f1642c922..4df3f0f475292e814be80766fe94a38903076c4c 100644
--- a/main.css
+++ b/main.css
@@ -249,7 +249,7 @@ span.modal-close{
 }
 
 .sliderInput>.flat-slider{
-   width: 162px;
+   width: 132px;
 }
 
 .label-slider{
@@ -281,6 +281,6 @@ span.modal-close{
     text-align: left;
 }
 
-#paddingBottom{
-    margin-bottom: 50px;
+.paddingBottom{
+    margin-bottom: 20px;
 }