   	while(!foundFlame && digitalRead(flame_sensor)) {
 		naviguessMaze(0.3);
 		// Serial.println(getAngle());
-       // ultrasonicCheck();
-	   // ultrasonicArrayCheck();
+       // ultrasonicCheck();
+	   ultrasonicArrayCheck();
       // drivetrainCheck();
       
-//      if (!pidEnabled) {
-//        pidEnabled = true;
-//        resetGyro('z');
-//      }
-//      hDrive(0.5, getPidOutput(), 0.0);   // Correctional driving
-//      Serial.println(getPidOutput());
-
+		// hDrive(0.3, 0.0, 0.0);
   	}
 	
   	foundFlame = true;
-  	// digitalWrite(FLAME_LED, foundFlame);
+  	// digitalWrite(FLAME_LED, foundFlame);
 	digitalWrite(FLAME_LED, true);
-  	hDrive(0.0, 0.0, 0.0);
-	
-	while (true) {
-		pulseFan();
-		digitalWrite(FLAME_LED, !digitalRead(flame_sensor));
-	}
+  	hDrive(0.0, 0.0, 0.0);
+
+  fan_motor.set(1.0);
+  
+  	while (true) {
+  //		pulseFan();
+      if (frontUltrasonic.getDistance() > 3) {
+          hDrive(0.3, 0.0, 0.0);
+          delay(200);
+          hDrive(0.0, 0.0, 0.0);
+          delay(400);
+      }
+  		digitalWrite(FLAME_LED, !digitalRead(flame_sensor));
+  	}
   } else{
     digitalWrite(SOUND_LED, LOW);
     firstStart = false;

void resetGyro(char axis) {
  switch (axis) {
    case 'x':
      gyroResetValX += getAngle('x');
      break;
    case 'y':
      gyroResetValY += getAngle('y');
      break;
    case 'z':
      gyroResetValZ += getAngle('z');
      break;
  }
}

		}
	} else if (leftTriggered && !frontTriggered) {
		// hDrive(swagSpeed - 0.2, -swagSpeed, 0.0);
		turnToAngle(1, -swagSpeed);
	} else if (rightTriggered && !frontTriggered) {
		//hDrive(swagSpeed - 0.2, swagSpeed , 0.0);
		turnToAngle(-1, swagSpeed);
	} else if (frontTriggered && !rightTriggered & !leftTriggered){
		hDrive(-swagSpeed, 0.0, 0.0);
		delay(50);
