     }
 }
 
+// Transitions to each state.
+// Does not include Braking and Backing up.
 void Transition(State state)
 {
     switch (state)
     {
     case SEEKING_SERVER:
         TMRArd_InitTimer(SEEKING_TIMER, SEEKING_TIME);
-        SwitchSpin(true);
+        SwitchSpin();
         time = millis();
         isSeekingLine = true;
         break;
+
+    case SEEKING_EXCHANGE_2:
+        TMRArd_InitTimer(SEEKING_TIMER, SEEKING_TIME);
+        SwitchSpin();
+        time = millis();
+        isSeekingLine = true;
+        break;
+
     case TRAVELLING_TO_SERVER:
         drivetrain.GoForward(DRIVE_RATE);
         TMRArd_InitTimer(TRAVELLING_TIMER, TRAVELLING_TIME);

        drivetrain.GoBackward(DRIVE_RATE);
        TMRArd_InitTimer(TRAVELLING_TIMER, TRAVELLING_TIME * 4);
        break;
    default: break;
    }
}

                Transition(ALIGNING_WITH_SERVER);
            }
        }
        // hit a wall, back up and try again
        else if (bumpers.IsFrontPressed())
        {
            currState = BACKING_UP;
            returnToState = SEEKING_SERVER;
            Backup(1.5, BACKWARD);
        }
        // went a long time without seeing anything. Try again.
        else if (TMRArd_IsTimerExpired(TRAVELLING_TIMER) && !serverBeacon.IsFacingBeacon())
        {
            TMRArd_ClearTimerExpired(TRAVELLING_TIMER);
