diff --git a/arduino_code/test_asyncbuttons.ino b/arduino_code/test_asyncbuttons.ino
new file mode 100644
index 0000000000000000000000000000000000000000..8731fc019ab3b089612eecf9aeb909c92f72136e
--- /dev/null
+++ b/arduino_code/test_asyncbuttons.ino
@@ -0,0 +1,119 @@
+// Importing necessary libraries
+#include <WiFi.h>
+#include <AsyncTCP.h>
+#include <ESPAsyncWebServer.h>
+
+// Setting network credentials
+const char* ssid = "Connectify-ESP32 Boot";
+const char* password = "temp_pass1234";
+
+const char* input_parameter1 = "output";
+const char* input_parameter2 = "state";
+
+// Creating a AsyncWebServer object 
+AsyncWebServer server(80);
+
+
+const char index_html[] PROGMEM = R"rawliteral(
+<!DOCTYPE HTML><html>
+<head>
+  <title>ESP32 WEB SERVER</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link rel="icon" href="data:,">
+  <style>
+    html {font-family: Arial; display: inline-block; text-align: center;}
+    p {font-size: 3.0rem;}
+    body {max-width: 600px; margin:0px auto; padding-bottom: 25px;}
+    .switch {position: relative; display: inline-block; width: 120px; height: 68px} 
+    .switch input {display: none}
+    .slider {position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; border-radius: 6px}
+    .slider:before {position: absolute; content: ""; height: 52px; width: 52px; left: 8px; bottom: 8px; background-color: #fff; -webkit-transition: .4s; transition: .4s; border-radius: 3px}
+    input:checked+.slider {background-color: #b30000}
+    input:checked+.slider:before {-webkit-transform: translateX(52px); -ms-transform: translateX(52px); transform: translateX(52px)}
+  </style>
+</head>
+<body>
+  <h2>ESP32 WEB SERVER</h2>
+  %BUTTONPLACEHOLDER%
+<script>function toggleCheckbox(element) {
+  var xhr = new XMLHttpRequest();
+  if(element.checked){ xhr.open("GET", "/update?output="+element.id+"&state=1", true); }
+  else { xhr.open("GET", "/update?output="+element.id+"&state=0", true); }
+  xhr.send();
+}
+</script>
+</body>
+</html>
+)rawliteral";
+
+// Replaces placeholder with button section in your web page
+String processor(const String& var){
+  //Serial.println(var);
+  if(var == "BUTTONPLACEHOLDER"){
+    String buttons = "";
+    buttons += "<h4>Output - GPIO 2</h4><label class=\"switch\"><input type=\"checkbox\" onchange=\"toggleCheckbox(this)\" id=\"2\" " + outputState(2) + "><span class=\"slider\"></span></label>";
+    return buttons;
+  }
+  return String();
+}
+
+String outputState(int output){
+  if(digitalRead(output)){
+    return "checked";
+  }
+  else {
+    return "";
+  }
+}
+
+void setup(){
+  // Serial port for debugging purposes
+  Serial.begin(115200);
+
+pinMode(2,OUTPUT);
+digitalWrite(2, LOW);
+
+  
+  // Connect to Wi-Fi
+  WiFi.begin(ssid, password);
+  while (WiFi.status() != WL_CONNECTED) {
+    delay(1000);
+    Serial.println("Connecting to WiFi");
+  }
+
+  // Print ESP Local IP Address
+  Serial.println(WiFi.localIP());
+
+  // Route for root / web page
+  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
+    request->send_P(200, "text/html", index_html, processor);
+  });
+
+  // Send a GET request to <ESP_IP>/update?output=<inputMessage1>&state=<inputMessage2>
+  server.on("/update", HTTP_GET, [] (AsyncWebServerRequest *request) {
+    String inputMessage1;
+    String inputMessage2;
+    // GET input1 value on <ESP_IP>/update?output=<inputMessage1>&state=<inputMessage2>
+    if (request->hasParam(input_parameter1) && request->hasParam(input_parameter2)) {
+      inputMessage1 = request->getParam(input_parameter1)->value();
+      inputMessage2 = request->getParam(input_parameter2)->value();
+      digitalWrite(inputMessage1.toInt(), inputMessage2.toInt());
+    }
+    else {
+      inputMessage1 = "No message sent";
+      inputMessage2 = "No message sent";
+    }
+    Serial.print("GPIO: ");
+    Serial.print(inputMessage1);
+    Serial.print(" - Set to: ");
+    Serial.println(inputMessage2);
+    request->send(200, "text/plain", "OK");
+  });
+
+  // Start server
+  server.begin();
+}
+
+void loop() {
+
+}
\ No newline at end of file
diff --git a/arduino_code/test_webpage_sensors.ino b/arduino_code/test_webpage_sensors.ino
index eb54e3146643ed54c9b66cb694b855694aad5697..4bb1bc21d52d129376a8c756d965297e82a56693 100644
--- a/arduino_code/test_webpage_sensors.ino
+++ b/arduino_code/test_webpage_sensors.ino
@@ -8,25 +8,34 @@
 #include <WiFi.h>
 #include <ESPAsyncWebServer.h>
 #include <AsyncTCP.h>
