 	// Debug Mode
 	//eClipMode = EEMODE_SYNCPULSE;
 	//eRGBMode  = RGBMODE_SCREEN;
-	detectModeChange( 1 );
+	detectAndSetModeChange( -1 );   // -1 == set nothing, blink code; 0 = set nothing, wait for button; >0 == set mode to supplied mode
 
 	// Wait for a random time so that not all clips zero their motor at the same time.
 	randomSeed(analogRead(PIN_RND));

 * This will wait for a pulse, and then display colour and height changes
 * as appropriate.
 */
void loopSerialMode() {
	
	// Static variables for the serial mode.
	static bool flippedRead = false;						// Are we reading in "inverted" LDR mode (ie. LDR1 <> LDR2).
	static unsigned int bitsSeen = 0;						// The number of valid bits read.
	static unsigned char cmdBuffer[3] = { 0, 0, 0 };		// The command buffer.
	static int oldState = 0;								// The last 'state' symbol read by the LDR: SYMB_ZERO, SYMB_LOW, SYMB_HIGH
	#ifdef SSMODE_8BIT
	static uint16_t bSerialBuffer = 0x00;					// The buffer to write serial commands into. 16 bit (we need space for frame headers, parity, etc).

 * Press SWBOT to change mode. Cycle through the modes every 1 second.
 * @param skip Set to 1 to emulate SWBOT being pressed.
 */
void detectAndSetModeChange( int skipToMode ) {
	
	// If SWBOT is not pressed, skip out.
	if( digitalRead(PIN_SWBOT) == HIGH && skipToMode == 0 )
		return;
	
	// While we are still holding SWBOT down.
	while( skipToMode == 0 && digitalRead(PIN_SWBOT) == LOW )
	{
		// Swap mode.
		switch( eClipMode )
