diff --git a/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.c b/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.c
index 94d363f9ec6b53ee52cbf35bdd0814fc156d69e6..cdce70071e049e28cb9237a82f39214f04327ce3 100644
--- a/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.c
+++ b/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.c
@@ -84,7 +84,7 @@ int main(void)
 				}
 
 				if (MS_Host_ConfigurePipes(&FlashDisk_MS_Interface,
-				                            ConfigDescriptorSize, ConfigDescriptorData) != MS_ENUMERROR_NoError)
+				                           ConfigDescriptorSize, ConfigDescriptorData) != MS_ENUMERROR_NoError)
 				{
 					printf("Attached Device Not a Valid Mass Storage Device.\r\n");
 					LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
diff --git a/Projects/Incomplete/StandaloneProgrammer/DiskDevice.c b/Projects/Incomplete/StandaloneProgrammer/DiskDevice.c
index 104893a937ec4ba78c4899a2066ebcbb0762f88d..2bb27bd554f82495d5bf6b8e944cac91d44df62c 100644
--- a/Projects/Incomplete/StandaloneProgrammer/DiskDevice.c
+++ b/Projects/Incomplete/StandaloneProgrammer/DiskDevice.c
@@ -77,8 +77,6 @@ void EVENT_USB_Device_ConfigurationChanged(void)
 
 	if (!(MS_Device_ConfigureEndpoints(&DiskDevice_MS_Interface)))
 	  LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-	
-	pf_mount(&DiskFATState);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
diff --git a/Projects/Incomplete/StandaloneProgrammer/DiskHost.c b/Projects/Incomplete/StandaloneProgrammer/DiskHost.c
index c55414179f1252ddbf3d5af135748493d334d70a..8e518209932d06b57edb248e5723e4852cbab3ba 100644
--- a/Projects/Incomplete/StandaloneProgrammer/DiskHost.c
+++ b/Projects/Incomplete/StandaloneProgrammer/DiskHost.c
@@ -59,16 +59,14 @@ void DiskHost_USBTask(void)
 		if (USB_Host_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData,
 											   sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful)
 		{
-			printf("ERROR - GetConfig\r\n");
 			LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 			USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 			return;
 		}
 
 		if (MS_Host_ConfigurePipes(&DiskHost_MS_Interface,
-									ConfigDescriptorSize, ConfigDescriptorData) != MS_ENUMERROR_NoError)
+		                           ConfigDescriptorSize, ConfigDescriptorData) != MS_ENUMERROR_NoError)
 		{
-			printf("ERROR - Pipes\r\n");
 			LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 			USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 			return;
@@ -76,16 +74,16 @@ void DiskHost_USBTask(void)
 		
 		if (USB_Host_SetDeviceConfiguration(1) != HOST_SENDCONTROL_Successful)
 		{
-			printf("ERROR - SetConfig\r\n");
 			LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 			USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 			return;
 		}
-
+		
+		USB_HostState = HOST_STATE_Configured;
+		
 		uint8_t MaxLUNIndex;
 		if (MS_Host_GetMaxLUN(&DiskHost_MS_Interface, &MaxLUNIndex))
 		{
-			printf("ERROR - MaxLUN\r\n");
 			LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 			USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 			return;
@@ -93,7 +91,6 @@ void DiskHost_USBTask(void)
 		
 		if (MS_Host_ResetMSInterface(&DiskHost_MS_Interface))
 		{
-			printf("ERROR - ResetMS\r\n");
 			LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 			USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 			return;
@@ -102,7 +99,6 @@ void DiskHost_USBTask(void)
 		SCSI_Request_Sense_Response_t SenseData;
 		if (MS_Host_RequestSense(&DiskHost_MS_Interface, 0, &SenseData) != 0)
 		{
-			printf("ERROR - Sense\r\n");
 			LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
 			USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 			return;
@@ -111,7 +107,6 @@ void DiskHost_USBTask(void)
 		pf_mount(&DiskFATState);
 		
 		LEDs_SetAllLEDs(LEDMASK_USB_READY);
-		USB_HostState = HOST_STATE_Configured;
 	}
 
 	MS_Host_USBTask(&DiskHost_MS_Interface);		
diff --git a/Projects/Incomplete/StandaloneProgrammer/Lib/PetiteFATFs/diskio.c b/Projects/Incomplete/StandaloneProgrammer/Lib/PetiteFATFs/diskio.c
index b40adf1d8bc5fd867cdd69113c735dd5a97862c1..d46d9b969aeb1149bd280376fba4daf4bde309d7 100644
--- a/Projects/Incomplete/StandaloneProgrammer/Lib/PetiteFATFs/diskio.c
+++ b/Projects/Incomplete/StandaloneProgrammer/Lib/PetiteFATFs/diskio.c
@@ -42,7 +42,7 @@ DRESULT disk_readp (
 		else if (MS_Host_ReadDeviceBlocks(&DiskHost_MS_Interface, 0, sector, 1, 512, BlockTemp))
 		  ErrorCode = RES_ERROR;
 
-		printf("BLOCK READ #%lu Ret %d\r\n", sector, MS_Host_ReadDeviceBlocks(&DiskHost_MS_Interface, 0, sector, 1, 512, BlockTemp));
+		MS_Host_ReadDeviceBlocks(&DiskHost_MS_Interface, 0, sector, 1, 512, BlockTemp);
 		#endif
 	}
 	else
diff --git a/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.c b/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.c
index e8a863f54d7f93802708a6c5b8c7307f625687eb..5d86523660be84432273cd69e9a593c1c17ced35 100644
--- a/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.c
+++ b/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.c
@@ -57,6 +57,16 @@ static int Disk_getchar(FILE* Stream)
 	return (ByteWasRead ? ReadByte : _FDEV_EOF);
 }
 
+#if defined(USB_CAN_BE_BOTH)
+/** Event to handle mode changes in the library, to clear the FAT library's drive state structure when transitioning
+ *  between modes. This ensures that the library always works with current disk data.
+ */
+void EVENT_USB_UIDChange(void)
+{
+	pf_mount(&DiskFATState);
+}
+#endif
+
 /** Task to determine if the user is wishes to start the programming sequence, and if so executes the 
  *  required functions to program the attached target (if any) with the files loaded to the dataflash.
  */
diff --git a/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.h b/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.h
index 698070af1696eeaf78de8c233391ee27c3601d22..744ad01bf695b8b6a467362384b13c717662bd0c 100644
--- a/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.h
+++ b/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.h
@@ -79,6 +79,8 @@
 			static int Disk_getchar(FILE* Stream);
 		#endif
 		
+		void EVENT_USB_UIDChange(void);
+		
 		void SetupHardware(void);
 		void Programmer_Task(void);