+#include <Stepper.h>
 
 // Replace with your network credentials
 const char* ssid = "Connectify-ESP32 Boot";
 const char* password = "temp_pass1234";
 
+const char* input_parameter1 = "output";
+const char* input_parameter2 = "state";
+
 #define PRESSUREPIN1 34
 #define PRESSUREPIN2 35
-#define motorIN1
-#define motorIN2
-#define motorIN3
-#define motorIN4
+#define motorIN1 33
+#define motorIN2 32
+#define motorIN3 26
+#define motorIN4 27
+
+#define PRESSURE1GOAL 1000
+#define PRESSURE2GOAL 2034
 
-#define PRESSUREGOAL1 357
-#define PRESSUREGOAL2 2034
+Stepper motor(200, motorIN1, motorIN2, motorIN3, motorIN4);
 
 // current temperature & humidity, updated in loop()
 int pressure1 = 0.0;
 int pressure2 = 0.0;
-float motorSpeed = 0.0;
+float motor1Speed = 0.0;
+String pressure1status = "NOT YET...";
+String pressure2status = "NOT YET...";
+String motor1status = "Not running";
 
 // Create AsyncWebServer object on port 80
 AsyncWebServer server(80);
@@ -53,33 +62,59 @@ const char index_html[] PROGMEM = R"rawliteral(
     h2 { font-size: 3.0rem; }
     p { font-size: 3.0rem; }
     .units { font-size: 1.2rem; }
