    HardwareBegin();        //initialize Ringo's brain to work with his circuitry
    SwitchButtonToPixels(); //set shared line to control NeoPixel lights
    PlayStartChirp();       //Play startup chirp and blink eyes
-   SwitchMotorsToSerial(); //Call before using Serial.print functions as motors & serial share a line
    RestartTimer();
+   delay(1000);
+   NavigationBegin();
 
    GetInitialLightValue();
 
-  Serial.println("Setup Done");
+   printString("Setup Done");
 } //setup
 
 void loop()
 { 
-   delay(LIGHT_SENSE_DELAY);
-
-   //PlayLeftTune();
-   //PlayRightTune();
-
-   LightsOn();
+   LoopCounter++;
+  // delay(LIGHT_SENSE_DELAY);
+
+   LightsOnLoop();
 
    digitalWrite(Source_Select, HIGH); //This selects the top light sensors
-   GetLightSensors();
-
-   printValue("Light Sensor = ", LightSensorValue);
+   GetRearLightSensors();
+
+   printValue("Rear Light Sensor = ", LightSensorValue);
 
    HeadLightsOn(LightSensorValue);
+   FollowLight();
    
-   Serial.println("Loop Done");
+   printString("Loop Done");
 } // loop

      OffPixel(pixel);
      delay(PIXEL_DELAY);
  }
} // LightsOn

void HeadLightsOn(int averageLightValue) 
{

void PlayLeftTune()
{
   PlaySweep(4000, 1000, 330);
   //OffChirp();
} // PlayLeftTune

void printValue(char * label,int value) {
   //SwitchMotorsToSerial(); //Call before using Serial.print functions as motors & serial share a line
   Serial.print(LoopCounter);
   Serial.print(": ");
   Serial.print(label);
   Serial.println(value);
} // printValue

void printString(char * label) {
   //SwitchMotorsToSerial(); //Call before using Serial.print functions as motors & serial share a line
   Serial.print(LoopCounter);
   Serial.print(": ");
   Serial.println(label);
} // printValue

void setup()
{
   Serial.begin(57600);
