   } else if (digitalRead(buttonPin) == LOW && laserEnabled == false) {
     inAfterStartState = false;
   }
+  checkSerial();
+}
+
+void checkSerial() {
+  static char buffer[80];
+  int len = readline(Serial.read(), buffer, 80);
+  if (len > 0) {
+    String message = buffer;
+    if (message.charAt(0) == enableKey && laserEnabled == false) {
+      enableLaser();
+      submitPower((byte)message.charAt(1));
+    } else if (message.charAt(0) == disableKey && laserEnabled == true) {
+      disableLaser();
+    } else if (message.charAt(0) == powerKey && laserEnabled == true) {
+      submitPower((byte)message.charAt(1));
+    }
+  }
 }
 
 void disableLaser() {
-  Serial.println("Disabling");
   digitalWrite(emPin, LOW);
   delay(periodMillis);
   digitalWrite(eePin, LOW);

  digitalWrite(prrPin, LOW);
  laserEnabled = false;
  digitalWrite(ledPin, LOW);
}

void enableLaser() {
  Serial.println("Enabling");
  digitalWrite(prrPin, HIGH);
  submitPower(powerLevel);
  delay(periodMillis);

const byte latchToEeMillis = 100;
const byte eeToEmMillis = 100;
const byte periodMillis = 100;
const byte latchDurationMillis = 10;

const char enableKey = 'e';
const char disableKey = 'd';
const char powerKey = 'p';

boolean laserEnabled = false;
boolean inAfterStartState = true;



void setup() {
  pinMode(adjPowerPin, OUTPUT);