-    .dht-labels{
+    .sensorlabel{
       font-size: 1.5rem;
-      vertical-align:middle;
+      vertical-align:center;
       padding-bottom: 15px;
     }
+    .statuslabel { font-size: 1.3rem; }
+    button2 {background-color: #555555;}
+    body {max-width: 600px; margin:0px auto; padding-bottom: 25px;}
+    .switch {position: relative; display: inline-block; width: 120px; height: 68px} 
+    .switch input {display: none}
+    .slider {position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; border-radius: 6px}
+    .slider:before {position: absolute; content: ""; height: 52px; width: 52px; left: 8px; bottom: 8px; background-color: #fff; -webkit-transition: .4s; transition: .4s; border-radius: 3px}
+    input:checked+.slider {background-color: #b30000}
+    input:checked+.slider:before {-webkit-transform: translateX(52px); -ms-transform: translateX(52px); transform: translateX(52px)}
   </style>
 </head>
 <body>
   <h2>Remotely Adjustable Boot</h2>
   <p>
-    <i class="fas fa-thermometer-half" style="color:#059e8a;"></i> 
-    <span class="dht-labels">Pressure LEFT</span> 
+    <i class="fas fa-thermometer-half" style="color:#4a32a8;"></i> 
+    <span class="sensorlabel">Pressure LEFT</span> 
+    <br>
     <span id="pressure1">%PRESSURE1%</span>
     <sup class="units">mmHg</sup>
   </p>
   <p>
-    <i class="fas fa-thermometer-half" style="color:#059e8a;"></i> 
-    <span class="dht-labels">Pressure RIGHT</span> 
+    <span class="sensorlabel">Status:</span>
+    <span id="pressure1status" class="statuslabel">%PRESSURE1STATUS%</span>
+  </p>
+  <p>
+    <i class="fas fa-thermometer-half" style="color:#4a32a8;"></i> 
+    <span class="sensorlabel">Pressure RIGHT</span> 
     <span id="pressure2">%PRESSURE2%</span>
     <sup class="units">mmHg</sup>
   </p>
   <p>
-    <i class="fas fa-tint" style="color:#00add6;"></i> 
-    <span class="dht-labels">Motor Speed</span>
-    <span id="motorspeed">%MOTORSPEED%</span>
-    <sup class="units">%</sup>
+    <span class="sensorlabel">Status:</span>
+    <span id="pressure2status" class="statuslabel">%PRESSURE2STATUS%</span>
   </p>
+  <p>
+    <i class="fas fa-wrench" style="color:#4a32a8;"></i> 
+    <span class="sensorlabel">Motor Status</span>
+    <span id="motor1status">%MOTOR1STATUS%</span>
+    <sup class="units">torque</sup>
+  </p>
+  %BUTTONPLACEHOLDER%
+  <script>function toggleCheckbox(element) {
+    var xhr = new XMLHttpRequest();
+    if(element.checked){ xhr.open("GET", "/update?output="+element.id+"&state=1", true); }
+    else { xhr.open("GET", "/update?output="+element.id+"&state=0", true); }
+    xhr.send();
+  }
+  </script>
 </body>
 <script>
 setInterval(function ( ) {
@@ -93,6 +128,17 @@ setInterval(function ( ) {
   xhttp.send();
 }, 0.1 ) ;
 
+setInterval(function ( ) {
+  var xhttp = new XMLHttpRequest();
+  xhttp.onreadystatechange = function() {
+    if (this.readyState == 4 && this.status == 200) {
+      document.getElementById("pressure1status").innerHTML = this.responseText;
+    }
+  };
+  xhttp.open("GET", "/pressure1status", true);
+  xhttp.send();
+}, 0.1 ) ;
+
 setInterval(function ( ) {
   var xhttp = new XMLHttpRequest();
   xhttp.onreadystatechange = function() {
@@ -104,31 +150,62 @@ setInterval(function ( ) {
   xhttp.send();
 }, 0.1 ) ;
 
+setInterval(function ( ) {
+  var xhttp = new XMLHttpRequest();
+  xhttp.onreadystatechange = function() {
+    if (this.readyState == 4 && this.status == 200) {
+      document.getElementById("pressure2status").innerHTML = this.responseText;
+    }
+  };
+  xhttp.open("GET", "/pressure2status", true);
+  xhttp.send();
+}, 0.1 ) ;
 
 setInterval(function ( ) {
   var xhttp = new XMLHttpRequest();
   xhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
-      document.getElementById("motorspeed").innerHTML = this.responseText;
+      document.getElementById("motor1status").innerHTML = this.responseText;
     }
   };
-  xhttp.open("GET", "/motorspeed", true);
+  xhttp.open("GET", "/motor1status", true);
   xhttp.send();
 }, 0.1 ) ;
 </script>
 </html>)rawliteral";
 
+String outputState(int output){
+  if(digitalRead(output)){
+    return "checked";
+  }
+  else {
+    return "";
+  }
+}
+
 // Replaces placeholder with DHT values
 String processor(const String& var){
   //Serial.println(var);
   if(var == "PRESSURE1"){
     return String(pressure1);
   }
+  else if (var == "PRESSURE1STATUS"){
+    return String(pressure1status);
+  }
   else if(var == "PRESSURE2"){
     return String(pressure2);
   }
-  else if(var == "MOTORSPEED"){
-    return String(motorSpeed);
+  else if (var == "PRESSURE2STATUS"){
+    return String(pressure2status);
+  }
+  else if(var == "MOTOR1STATUS"){
+    return String(motor1status);
+  }
+  else if(var == "BUTTONPLACEHOLDER"){
+    String buttons = "";
+    buttons += "<h4>Output - GPIO 2</h4><label class=\"switch\"><input type=\"checkbox\" onchange=\"toggleCheckbox(this)\" id=\"2\" " + outputState(2) + "><span class=\"slider\"></span></label>";
+
+    return buttons;
   }
   return String();
 }
@@ -155,18 +232,46 @@ void setup(){
   server.on("/pressure1", HTTP_GET, [](AsyncWebServerRequest *request){
     request->send_P(200, "text/plain", String(pressure1).c_str());
   });
+  server.on("/pressure1status", HTTP_GET, [](AsyncWebServerRequest *request){
+    request->send_P(200, "text/plain", String(pressure1status).c_str());
+  });
   server.on("/pressure2", HTTP_GET, [](AsyncWebServerRequest *request){
     request->send_P(200, "text/plain", String(pressure2).c_str());
   });
-  server.on("/motorspeed", HTTP_GET, [](AsyncWebServerRequest *request){
-    request->send_P(200, "text/plain", String(motorSpeed).c_str());
+  server.on("/pressure2status", HTTP_GET, [](AsyncWebServerRequest *request){
+    request->send_P(200, "text/plain", String(pressure2status).c_str());
+  });
+  server.on("/motor1status", HTTP_GET, [](AsyncWebServerRequest *request){
+    request->send_P(200, "text/plain", String(motor1status).c_str());
+  });
+
+  server.on("/update", HTTP_GET, [] (AsyncWebServerRequest *request) {
+    String inputMessage1;
+    String inputMessage2;
+    // GET input1 value on <ESP_IP>/update?output=<inputMessage1>&state=<inputMessage2>
+    if (request->hasParam(input_parameter1) && request->hasParam(input_parameter2)) {
+      inputMessage1 = request->getParam(input_parameter1)->value();
+      inputMessage2 = request->getParam(input_parameter2)->value();
+      digitalWrite(inputMessage1.toInt(), inputMessage2.toInt());
+    }
+    else {
+      inputMessage1 = "No message sent";
+      inputMessage2 = "No message sent";
+    }
+    Serial.print("GPIO: ");
+    Serial.print(inputMessage1);
+    Serial.print(" - Set to: ");
+    Serial.println(inputMessage2);
+    request->send(200, "text/plain", "OK");
   });
 
   // Start server
   server.begin();
+  pinMode(2, OUTPUT);
+  digitalWrite(2, LOW);
 }
  
-void loop(){  
+void loop(){
   unsigned long currentMillis = millis();
   if (currentMillis - previousMillis >= interval) {
     
@@ -187,45 +292,10 @@ void loop(){
 
       intervals2[aModulus2] += 1;
       intervalValues2[aModulus2] += int(a2 % 600);
-    
-      Serial.println("Reading #" + String(counter) + ": " + String(a1) + ", " + String(aModulus1));
-      Serial.println("Reading #" + String(counter) + ": " + String(a2) + ", " + String(aModulus2));
-    
+
       delay(10);
      }
-    
-     Serial.println("Intervals array #1: [");
-     for (int counter = 0; counter < 7; counter++) {
-      Serial.print(intervals1[counter]);
-      Serial.print(",");
-     }
-     Serial.print("]");
-    
-     Serial.println("Interval Values array #1: ");
-     for (int counter = 0; counter < 7; counter++) {
-      Serial.print(intervalValues1[counter]);
-      Serial.print(",");
-     }
-     Serial.print("]");
-    
-     Serial.println("**********");
-     
-     Serial.println("Intervals array #2: [");
-     for (int counter = 0; counter < 7; counter++) {
-      Serial.print(intervals2[counter]);
-      Serial.print(",");
-     }
-     Serial.print("]");
-    
-     Serial.println("Interval Values array #2: ");
-     for (int counter = 0; counter < 7; counter++) {
-      Serial.print(intervalValues2[counter]);
-      Serial.print(",");
-     }
-     Serial.print("]");
-    
-     Serial.println("**********");
-     
+          
      int maxIntervalSize1 = intervals1[0];
      int maxIntervalIndex1 = 0;
      for (int index = 1; index < 7; index ++) {
@@ -234,7 +304,6 @@ void loop(){
         maxIntervalSize1 = intervals1[index];
       }
      }
-     Serial.println("maxIntervalIndex #1: " + maxIntervalIndex1);
      int maxIntervalSize2 = intervals2[0];
      int maxIntervalIndex2 = 0;
      for (int index = 1; index < 7; index ++) {
@@ -243,20 +312,22 @@ void loop(){
         maxIntervalSize2 = intervals2[index];
       }
      }
-     Serial.println("maxIntervalIndex #2: " + maxIntervalIndex2);
      pressure1 = (intervalValues1[maxIntervalIndex1]/maxIntervalSize1)+ maxIntervalIndex1*600;
      pressure2 = (intervalValues2[maxIntervalIndex2]/maxIntervalSize2)+ maxIntervalIndex2*600;
-     Serial.println("adcValue #1: " + pressure1);
-     Serial.println("adcValue #2: " + pressure2);
-     Serial.println("******************************");
-    
-    float newMotorSpeed = 0;
-    if (isnan(newMotorSpeed)) {
-      Serial.println("Failed to read from DHT sensor!");
+
+    if (((float)abs(pressure1 - PRESSURE1GOAL)/(float)PRESSURE1GOAL) <= 0.15){
+      pressure1status = "LEFT GOAL REACHED";
     }
     else {
-      motorSpeed = newMotorSpeed;
-      Serial.println(motorSpeed);
+      pressure1status = "not yet...";
+    }
+
+    if (((float)abs(pressure2 - PRESSURE2GOAL)/(float)PRESSURE2GOAL) <= 0.15){
+      pressure2status = "RIGHT GOAL REACHED";
     }
+    else {
+      pressure2status = "not yet...";
+    }
+    
   }
 }
\ No newline at end of file