diff --git a/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_R.c b/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_R.c
index 43abe6e1e564bd85bc26e862723d99cb763182c0..c8bfaeb70a084b19f07909c4d8bd1a3bd5fd19fd 100644
--- a/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_R.c
+++ b/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_R.c
@@ -8,13 +8,14 @@ uint8_t TEMPLATE_FUNC_NAME (void* Buffer,
 	
 	while (Length)
 	{
-		if (Endpoint_IsSETUPReceived())
-		  return ENDPOINT_RWCSTREAM_HostAborted;
+		uint8_t USB_DeviceState_LCL = USB_DeviceState;
 
-		if (USB_DeviceState == DEVICE_STATE_Unattached)
+		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
 		  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-		else if (USB_DeviceState == DEVICE_STATE_Suspended)
+		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
 		  return ENDPOINT_RWCSTREAM_BusSuspended;
+		else if (Endpoint_IsSETUPReceived())
+		  return ENDPOINT_RWCSTREAM_HostAborted;
 		  
 		if (Endpoint_IsOUTReceived())
 		{
@@ -30,9 +31,11 @@ uint8_t TEMPLATE_FUNC_NAME (void* Buffer,
 	
 	while (!(Endpoint_IsINReady()))
 	{
-		if (USB_DeviceState == DEVICE_STATE_Unattached)
+		uint8_t USB_DeviceState_LCL = USB_DeviceState;
+
+		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
 		  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-		else if (USB_DeviceState == DEVICE_STATE_Suspended)
+		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
 		  return ENDPOINT_RWCSTREAM_BusSuspended;
 	}
 	
diff --git a/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_W.c b/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_W.c
index c9d81f3db935a8eeebb5fccfd170f9f7279a1291..0ae7febc41ef48f72ff740f58a16fa50f89f4792 100644
--- a/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_W.c
+++ b/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_W.c
@@ -11,17 +11,17 @@ uint8_t TEMPLATE_FUNC_NAME (const void* Buffer,
 
 	while (Length || LastPacketFull)
 	{
-		if (Endpoint_IsSETUPReceived())
-		  return ENDPOINT_RWCSTREAM_HostAborted;
-
-		if (Endpoint_IsOUTReceived())
-		  break;
+		uint8_t USB_DeviceState_LCL = USB_DeviceState;
 		
-		if (USB_DeviceState == DEVICE_STATE_Unattached)
+		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
 		  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-		else if (USB_DeviceState == DEVICE_STATE_Suspended)
+		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
 		  return ENDPOINT_RWCSTREAM_BusSuspended;
-		  
+		else if (Endpoint_IsSETUPReceived())
+		  return ENDPOINT_RWCSTREAM_HostAborted;
+		else if (Endpoint_IsOUTReceived())
+		  break;
+
 		if (Endpoint_IsINReady())
 		{
 			uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();
@@ -40,9 +40,11 @@ uint8_t TEMPLATE_FUNC_NAME (const void* Buffer,
 	
 	while (!(Endpoint_IsOUTReceived()))
 	{
-		if (USB_DeviceState == DEVICE_STATE_Unattached)
+		uint8_t USB_DeviceState_LCL = USB_DeviceState;
+
+		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
 		  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-		else if (USB_DeviceState == DEVICE_STATE_Suspended)
+		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
 		  return ENDPOINT_RWCSTREAM_BusSuspended;
 	}
 
diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.c b/LUFA/Drivers/USB/LowLevel/Endpoint.c
index fc54e115a356288b57cf0449de128f7cb0c5df2e..fc2bff1540c8d61bd74acdbeeaabe4e273902cce 100644
--- a/LUFA/Drivers/USB/LowLevel/Endpoint.c
+++ b/LUFA/Drivers/USB/LowLevel/Endpoint.c
@@ -115,10 +115,12 @@ uint8_t Endpoint_WaitUntilReady(void)
 			  return ENDPOINT_READYWAIT_NoError;
 		}
 		
-		if (USB_DeviceState == DEVICE_STATE_Unattached)
+		uint8_t USB_DeviceState_LCL = USB_DeviceState;
+
+		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
 		  return ENDPOINT_READYWAIT_DeviceDisconnected;
-		else if (USB_DeviceState == DEVICE_STATE_Suspended)
-		  return ENDPOINT_READYWAIT_BusSuspended;
+		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
+		  return ENDPOINT_READYWAIT_BusSuspended;		
 		else if (Endpoint_IsStalled())
 		  return ENDPOINT_READYWAIT_EndpointStalled;
 
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 805b3e1654d5667d3f574570efb9aef8fd997ae3..4aec15397cbe05df203cfe8008232384ab57e3ee 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -18,7 +18,7 @@
   *    handling of USB Start of Frame events while in USB Host mode
   *  - Added new PRNT_Host_BytesReceived(), PRNT_Host_ReceiveByte(), PRNT_Host_SendByte() and PRNT_Host_Flush() functions to the
   *    Print Host Class driver
-  *  - Added class specific descriptor type defines with standard USB-IF element naming
+  *  - Added class specific descriptor alternative struct type defines with standard USB-IF element naming
   *  - Added new project makefile template to the library and moved board driver stub files into in a new "CodeTemplates" directory
   *  - Added board hardware driver support for the Linnix UDIP development board
   *  - Added board hardware driver support for the Busware BUI development board
@@ -42,7 +42,7 @@
   *  - Changed over all demos, drivers and internal functions to use the current frame number over the Start of Frame flag where possible
   *    to free up the Start of Frame flag for interrupt use in the user application
   *  - All project makefiles now correctly clean intermediate build files from assembly and C++ sources (thanks to Daniel Czigany)
-  *  - Removed the EVENT_USB_InitFailure() event, not specifying a USB mode now defaults to UID selection mode
+  *  - Removed the EVENT_USB_InitFailure() event, not specifying a USB mode correctly now defaults to UID selection mode
   *  - Renamed and moved class driver common constant definitions to make the naming scheme more uniform
   *  - Changed default value for the reset polarity parameter in the AVRISP-MKII project so that it defaults to active low drive
   *  - Changed configuration descriptor parser for all host mode projects and class drivers to ensure better compatibility with devices
diff --git a/LUFA/ManPages/SoftwareBootloaderJump.txt b/LUFA/ManPages/SoftwareBootloaderJump.txt
index 6e7ea584ee722720bbb90613caebae8d2c9febf6..574398c8f28fcc149b75b77c27dc3b4cca50378b 100644
--- a/LUFA/ManPages/SoftwareBootloaderJump.txt
+++ b/LUFA/ManPages/SoftwareBootloaderJump.txt
@@ -35,7 +35,7 @@
  *  void Bootloader_Jump_Check(void)
  *  {
  *      // If the reset source was the bootloader and the key is correct, clear it and jump to the bootloader
- *      if ((MCUSR & (1<<WDRF)) && (Boot_Key == MAGIC_BOOT_KEY))
+ *      if ((MCUSR & (1 << WDRF)) && (Boot_Key == MAGIC_BOOT_KEY))
  *      {
  *          Boot_Key = 0;
  *          ((void (*)(void))BOOTLOADER_START_ADDRESS)(); 
diff --git a/LUFA/ManPages/WhyUseLUFA.txt b/LUFA/ManPages/WhyUseLUFA.txt
index 093a025e879a414409ef7d74aa7a12f5268f15fb..b6c93580bbd4b34136b54b576131c535a684f4b1 100644
--- a/LUFA/ManPages/WhyUseLUFA.txt
+++ b/LUFA/ManPages/WhyUseLUFA.txt
@@ -40,7 +40,7 @@
  *    into difficulties or need some advice. In addition, you can also email the library author to receive personalized
  *    support when you need it (subject to author's schedule).
  *
- *   <small>* Atmel Stack Mouse Device Demo 4292 bytes, LUFA Mouse Low Level Device Demo 3372 bytes, under identical build
+ *   <small>* Atmel Stack Mouse Device Demo 4292 bytes, LUFA Mouse Low Level Device Demo 3332 bytes, under identical build
  *   environments</small>
  */