     shake();
   }
 
+  //check for rollovers
+  if(timePassed > millis()){
+    timePassed = millis();
+  }
+
 if(millis() - timePassed >= 1000){
     changeVal = getMarkovSpeed(changeVal);
     markovShakeState = markovState(10, 20);
 
-
     if(random(101) < 6){
       delay(markovPause());
 
     }
 
-
     if(random(1001) <= 5){
       sleep(5, 10);
-
-    }
-
-    else if(random(6001) < 10){
+    }
+
+    else if(random(3001) < 10){
       sleep(1800, 2400); //sleep between 30 and 40 minutes
     }
     timePassed = millis();

    panTilt.updateAngles();

    delay(50);
//    attachInterrupt(0, wake, RISING);

    panTilt.detach();
    while(!mSwitch.switchState()){

    laser.fire(1);

  }

  randomSeed(analogRead(0));
  static unsigned long timePassed;
  static int changeVal;
