diff --git a/Bootloaders/CDC/makefile b/Bootloaders/CDC/makefile
index 87cc5c79211068c7c9b9352971d1175cd111b880..83f38089454778653de12b3b41ecfdf983eedd89 100644
--- a/Bootloaders/CDC/makefile
+++ b/Bootloaders/CDC/makefile
@@ -121,7 +121,6 @@ LUFA_PATH = ../..
 
 # LUFA library compile-time options
 LUFA_OPTS  = -D USB_DEVICE_ONLY
-LUFA_OPTS += -D USE_NONSTANDARD_DESCRIPTOR_NAMES
 LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Bootloaders/DFU/makefile b/Bootloaders/DFU/makefile
index 622290ff3ed6ba43c54f9131451f2d0050beb067..0a1e02ea2abe260039687d31b70cd75de3420109 100644
--- a/Bootloaders/DFU/makefile
+++ b/Bootloaders/DFU/makefile
@@ -121,7 +121,6 @@ LUFA_PATH = ../..
 
 # LUFA library compile-time options
 LUFA_OPTS  = -D USB_DEVICE_ONLY
-LUFA_OPTS += -D USE_NONSTANDARD_DESCRIPTOR_NAMES
 LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0
 LUFA_OPTS += -D CONTROL_ONLY_DEVICE
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=32
diff --git a/Bootloaders/TeensyHID/makefile b/Bootloaders/TeensyHID/makefile
index 15d1d9dffc9c5eb317ef7b45087b69f52f80cd5d..1eec1f9aee7d6a8693b1f47f2189dab0684f6e1e 100644
--- a/Bootloaders/TeensyHID/makefile
+++ b/Bootloaders/TeensyHID/makefile
@@ -121,7 +121,6 @@ LUFA_PATH = ../..
 
 # LUFA library compile-time options
 LUFA_OPTS  = -D USB_DEVICE_ONLY
-LUFA_OPTS += -D USE_NONSTANDARD_DESCRIPTOR_NAMES
 LUFA_OPTS += -D CONTROL_ONLY_DEVICE
 LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
diff --git a/Demos/Device/ClassDriver/AudioInput/makefile b/Demos/Device/ClassDriver/AudioInput/makefile
index d68fb10df94d46ecacfc8e2476d45d92f0823e7a..17514384efc03105449bab902f0e53de0d41ae6b 100644
--- a/Demos/Device/ClassDriver/AudioInput/makefile
+++ b/Demos/Device/ClassDriver/AudioInput/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/ClassDriver/AudioOutput/makefile b/Demos/Device/ClassDriver/AudioOutput/makefile
index 9940103e36abff0002d2b51f64a48262bb8c2c19..ec60801be8bf6412494c2ead996cc7920ebb33d3 100644
--- a/Demos/Device/ClassDriver/AudioOutput/makefile
+++ b/Demos/Device/ClassDriver/AudioOutput/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/ClassDriver/CDC/makefile b/Demos/Device/ClassDriver/CDC/makefile
index 996ec418d9bbb6fbc1bb048cde74bc88d23d7270..4aec962b9b176c4a27667c5303740926afed39c7 100644
--- a/Demos/Device/ClassDriver/CDC/makefile
+++ b/Demos/Device/ClassDriver/CDC/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/DualCDC/makefile b/Demos/Device/ClassDriver/DualCDC/makefile
index 0f2f41507471f018c18c80071d54864525cef8fa..f3750170af9a4fc0c1a6f4661b1e76f654bc55f6 100644
--- a/Demos/Device/ClassDriver/DualCDC/makefile
+++ b/Demos/Device/ClassDriver/DualCDC/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/GenericHID/makefile b/Demos/Device/ClassDriver/GenericHID/makefile
index bf5e411930a8b0eb068ddea473041aeb71e0f879..17037623aac0c395e10a54c327d36d182231ce28 100644
--- a/Demos/Device/ClassDriver/GenericHID/makefile
+++ b/Demos/Device/ClassDriver/GenericHID/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/Joystick/makefile b/Demos/Device/ClassDriver/Joystick/makefile
index 10051d70cb8f719c3ffc6f2af79b655f16d8360e..2915b97b4428b8ebe3153be18d276a24e2052805 100644
--- a/Demos/Device/ClassDriver/Joystick/makefile
+++ b/Demos/Device/ClassDriver/Joystick/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/Keyboard/makefile b/Demos/Device/ClassDriver/Keyboard/makefile
index d9e805aa0167c438a3e4af2b31ff207a7727279a..5f06d18120f9fbc533b43735575e321ea5a4b6b9 100644
--- a/Demos/Device/ClassDriver/Keyboard/makefile
+++ b/Demos/Device/ClassDriver/Keyboard/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/KeyboardMouse/makefile b/Demos/Device/ClassDriver/KeyboardMouse/makefile
index a02e34dd54a5d5817ca759c5a62e52675df0bdad..aaaa6e72e48f329ebc745032a0ba0d249590e454 100644
--- a/Demos/Device/ClassDriver/KeyboardMouse/makefile
+++ b/Demos/Device/ClassDriver/KeyboardMouse/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/MIDI/makefile b/Demos/Device/ClassDriver/MIDI/makefile
index dd150d6ce5c0d07cfa56e2c1646913395c059c52..d9a0d23a193e6b19367c7c078f066d9bc0a950aa 100644
--- a/Demos/Device/ClassDriver/MIDI/makefile
+++ b/Demos/Device/ClassDriver/MIDI/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/MassStorage/makefile b/Demos/Device/ClassDriver/MassStorage/makefile
index 34d76a977d4efde4c667f9a5879744aa70a700f2..cac929c233406612ed613b4ccbf69db9b4acbdbe 100644
--- a/Demos/Device/ClassDriver/MassStorage/makefile
+++ b/Demos/Device/ClassDriver/MassStorage/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/Mouse/makefile b/Demos/Device/ClassDriver/Mouse/makefile
index 3664e8c4d5721fbdf21a1c82b80f04309700e668..62f3a6913afdd1ecee15f1cb3b080b66528ad228 100644
--- a/Demos/Device/ClassDriver/Mouse/makefile
+++ b/Demos/Device/ClassDriver/Mouse/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/RNDISEthernet/makefile b/Demos/Device/ClassDriver/RNDISEthernet/makefile
index 84a39327a80eb59f0bc873a566a8127f1dfb2703..a2ee1d86b848d5ccadc94c3456b3ab1dad8333f1 100644
--- a/Demos/Device/ClassDriver/RNDISEthernet/makefile
+++ b/Demos/Device/ClassDriver/RNDISEthernet/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/ClassDriver/USBtoSerial/makefile b/Demos/Device/ClassDriver/USBtoSerial/makefile
index ea45d066f60bbdf5549cace46d733f715ef553d0..da62fa62016bf637cfe1fbbc2458ff5fe19b9a19 100644
--- a/Demos/Device/ClassDriver/USBtoSerial/makefile
+++ b/Demos/Device/ClassDriver/USBtoSerial/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/Incomplete/Sideshow/makefile b/Demos/Device/Incomplete/Sideshow/makefile
index 6ceafa1a75bbe539af6f6ccbeda28b56bc52fc8b..c1b38ff235fa1d724c24ab1001b7ec6b18537425 100644
--- a/Demos/Device/Incomplete/Sideshow/makefile
+++ b/Demos/Device/Incomplete/Sideshow/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/AudioInput/makefile b/Demos/Device/LowLevel/AudioInput/makefile
index 06703c0e177c7e564e36f623ab6951e22f9e591b..fa2f7bc5187b48f767dfa9cdf2c41eb2ed7f24c2 100644
--- a/Demos/Device/LowLevel/AudioInput/makefile
+++ b/Demos/Device/LowLevel/AudioInput/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/AudioOutput/makefile b/Demos/Device/LowLevel/AudioOutput/makefile
index 611472058a99dbdfd41c4a042d3fd08fd6259995..606c5b77fb1370234ccf97e891d3dffec38b5a69 100644
--- a/Demos/Device/LowLevel/AudioOutput/makefile
+++ b/Demos/Device/LowLevel/AudioOutput/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/CDC/makefile b/Demos/Device/LowLevel/CDC/makefile
index 8132582491749e94af82866241cae59b45e0d91e..f69c1caae37e38a23bace8d6f890d6d9f751108d 100644
--- a/Demos/Device/LowLevel/CDC/makefile
+++ b/Demos/Device/LowLevel/CDC/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/DualCDC/makefile b/Demos/Device/LowLevel/DualCDC/makefile
index 87c4ca8a71eb374c96f1276f0428a83006499617..629d7d57bac25bbf54ff4392c153fb466e2f2426 100644
--- a/Demos/Device/LowLevel/DualCDC/makefile
+++ b/Demos/Device/LowLevel/DualCDC/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/GenericHID/makefile b/Demos/Device/LowLevel/GenericHID/makefile
index 6f5a6e4160b25582986a6a65b7afa0f25a243edc..e1f407c0c7e9309dc5285aa841c34949466739b0 100644
--- a/Demos/Device/LowLevel/GenericHID/makefile
+++ b/Demos/Device/LowLevel/GenericHID/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/Joystick/makefile b/Demos/Device/LowLevel/Joystick/makefile
index b23c15b13dbf936c9f14e01be4bc9fe72bb005dd..88057eb20055f71d0e94282c0f904247559b04a1 100644
--- a/Demos/Device/LowLevel/Joystick/makefile
+++ b/Demos/Device/LowLevel/Joystick/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/Keyboard/makefile b/Demos/Device/LowLevel/Keyboard/makefile
index 0561df25140cf62862ce402667b34dc6baba8f7c..09d0d57f36d638e5388cd78a488684b45d57f0dd 100644
--- a/Demos/Device/LowLevel/Keyboard/makefile
+++ b/Demos/Device/LowLevel/Keyboard/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/KeyboardMouse/makefile b/Demos/Device/LowLevel/KeyboardMouse/makefile
index e7aae35ce7937d4acd39ecb1560a51c73bfdb873..bb391e27844122807f97e3b698ac9a7c424e5c2a 100644
--- a/Demos/Device/LowLevel/KeyboardMouse/makefile
+++ b/Demos/Device/LowLevel/KeyboardMouse/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/MIDI/makefile b/Demos/Device/LowLevel/MIDI/makefile
index 66843cd3b4c636b24291cd8d09b1799279af3c86..e8c675c1f01e5a4c274e3305f3ec5952f6ec441c 100644
--- a/Demos/Device/LowLevel/MIDI/makefile
+++ b/Demos/Device/LowLevel/MIDI/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/MassStorage/makefile b/Demos/Device/LowLevel/MassStorage/makefile
index 954324f17aa2ed430edcfca7b78f37354d59b7dd..5a23ad0485bfca5fdf9c2ef71a41e01d5da9a4e7 100644
--- a/Demos/Device/LowLevel/MassStorage/makefile
+++ b/Demos/Device/LowLevel/MassStorage/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY 
+LUFA_OPTS  = -D USB_DEVICE_ONLY 
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Demos/Device/LowLevel/Mouse/makefile b/Demos/Device/LowLevel/Mouse/makefile
index 3eec080fdffbaf5ebfc39c6e51585f93fd44289b..865bdcaed5445669ad277a983d73133f1498e83f 100644
--- a/Demos/Device/LowLevel/Mouse/makefile
+++ b/Demos/Device/LowLevel/Mouse/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/RNDISEthernet/makefile b/Demos/Device/LowLevel/RNDISEthernet/makefile
index c6d8306c9986921e166789f188035a0057527bcc..caa48651bfc57f760262d586d99b3b3463b3fe94 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/makefile
+++ b/Demos/Device/LowLevel/RNDISEthernet/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Device/LowLevel/USBtoSerial/makefile b/Demos/Device/LowLevel/USBtoSerial/makefile
index 324367ae1df68730c92e158e025762f5088d91f6..c607d5e97784fb1b916a7befb9dad092ac37ccaa 100644
--- a/Demos/Device/LowLevel/USBtoSerial/makefile
+++ b/Demos/Device/LowLevel/USBtoSerial/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
diff --git a/Demos/Host/ClassDriver/CDCHost/makefile b/Demos/Host/ClassDriver/CDCHost/makefile
index db62b2ec0656d6cc2ddfefc17239260c33428380..9163fd08747e5be5ab3795e7c1cbadd703a61beb 100644
--- a/Demos/Host/ClassDriver/CDCHost/makefile
+++ b/Demos/Host/ClassDriver/CDCHost/makefile
@@ -116,7 +116,6 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
 LUFA_OPTS += -D USB_HOST_ONLY
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/Host/ClassDriver/MassStorageHost/makefile b/Demos/Host/ClassDriver/MassStorageHost/makefile
index 42bbff874c1e8c18fb9012238748eff36f06501c..a046778fe1cca418dad60ac431660408a3550651 100644
--- a/Demos/Host/ClassDriver/MassStorageHost/makefile
+++ b/Demos/Host/ClassDriver/MassStorageHost/makefile
@@ -116,9 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_HOST_ONLY
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D USB_HOST_ONLY
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
 
diff --git a/Demos/Host/ClassDriver/MouseHost/makefile b/Demos/Host/ClassDriver/MouseHost/makefile
index 03bcf30f5a2835fd6f3b7166c7b30f54668de559..5d1d953192bb235ae71ab546bbecd809ff159d2f 100644
--- a/Demos/Host/ClassDriver/MouseHost/makefile
+++ b/Demos/Host/ClassDriver/MouseHost/makefile
@@ -116,9 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
 LUFA_OPTS += -D USB_HOST_ONLY
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
 
diff --git a/Demos/Host/ClassDriver/StillImageHost/makefile b/Demos/Host/ClassDriver/StillImageHost/makefile
index 626d6e6858b98d1c4d3834944c48af60297c9677..def72a99883f0bf71959de7d131634a5979a21fe 100644
--- a/Demos/Host/ClassDriver/StillImageHost/makefile
+++ b/Demos/Host/ClassDriver/StillImageHost/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_HOST_ONLY
+LUFA_OPTS  = -D USB_HOST_ONLY
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
 
diff --git a/Demos/Host/Incomplete/BluetoothHost/makefile b/Demos/Host/Incomplete/BluetoothHost/makefile
index 019554293e3179d8763d0739229dbc6bf409d40d..3ae74d4d95e63ee6373b59640992ebae5a36990a 100644
--- a/Demos/Host/Incomplete/BluetoothHost/makefile
+++ b/Demos/Host/Incomplete/BluetoothHost/makefile
@@ -123,8 +123,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_HOST_ONLY
+LUFA_OPTS  = -D USB_HOST_ONLY
 LUFA_OPTS += -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/Host/LowLevel/CDCHost/makefile b/Demos/Host/LowLevel/CDCHost/makefile
index 282915fa9b1ea2bb094ac38e17b3cb0ce51a3d95..7cc95745bc4f8623a73ac8e9068a70a2e5195b51 100644
--- a/Demos/Host/LowLevel/CDCHost/makefile
+++ b/Demos/Host/LowLevel/CDCHost/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_HOST_ONLY
+LUFA_OPTS  = -D USB_HOST_ONLY
 LUFA_OPTS += -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/Host/LowLevel/GenericHIDHost/makefile b/Demos/Host/LowLevel/GenericHIDHost/makefile
index bc474604d52cdef677fdcde1da70ff694382fa33..6e0641156e9e2ed702a3270171559101de4edcb5 100644
--- a/Demos/Host/LowLevel/GenericHIDHost/makefile
+++ b/Demos/Host/LowLevel/GenericHIDHost/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_HOST_ONLY
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/Host/LowLevel/KeyboardHost/makefile b/Demos/Host/LowLevel/KeyboardHost/makefile
index 072ca250659ad2b6e536524691f3ef4996eb0e42..d6d635840171a8b12f844c36a12d1b62660e800a 100644
--- a/Demos/Host/LowLevel/KeyboardHost/makefile
+++ b/Demos/Host/LowLevel/KeyboardHost/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_HOST_ONLY
+LUFA_OPTS  = -D USB_HOST_ONLY
 LUFA_OPTS += -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/makefile b/Demos/Host/LowLevel/KeyboardHostWithParser/makefile
index 1ec8d4754014f250e31dd34d6e652345ebe96b8c..5561ac7d3c0d7a7c3a62596e5c0853eef6ae6bc7 100644
--- a/Demos/Host/LowLevel/KeyboardHostWithParser/makefile
+++ b/Demos/Host/LowLevel/KeyboardHostWithParser/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_HOST_ONLY
+LUFA_OPTS  = -D USB_HOST_ONLY
 LUFA_OPTS += -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/Host/LowLevel/MassStorageHost/makefile b/Demos/Host/LowLevel/MassStorageHost/makefile
index 96242749e73a707329ecadb61cd6143037ab2e67..63b1db3b45be8e8d0c9143e191f871021bc3fe3f 100644
--- a/Demos/Host/LowLevel/MassStorageHost/makefile
+++ b/Demos/Host/LowLevel/MassStorageHost/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_HOST_ONLY
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 LUFA_OPTS += -D USB_STREAM_TIMEOUT_MS=2000
diff --git a/Demos/Host/LowLevel/MouseHost/makefile b/Demos/Host/LowLevel/MouseHost/makefile
index 1f955163099777f01b329fae5fd108716d7dab78..19be8d110d5f1e2b7265ddf1cef69be254b745a4 100644
--- a/Demos/Host/LowLevel/MouseHost/makefile
+++ b/Demos/Host/LowLevel/MouseHost/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_HOST_ONLY
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/makefile b/Demos/Host/LowLevel/MouseHostWithParser/makefile
index 241563f6793213acbb685f9b342a9874ab626aa6..8cf9d43f9c6c35cb473cdfab0f9ac43d9d863044 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/makefile
+++ b/Demos/Host/LowLevel/MouseHostWithParser/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_HOST_ONLY
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/Host/LowLevel/PrinterHost/makefile b/Demos/Host/LowLevel/PrinterHost/makefile
index 8e28bdaf184f5a9dc708ad7f1efa5cef20a7b20e..b9f0eb575ddca4a52e2dd2e17830c331c247b029 100644
--- a/Demos/Host/LowLevel/PrinterHost/makefile
+++ b/Demos/Host/LowLevel/PrinterHost/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_HOST_ONLY
+LUFA_OPTS  = -D USB_HOST_ONLY
 LUFA_OPTS += -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/Host/LowLevel/StillImageHost/makefile b/Demos/Host/LowLevel/StillImageHost/makefile
index 583f7cfc81f5b3cfd8e6b30caf3138fb37cb8da4..64bf730d2637e180a565fcbe7e192729798e8a91 100644
--- a/Demos/Host/LowLevel/StillImageHost/makefile
+++ b/Demos/Host/LowLevel/StillImageHost/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_HOST_ONLY
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
 
diff --git a/Demos/OTG/TestApp/makefile b/Demos/OTG/TestApp/makefile
index 2935bafb55375f5fb972a7f27ec6558deaa8bcf1..7cf4e6e740d3c7731ee09b0e44ddd549315c360e 100644
--- a/Demos/OTG/TestApp/makefile
+++ b/Demos/OTG/TestApp/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
+LUFA_OPTS  = -D USE_FLASH_DESCRIPTORS
 
 
 # List C source files here. (C dependencies are automatically generated.)
diff --git a/LUFA/Drivers/USB/Class/Host/CDC.c b/LUFA/Drivers/USB/Class/Host/CDC.c
index 68dddeacb2e4339167ed9a1af1f90405c3e13cc3..4a4d88461ae1a49f7464b08d2c82bfe393ab889d 100644
--- a/LUFA/Drivers/USB/Class/Host/CDC.c
+++ b/LUFA/Drivers/USB/Class/Host/CDC.c
@@ -50,12 +50,7 @@ uint8_t CDC_Host_ConfigurePipes(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, uint
 		return CDC_ENUMERROR_NoCDCInterfaceFound;
 	}
 	
-	CDCInterfaceInfo->State.ControlInterfaceNumber =
-#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)
-	                     DESCRIPTOR_CAST(ConfigDescriptorData, USB_Descriptor_Interface_t).InterfaceNumber;
-#else
-	                     DESCRIPTOR_CAST(ConfigDescriptorData, USB_Descriptor_Interface_t).bInterfaceNumber;
-#endif
+	CDCInterfaceInfo->State.ControlInterfaceNumber = DESCRIPTOR_CAST(ConfigDescriptorData, USB_Descriptor_Interface_t).InterfaceNumber;
 
 	while (FoundEndpoints != (CDC_FOUND_NOTIFICATION_IN | CDC_FOUND_DATAPIPE_IN | CDC_FOUND_DATAPIPE_OUT))
 	{
@@ -259,7 +254,7 @@ uint8_t CDC_Host_SendControlLineStateChange(USB_ClassInfo_CDC_Host_t* CDCInterfa
 uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, char* Data, uint16_t Length)
 {
 	if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive))
-	  return;
+	  return PIPE_READYWAIT_NoError;
 
 	uint8_t ErrorCode;
 
@@ -274,7 +269,7 @@ uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, char* Da
 uint8_t CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, uint8_t Data)
 {
 	if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive))
-	  return;
+	  return PIPE_READYWAIT_NoError;;
 	  
 	uint8_t ErrorCode;
 
diff --git a/LUFA/Drivers/USB/Class/Host/HID.c b/LUFA/Drivers/USB/Class/Host/HID.c
index 15106cee1d709fafaaf296f7cd3cac7a0cc6065e..11dfb67adc37ebbf58844af84de1cb00fb42964e 100644
--- a/LUFA/Drivers/USB/Class/Host/HID.c
+++ b/LUFA/Drivers/USB/Class/Host/HID.c
@@ -60,14 +60,16 @@ uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint
 	} while (HIDInterfaceInfo->Config.HIDInterfaceProtocol &&
 	         (CurrentHIDInterface->Protocol != HIDInterfaceInfo->Config.HIDInterfaceProtocol));
 
-	HIDInterfaceInfo->State.InterfaceNumber	     =
-	#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)
-	                     CurrentHIDInterface->InterfaceNumber;
-	#else
-	                     CurrentHIDInterface->bInterfaceNumber;
-	#endif
+	HIDInterfaceInfo->State.InterfaceNumber      = CurrentHIDInterface->InterfaceNumber;
 	HIDInterfaceInfo->State.SupportsBootSubClass = (CurrentHIDInterface->SubClass != 0);
 
+	if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, DComp_NextHID) != DESCRIPTOR_SEARCH_COMP_Found)
+	{
+		return HID_ENUMERROR_NoHIDDescriptorFound;
+	}
+
+	HIDInterfaceInfo->State.HIDReportSize = DESCRIPTOR_CAST(ConfigDescriptorData, USB_HID_Descriptor_t).HIDReportLength;
+
 	while (FoundEndpoints != (HID_FOUND_DATAPIPE_IN | HID_FOUND_DATAPIPE_OUT))
 	{
 		if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,
@@ -117,6 +119,16 @@ static uint8_t DComp_HID_Host_NextHIDInterface(void* CurrentDescriptor)
 	return DESCRIPTOR_SEARCH_NotFound;
 }
 
+static uint8_t DComp_NextHID(void* CurrentDescriptor)
+{
+	if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID)
+	  return DESCRIPTOR_SEARCH_Found;
+	else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
+	  return DESCRIPTOR_SEARCH_Fail;
+	else
+	  return DESCRIPTOR_SEARCH_NotFound;	  
+}
+
 static uint8_t DComp_HID_Host_NextHIDInterfaceEndpoint(void* CurrentDescriptor)
 {
 	if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)
@@ -170,6 +182,9 @@ uint8_t USB_HID_Host_SetProtocol(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, boo
 
 	Pipe_SelectPipe(PIPE_CONTROLPIPE);
 	
+	if (UseReportProtocol && !(HIDInterfaceInfo->State.SupportsBootSubClass))
+	  return MS_ERROR_UNSUPPORTED;
+	
 	return USB_Host_SendControlRequest(NULL);
 }
 
diff --git a/LUFA/Drivers/USB/Class/Host/HID.h b/LUFA/Drivers/USB/Class/Host/HID.h
index dd4a7537faa8a2ac403f0c428409daec3b90e26f..c1a68f819b52054a4366ac40fdb449a7bd92c13d 100644
--- a/LUFA/Drivers/USB/Class/Host/HID.h
+++ b/LUFA/Drivers/USB/Class/Host/HID.h
@@ -55,6 +55,10 @@
 		#endif
 
 	/* Public Interface - May be used in end-application: */
+		/* Macros: */
+			/** Error code for some HID Host functions, indicating a logical (and not hardware) error */
+			#define MS_ERROR_UNSUPPORTED              0xC0
+	
 		/* Type Defines: */
 			/** Class state structure. An instance of this structure should be made within the user application,
 			 *  and passed to each of the HID class driver functions as the HIDInterfaceInfo parameter. This
@@ -71,6 +75,8 @@
 					                                *   boot subclass protocol is required (e.g. keyboard, mouse), or
 					                                *   leave as 0 to match against the first HID interface found
 					                                */
+					HID_ReportInfo_t* HIDParserData; /**< HID parser data to store the parsed HID report data, when boot protocol
+					                                  *   is not used */
 				} Config; /**< Config data for the USB class interface within the device. All elements in this section
 				           *   <b>must</b> be set or the interface will fail to enumerate and operate correctly.
 				           */
@@ -88,6 +94,7 @@
 					bool SupportsBootSubClass; /**< Indicates if the current interface instance supports the HID Boot
 					                            *   Protocol when enabled via \ref USB_HID_Host_SetProtocol()
 					                            */
+					uint16_t HIDReportSize; /**< Size in bytes of the HID report descriptor in the device */
 				} State; /**< State data for the USB class interface within the device. All elements in this section
 						  *   <b>may</b> be set to initial values, but may also be ignored to default to sane values when
 						  *   the interface is enumerated.
@@ -100,7 +107,8 @@
 				HID_ENUMERROR_NoError                    = 0, /**< Configuration Descriptor was processed successfully */
 				HID_ENUMERROR_InvalidConfigDescriptor    = 1, /**< The device returned an invalid Configuration Descriptor */
 				HID_ENUMERROR_NoHIDInterfaceFound        = 2, /**< A compatible HID interface was not found in the device's Configuration Descriptor */
-				HID_ENUMERROR_EndpointsNotFound          = 3, /**< Compatible HID endpoints were not found in the device's HID interface */
+				HID_ENUMERROR_NoHIDDescriptorFound       = 3, /**< The HID descriptor was not found in the device's HID interface */
+				HID_ENUMERROR_EndpointsNotFound          = 4, /**< Compatible HID endpoints were not found in the device's HID interface */
 			};
 	
 		/* Function Prototypes: */
@@ -109,6 +117,7 @@
 			                                uint8_t* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1, 3);
 
 			bool    HID_Host_IsReportReceived(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
+			
 			uint8_t USB_HID_Host_SetProtocol(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, bool UseReportProtocol) ATTR_NON_NULL_PTR_ARG(1);
 		
 	/* Private Interface - For use in library only: */
@@ -122,6 +131,7 @@
 		/* Function Prototypes: */
 			#if defined(INCLUDE_FROM_HID_CLASS_HOST_C)
 				static uint8_t DComp_HID_Host_NextHIDInterface(void* CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
+				static uint8_t DComp_NextHID(void* CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 				static uint8_t DComp_HID_Host_NextHIDInterfaceEndpoint(void* CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 			#endif	
 	#endif	
diff --git a/LUFA/Drivers/USB/Class/Host/MassStorage.c b/LUFA/Drivers/USB/Class/Host/MassStorage.c
index a812fa9759a0c49faf072ed0f3547e2608aaf1de..2d2f042b71596763a04b6ce1c2de613e4831e1c4 100644
--- a/LUFA/Drivers/USB/Class/Host/MassStorage.c
+++ b/LUFA/Drivers/USB/Class/Host/MassStorage.c
@@ -50,12 +50,7 @@ uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint16_
 		return MS_ENUMERROR_NoMSInterfaceFound;
 	}
 
-	MSInterfaceInfo->State.InterfaceNumber	     =
-	#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)
-	                     DESCRIPTOR_PCAST(DeviceConfigDescriptor, USB_Descriptor_Interface_t)->InterfaceNumber;
-	#else
-	                     DESCRIPTOR_PCAST(DeviceConfigDescriptor, USB_Descriptor_Interface_t)->bInterfaceNumber;
-	#endif
+	MSInterfaceInfo->State.InterfaceNumber = DESCRIPTOR_PCAST(DeviceConfigDescriptor, USB_Descriptor_Interface_t)->InterfaceNumber;
 	
 	while (FoundEndpoints != (MS_FOUND_DATAPIPE_IN | MS_FOUND_DATAPIPE_OUT))
 	{
@@ -150,7 +145,8 @@ static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, MS_
 	Pipe_SelectPipe(MSInterfaceInfo->Config.DataOUTPipeNumber);
 	Pipe_Unfreeze();
 
-	if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(MS_CommandBlockWrapper_t))) != PIPE_RWSTREAM_NoError)
+	if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(MS_CommandBlockWrapper_t),
+	                                      NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
 	  return ErrorCode;
 
 	Pipe_ClearOUT();
@@ -238,7 +234,7 @@ static uint8_t MS_Host_SendReceiveData(USB_ClassInfo_MS_Host_t* MSInterfaceInfo,
 		Pipe_SelectPipe(MSInterfaceInfo->Config.DataINPipeNumber);
 		Pipe_Unfreeze();
 		
-		if ((ErrorCode = Pipe_Read_Stream_LE(BufferPtr, BytesRem)) != PIPE_RWSTREAM_NoError)
+		if ((ErrorCode = Pipe_Read_Stream_LE(BufferPtr, BytesRem, NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
 		  return ErrorCode;
 
 		Pipe_ClearIN();
@@ -248,7 +244,7 @@ static uint8_t MS_Host_SendReceiveData(USB_ClassInfo_MS_Host_t* MSInterfaceInfo,
 		Pipe_SelectPipe(MSInterfaceInfo->Config.DataOUTPipeNumber);
 		Pipe_Unfreeze();
 
-		if ((ErrorCode = Pipe_Write_Stream_LE(BufferPtr, BytesRem)) != PIPE_RWSTREAM_NoError)
+		if ((ErrorCode = Pipe_Write_Stream_LE(BufferPtr, BytesRem, NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
 		  return ErrorCode;
 
 		Pipe_ClearOUT();
@@ -276,7 +272,8 @@ static uint8_t MS_Host_GetReturnedStatus(USB_ClassInfo_MS_Host_t* MSInterfaceInf
 	Pipe_SelectPipe(MSInterfaceInfo->Config.DataINPipeNumber);
 	Pipe_Unfreeze();
 	
-	if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(MS_CommandStatusWrapper_t))) != PIPE_RWSTREAM_NoError)
+	if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(MS_CommandStatusWrapper_t),
+	                                     NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
 	  return ErrorCode;
 	  
 	Pipe_ClearIN();
diff --git a/LUFA/Drivers/USB/Class/Host/MassStorage.h b/LUFA/Drivers/USB/Class/Host/MassStorage.h
index ff2e9019ee328f46f73745bc18f27d871c4d011a..f6a1b61c2cd6fdb4314391d0aa1d3c146a945a84 100644
--- a/LUFA/Drivers/USB/Class/Host/MassStorage.h
+++ b/LUFA/Drivers/USB/Class/Host/MassStorage.h
@@ -55,6 +55,7 @@
 
 	/* Public Interface - May be used in end-application: */
 		/* Macros: */
+			/** Error code for some Mass Storage Host functions, indicating a logical (and not hardware) error */
 			#define MS_ERROR_LOGICAL_CMD_FAILED              0xC0
 	
 		/* Type Defines: */
diff --git a/LUFA/Drivers/USB/Class/Host/StillImage.h b/LUFA/Drivers/USB/Class/Host/StillImage.h
index 0e14469785e45ee8d9be268211a482f18f530192..66dc3925c19896905e7b69e7bf281ee947d47ef4 100644
--- a/LUFA/Drivers/USB/Class/Host/StillImage.h
+++ b/LUFA/Drivers/USB/Class/Host/StillImage.h
@@ -55,6 +55,7 @@
 
 	/* Public Interface - May be used in end-application: */
 		/* Macros: */
+			/** Error code for some Still Image Host functions, indicating a logical (and not hardware) error */
 			#define SI_ERROR_LOGICAL_CMD_FAILED              0xC0
 
 		/* Type Defines: */
@@ -134,7 +135,7 @@
 			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum, or \ref SI_ERROR_LOGICAL_CMD_FAILED if the device
 			 *          returned a logical command failure
 			 */
-			uint8_t SImage_Host_OpenSession(USB_ClassInfo_SI_Host_t* SIInterfaceInfo);
+			uint8_t SImage_Host_OpenSession(USB_ClassInfo_SI_Host_t* SIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 
 			/** Closes an already opened PIMA session with the attached device. This should be used after all session-orientated
 			 *  PIMA commands have been issued to the device.
@@ -144,7 +145,7 @@
 			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum, or \ref SI_ERROR_LOGICAL_CMD_FAILED if the device
 			 *          returned a logical command failure
 			 */
-			uint8_t SImage_Host_CloseSession(USB_ClassInfo_SI_Host_t* SIInterfaceInfo);
+			uint8_t SImage_Host_CloseSession(USB_ClassInfo_SI_Host_t* SIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 
 			/** Sends a given PIMA command to the attached device, filling out the PIMA command header automatically as required.
 			 *			 
@@ -157,7 +158,7 @@
 			 *          returned a logical command failure
 			 */
 			uint8_t SImage_Host_SendCommand(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, uint16_t Operation, uint8_t TotalParams,
-                                            uint32_t* Params);
+                                            uint32_t* Params) ATTR_NON_NULL_PTR_ARG(1);
 
 			/** Receives and checks a response block from the attached PIMA device, once a command has been issued and all data
 			 *  associated with the command has been transferred.
@@ -167,7 +168,7 @@
 			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum, or \ref SI_ERROR_LOGICAL_CMD_FAILED if the device
 			 *          returned a logical command failure
 			 */
-			uint8_t SImage_Host_ReceiveResponse(USB_ClassInfo_SI_Host_t* SIInterfaceInfo);
+			uint8_t SImage_Host_ReceiveResponse(USB_ClassInfo_SI_Host_t* SIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 
 			/** Indicates if the device has issued a PIMA event block to the host via the asynchronous events pipe.
 			 *
@@ -175,7 +176,7 @@
 			 *
 			 *  \return Boolean true if an event is waiting to be read, false otherwise
 			 */
-			bool SImage_Host_IsEventReceived(USB_ClassInfo_SI_Host_t* SIInterfaceInfo);
+			bool SImage_Host_IsEventReceived(USB_ClassInfo_SI_Host_t* SIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 
 			/** Receives an asynchronous event block from the device via the asynchronous events pipe.
 			 *
@@ -186,7 +187,7 @@
 			 *          returned a logical command failure
 			 */
 			uint8_t SImage_Host_ReceiveEventHeader(USB_ClassInfo_SI_Host_t* SIInterfaceInfo,
-				                                   SI_PIMA_Container_t* PIMAHeader);
+				                                   SI_PIMA_Container_t* PIMAHeader) ATTR_NON_NULL_PTR_ARG(1, 2);
 			
 			/** Sends arbitrary data to the attached device, for use in the data phase of PIMA commands which require data
 			 *  transfer beyond the regular PIMA command block parameters.
@@ -197,7 +198,7 @@
 			 *
 			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum
 			 */
-			uint8_t SImage_Host_SendData(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, void* Buffer, uint16_t Bytes);
+			uint8_t SImage_Host_SendData(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, void* Buffer, uint16_t Bytes) ATTR_NON_NULL_PTR_ARG(1, 2);
 
 			/** Receives arbitrary data from the attached device, for use in the data phase of PIMA commands which require data
 			 *  transfer beyond the regular PIMA command block parameters.
@@ -208,7 +209,7 @@
 			 *
 			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum
 			 */
-			uint8_t SImage_Host_ReadData(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, void* Buffer, uint16_t Bytes);
+			uint8_t SImage_Host_ReadData(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, void* Buffer, uint16_t Bytes) ATTR_NON_NULL_PTR_ARG(1, 2);
 			
 	/* Private Interface - For use in library only: */
 	#if !defined(__DOXYGEN__)
diff --git a/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c b/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c
index 4c6fbfdabe0a8b48280e91b7429ceca5d80fbbe4..6b20f464265a5e5cf45cc85d64ec4917fe299927 100644
--- a/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c
+++ b/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c
@@ -51,11 +51,7 @@ uint8_t USB_GetDeviceConfigDescriptor(uint8_t ConfigNumber, uint16_t* const Conf
 	if ((ErrorCode = USB_Host_SendControlRequest(ConfigHeader)) != HOST_SENDCONTROL_Successful)
 	  return ErrorCode;
 
-	#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)
 	*ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).TotalConfigurationSize;
-	#else
-	*ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).wTotalLength;		
-	#endif
 
 	if (*ConfigSizePtr > BufferSize)
 	  return HOST_GETCONFIG_BuffOverflow;
diff --git a/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h b/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h
index 9f7b1f60a989868450353465f5b749a543470fbf..be24debbabe4cb113b3ef4f08cce586b984b91bf 100644
--- a/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h
+++ b/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h
@@ -98,18 +98,10 @@
 			 *  This value's meaning depends on the descriptor's placement in the descriptor, but standard type
 			 *  values can be accessed in the \ref USB_DescriptorTypes_t enum.
 			 */
-			#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
-				#define DESCRIPTOR_TYPE(DescriptorPtr)    DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Type
-			#else
-				#define DESCRIPTOR_TYPE(DescriptorPtr)    DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bDescriptorType			
-			#endif
+			#define DESCRIPTOR_TYPE(DescriptorPtr)    DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Type
 			
 			/** Returns the descriptor's size, expressed as the 8-bit value indicating the number of bytes. */
-			#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
-				#define DESCRIPTOR_SIZE(DescriptorPtr)    DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Size
-			#else
-				#define DESCRIPTOR_SIZE(DescriptorPtr)    DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bLength
-			#endif
+			#define DESCRIPTOR_SIZE(DescriptorPtr)    DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Size
 
 		/* Type Defines: */
 			/** Type define for a Configuration Descriptor comparator function (function taking a pointer to an array
@@ -268,11 +260,7 @@
 			static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,
 			                                         uint8_t** const CurrConfigLoc)
 			{
-				#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)
 				uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;
-				#else
-				uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).bLength;				
-				#endif
 
 				*CurrConfigLoc += CurrDescriptorSize;
 				*BytesRem      -= CurrDescriptorSize;
diff --git a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
index 0e0d1e9f496ad3d5029691b23c61318279d7dc7e..0b56ab6d08bff20527e99ff8aaf5e70a8e8361ef 100644
--- a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
+++ b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
@@ -34,16 +34,6 @@
  *  Standard USB device descriptor defines and retrieval routines, for USB devices. This module contains
  *  structures and macros for the easy creation of standard USB descriptors in USB device projects.
  *
- *  All standard descriptors have their elements named in an identical manner to the official USB specification,
- *  however slightly more verbose alternate (non-standard) names are also supplied if the macro
- *  USE_NONSTANDARD_DESCRIPTOR_NAMES is defined in the user project makefile and passed to the compiler at
- *  compilation time using the -D option.
- *
- *  The non-standard names are documented here - if USE_NONSTANDARD_DESCRIPTOR_NAMES is not defined, then all
- *  descriptors will contain elements named identically to the official USB specification. The alternately
- *  named descriptor elements are placed in the same order inside the descriptor structures as their officially
- *  named counterparts, thus they can be correlated easily with the official USB specification.
- *
  *  @{
  */
  
@@ -206,170 +196,232 @@
 			};
 
 		/* Type Defines: */
-			/** Type define for all descriptor's header, indicating the descriptor's length and type.
+			/** Type define for all descriptors standard header, indicating the descriptor's length and type. This structure
+			 *  uses LUFA-specific element names to make each element's purpose clearer.
 			 *
-			 *  \note The non-standard structure element names are documented here. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
-			 *        with names identical to those listed in the USB standard.
+			 *  \see \ref USB_StdDescriptor_Header_t for the version of this define with standard element names
 			 */
 			typedef struct
 			{
-				#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
-				uint8_t Size; /**< Size of the descriptor, in bytes. */
-				uint8_t Type; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value
-				               *   given by the specific class.
-				               */
-				#else
-				uint8_t bLength;
-				uint8_t bDescriptorType;
-				#endif
+				uint8_t     Size; /**< Size of the descriptor, in bytes. */
+				uint8_t     Type; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value
+				                   *   given by the specific class.
+				                   */
 			} USB_Descriptor_Header_t;
 			
-			/** Type define for a standard device descriptor.
+			/** Type define for all descriptors standard header, indicating the descriptor's length and type. This structure
+			 *  uses the relevant standard's given element names to ensure compatibility with the standard.
+			 *
+			 *  \see \ref USB_Descriptor_Header_t for the version of this define with non-standard LUFA specific element names
+			 */
+			typedef struct
+			{
+				uint8_t     bLength; /**< Size of the descriptor, in bytes. */
+				uint8_t     bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value
+				                              *   given by the specific class.
+				                              */
+			} USB_StdDescriptor_Header_t;
+			
+			/** Type define for a standard Device Descriptor. This structure uses LUFA-specific element names to make each
+			 *  element's purpose clearer.
 			 *
-			 *  \note The non-standard structure element names are documented here. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
-			 *        with names identical to those listed in the USB standard.
+			 *  \see \ref USB_StdDescriptor_Device_t for the version of this define with standard element names
 			 */
 			typedef struct
 			{
-				#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
 				USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */
 
-				uint16_t                USBSpecification; /**< BCD of the supported USB specification. */
-				uint8_t                 Class; /**< USB device class. */
-				uint8_t                 SubClass; /**< USB device subclass. */
-				uint8_t                 Protocol; /**< USB device protocol. */
+				uint16_t    USBSpecification; /**< BCD of the supported USB specification. */
+				uint8_t     Class; /**< USB device class. */
+				uint8_t     SubClass; /**< USB device subclass. */
+				uint8_t     Protocol; /**< USB device protocol. */
 				
-				uint8_t                 Endpoint0Size; /**< Size of the control (address 0) endpoint's bank in bytes. */
+				uint8_t     Endpoint0Size; /**< Size of the control (address 0) endpoint's bank in bytes. */
 				
-				uint16_t                VendorID; /**< Vendor ID for the USB product. */
-				uint16_t                ProductID; /**< Unique product ID for the USB product. */
-				uint16_t                ReleaseNumber; /**< Product release (version) number. */
+				uint16_t    VendorID; /**< Vendor ID for the USB product. */
+				uint16_t    ProductID; /**< Unique product ID for the USB product. */
+				uint16_t    ReleaseNumber; /**< Product release (version) number. */
 				
-				uint8_t                 ManufacturerStrIndex; /**< String index for the manufacturer's name. The
-                                                               *   host will request this string via a separate
-			                                                   *   control request for the string descriptor.
-				                                               *
-				                                               *   \note If no string supplied, use \ref NO_DESCRIPTOR.
-				                                               */
-				uint8_t                 ProductStrIndex; /**< String index for the product name/details.
-				                                          *
-				                                          *  \see ManufacturerStrIndex structure entry.
-				                                          */
-				uint8_t                 SerialNumStrIndex; /**< String index for the product's globally unique hexadecimal
-				                                            *   serial number, in uppercase Unicode ASCII.
-				                                            *
-				                                            *  \note On some AVR models, there is an embedded serial number
-				                                            *        in the chip which can be used for the device serial number.
-				                                            *        To use this serial number, set this to USE_INTERNAL_SERIAL.
-				                                            *        On unsupported devices, this will evaluate to 0 and will cause
-				                                            *        the host to generate a pseudo-unique value for the device upon
-				                                            *        insertion.
-				                                            *
-				                                            *  \see ManufacturerStrIndex structure entry.
-				                                            */
-
-				uint8_t                 NumberOfConfigurations; /**< Total number of configurations supported by
-				                                                 *   the device.
-				                                                 */
-				#else
-				uint8_t                 bLength;
-				uint8_t                 bDescriptorType;
-				uint16_t                bcdUSB;
-				uint8_t                 bDeviceClass;
-				uint8_t                 bDeviceSubClass;
-				uint8_t                 bDeviceProtocol;
-				uint8_t                 bMaxPacketSize0;
-				uint16_t                idVendor;
-				uint16_t                idProduct;
-				uint16_t                bcdDevice;
-				uint8_t                 iManufacturer;
-				uint8_t                 iProduct;
-				uint8_t                 iSerialNumber;
-				uint8_t                 bNumConfigurations;
-				#endif
+				uint8_t     ManufacturerStrIndex; /**< String index for the manufacturer's name. The
+				                                   *   host will request this string via a separate
+				                                   *   control request for the string descriptor.
+				                                   *
+				                                   *   \note If no string supplied, use \ref NO_DESCRIPTOR.
+				                                   */
+				uint8_t     ProductStrIndex; /**< String index for the product name/details.
+				                              *
+				                              *  \see ManufacturerStrIndex structure entry.
+				                              */
+				uint8_t     SerialNumStrIndex; /**< String index for the product's globally unique hexadecimal
+				                                *   serial number, in uppercase Unicode ASCII.
+				                                *
+				                                *  \note On some AVR models, there is an embedded serial number
+				                                *        in the chip which can be used for the device serial number.
+				                                *        To use this serial number, set this to USE_INTERNAL_SERIAL.
+				                                *        On unsupported devices, this will evaluate to 0 and will cause
+				                                *        the host to generate a pseudo-unique value for the device upon
+				                                *        insertion.
+				                                *
+				                                *  \see ManufacturerStrIndex structure entry.
+				                                */
+				uint8_t     NumberOfConfigurations; /**< Total number of configurations supported by
+				                                     *   the device.
+				                                     */
 			} USB_Descriptor_Device_t;
 
-			/** Type define for a standard configuration descriptor.
+			/** Type define for a standard Device Descriptor. This structure uses the relevant standard's given element names
+			 *  to ensure compatibility with the standard.
 			 *
-			 *  \note The non-standard structure element names are documented here. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
-			 *        with names identical to those listed in the USB standard.
+			 *  \see \ref USB_Descriptor_Device_t for the version of this define with non-standard LUFA specific element names
+			 */
+			typedef struct
+			{
+				uint8_t     bLength; /**< Size of the descriptor, in bytes. */
+				uint8_t     bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value
+				                              *   given by the specific class.
+				                              */
+				uint16_t    bcdUSB; /**< BCD of the supported USB specification. */
+				uint8_t     bDeviceClass; /**< USB device class. */
+				uint8_t     bDeviceSubClass; /**< USB device subclass. */
+				uint8_t     bDeviceProtocol; /**< USB device protocol. */
+				uint8_t     bMaxPacketSize0; /**< Size of the control (address 0) endpoint's bank in bytes. */
+				uint16_t    idVendor; /**< Vendor ID for the USB product. */
+				uint16_t    idProduct; /**< Unique product ID for the USB product. */
+				uint16_t    bcdDevice; /**< Product release (version) number. */
+				uint8_t     iManufacturer; /**< String index for the manufacturer's name. The
+				                            *   host will request this string via a separate
+				                            *   control request for the string descriptor.
+				                            *
+				                            *   \note If no string supplied, use \ref NO_DESCRIPTOR.
+				                            */
+				uint8_t     iProduct; /**< String index for the product name/details.
+				                       *
+				                       *  \see ManufacturerStrIndex structure entry.
+				                       */
+				uint8_t     iSerialNumber; /**< String index for the product's globally unique hexadecimal
+				                            *   serial number, in uppercase Unicode ASCII.
+				                            *
+				                            *  \note On some AVR models, there is an embedded serial number
+				                            *        in the chip which can be used for the device serial number.
+				                            *        To use this serial number, set this to USE_INTERNAL_SERIAL.
+				                            *        On unsupported devices, this will evaluate to 0 and will cause
+				                            *        the host to generate a pseudo-unique value for the device upon
+				                            *        insertion.
+				                            *
+				                            *  \see ManufacturerStrIndex structure entry.
+				                             */
+				uint8_t     bNumConfigurations; /**< Total number of configurations supported by
+				                                 *   the device.
+				                                 */
+			} USB_StdDescriptor_Device_t;
+
+			/** Type define for a standard Configuration Descriptor header. This structure uses LUFA-specific element names
+			 *  to make each element's purpose clearer.
+			 *
+			 *  \see \ref USB_StdDescriptor_Configuration_Header_t for the version of this define with standard element names
 			 */
 			typedef struct
 			{
-				#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
 				USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */
 			
-				uint16_t                TotalConfigurationSize; /**< Size of the configuration descriptor header,
-				                                                 *   and all sub descriptors inside the configuration.
-				                                                 */
-				uint8_t                 TotalInterfaces; /**< Total number of interfaces in the configuration. */
+				uint16_t    TotalConfigurationSize; /**< Size of the configuration descriptor header,
+				                                     *   and all sub descriptors inside the configuration.
+				                                     */
+				uint8_t     TotalInterfaces; /**< Total number of interfaces in the configuration. */
 
-				uint8_t                 ConfigurationNumber; /**< Configuration index of the current configuration. */
-				uint8_t                 ConfigurationStrIndex; /**< Index of a string descriptor describing the configuration. */
+				uint8_t     ConfigurationNumber; /**< Configuration index of the current configuration. */
+				uint8_t     ConfigurationStrIndex; /**< Index of a string descriptor describing the configuration. */
 				
-				uint8_t                 ConfigAttributes; /**< Configuration attributes, comprised of a mask of zero or
-				                                           *   more USB_CONFIG_ATTR_* masks.
-				                                           */
+				uint8_t     ConfigAttributes; /**< Configuration attributes, comprised of a mask of zero or
+				                               *   more USB_CONFIG_ATTR_* masks.
+				                               */
 				
-				uint8_t                 MaxPowerConsumption; /**< Maximum power consumption of the device while in the
-				                                              *   current configuration, calculated by the \ref USB_CONFIG_POWER_MA()
-				                                              *   macro.
-				                                              */
-				#else
-				uint8_t                 bLength;
-				uint8_t                 bDescriptorType;
-				uint16_t                wTotalLength;
-				uint8_t                 bNumInterfaces;
-				uint8_t                 bConfigurationValue;
-				uint8_t                 iConfiguration;
-				uint8_t                 bmAttributes;
-				uint8_t                 bMaxPower;
-				#endif
+				uint8_t     MaxPowerConsumption; /**< Maximum power consumption of the device while in the
+				                                  *   current configuration, calculated by the \ref USB_CONFIG_POWER_MA()
+				                                  *   macro.
+				                                  */
 			} USB_Descriptor_Configuration_Header_t;
-
-			/** Type define for a standard interface descriptor.
+			
+			/** Type define for a standard Configuration Descriptor header. This structure uses the relevant standard's given element names
+			 *  to ensure compatibility with the standard.
 			 *
-			 *  \note The non-standard structure element names are documented here. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
-			 *        with names identical to those listed in the USB standard.
+			 *  \see \ref USB_Descriptor_Device_t for the version of this define with non-standard LUFA specific element names
+			 */
+			typedef struct
+			{
+				uint8_t     bLength; /**< Size of the descriptor, in bytes. */
+				uint8_t     bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value
+				                              *   given by the specific class.
+				                              */
+				uint16_t    wTotalLength; /**< Size of the configuration descriptor header,
+				                           *   and all sub descriptors inside the configuration.
+				                           */
+				uint8_t     bNumInterfaces; /**< Total number of interfaces in the configuration. */
+				uint8_t     bConfigurationValue; /**< Configuration index of the current configuration. */
+				uint8_t     iConfiguration; /**< Index of a string descriptor describing the configuration. */
+				uint8_t     bmAttributes; /**< Configuration attributes, comprised of a mask of zero or
+				                           *   more USB_CONFIG_ATTR_* masks.
+				                           */
+				uint8_t     bMaxPower; /**< Maximum power consumption of the device while in the
+				                        *   current configuration, calculated by the \ref USB_CONFIG_POWER_MA()
+				                        *   macro.
+				                        */
+			} USB_StdDescriptor_Configuration_Header_t;
+
+			/** Type define for a standard Interface Descriptor. This structure uses LUFA-specific element names
+			 *  to make each element's purpose clearer.
+			 *
+			 *  \see \ref USB_StdDescriptor_Interface_t for the version of this define with standard element names
 			 */
 			typedef struct
 			{
-				#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
 				USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */
 
-				uint8_t                 InterfaceNumber; /**< Index of the interface in the current configuration. */
-				uint8_t                 AlternateSetting; /**< Alternate setting for the interface number. The same
-				                                           *   interface number can have multiple alternate settings
-				                                           *   with different endpoint configurations, which can be
-				                                           *   selected by the host.
-				                                           */
-				uint8_t                 TotalEndpoints; /**< Total number of endpoints in the interface. */
+				uint8_t     InterfaceNumber; /**< Index of the interface in the current configuration. */
+				uint8_t     AlternateSetting; /**< Alternate setting for the interface number. The same
+				                               *   interface number can have multiple alternate settings
+				                               *   with different endpoint configurations, which can be
+				                               *   selected by the host.
+				                               */
+				uint8_t     TotalEndpoints; /**< Total number of endpoints in the interface. */
 				
-				uint8_t                 Class; /**< Interface class ID. */
-				uint8_t                 SubClass; /**< Interface subclass ID. */
-				uint8_t                 Protocol; /**< Interface protocol ID. */
-
-				uint8_t                 InterfaceStrIndex; /**< Index of the string descriptor describing the
-				                                            *   interface.
-				                                            */
-				#else
-				uint8_t                 bLength;
-				uint8_t                 bDescriptorType;
-				uint8_t                 bInterfaceNumber;
-				uint8_t                 bAlternateSetting;
-				uint8_t                 bNumEndpoints;
-				uint8_t                 bInterfaceClass;
-				uint8_t                 bInterfaceSubClass;
-				uint8_t                 bInterfaceProtocol;
-				uint8_t                 iInterface;
-				#endif
-			} USB_Descriptor_Interface_t;
+				uint8_t     Class; /**< Interface class ID. */
+				uint8_t     SubClass; /**< Interface subclass ID. */
+				uint8_t     Protocol; /**< Interface protocol ID. */
 
-			/** Type define for a standard Interface Association descriptor.
+				uint8_t     InterfaceStrIndex; /**< Index of the string descriptor describing the
+				                                *   interface.
+				                                */
+			} USB_Descriptor_Interface_t;
+			
+			/** Type define for a standard Interface Descriptor. This structure uses the relevant standard's given element names
+			 *  to ensure compatibility with the standard.
+			 *
+			 *  \see \ref USB_Descriptor_Interface_t for the version of this define with non-standard LUFA specific element names
+			 */
+			typedef struct
+			{
+				uint8_t     bLength; /**< Size of the descriptor, in bytes. */
+				uint8_t     bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value
+				                              *   given by the specific class.
+				                              */
+				uint8_t     bInterfaceNumber; /**< Index of the interface in the current configuration. */
+				uint8_t     bAlternateSetting; /**< Alternate setting for the interface number. The same
+				                                *   interface number can have multiple alternate settings
+				                                *   with different endpoint configurations, which can be
+				                                *   selected by the host.
+				                                */
+				uint8_t     bNumEndpoints; /**< Total number of endpoints in the interface. */
+				uint8_t     bInterfaceClass; /**< Interface class ID. */
+				uint8_t     bInterfaceSubClass; /**< Interface subclass ID. */
+				uint8_t     bInterfaceProtocol; /**< Interface protocol ID. */
+				uint8_t     iInterface; /**< Index of the string descriptor describing the
+				                         *   interface.
+				                         */
+			} USB_StdDescriptor_Interface_t;
+
+			/** Type define for a standard Interface Association Descriptor. This structure uses LUFA-specific element names
+			 *  to make each element's purpose clearer.
 			 *
 			 *  This descriptor has been added as a supplement to the USB2.0 standard, in the ECN located at
 			 *  <a>http://www.usb.org/developers/docs/InterfaceAssociationDescriptor_ecn.pdf</a>. It allows compound
@@ -377,72 +429,105 @@
 			 *  together at the point of enumeration, loading one generic driver for all the interfaces in the single
 			 *  function. Read the ECN for more information.
 			 *
-			 *  \note The non-standard structure element names are documented here. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
-			 *        with names identical to those listed in the USB standard.
+			 *  \see \ref USB_StdDescriptor_Interface_Association_t for the version of this define with standard element names
 			 */
 			typedef struct
 			{
-				#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
 				USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */
 				
-				uint8_t                 FirstInterfaceIndex; /**< Index of the first associated interface. */
-				uint8_t                 TotalInterfaces; /** Total number of associated interfaces. */
-
-				uint8_t                 Class; /**< Interface class ID. */
-				uint8_t                 SubClass; /**< Interface subclass ID. */
-				uint8_t                 Protocol; /**< Interface protocol ID. */
-
-				uint8_t                 IADStrIndex; /**< Index of the string descriptor describing the
-				                                      *   interface association.
-				                                      */
-				#else
-				uint8_t                 bLength;
-				uint8_t                 bDescriptorType;
-				uint8_t                 bFirstInterface;
-				uint8_t                 bInterfaceCount;
-				uint8_t                 bFunctionClass;
-				uint8_t                 bFunctionSubClass;
-				uint8_t                 bFunctionProtocol;
-				uint8_t                 iFunction;
-				#endif
-			} USB_Descriptor_Interface_Association_t;
+				uint8_t     FirstInterfaceIndex; /**< Index of the first associated interface. */
+				uint8_t     TotalInterfaces; /** Total number of associated interfaces. */
 
-			/** Type define for a standard endpoint descriptor.
+				uint8_t     Class; /**< Interface class ID. */
+				uint8_t     SubClass; /**< Interface subclass ID. */
+				uint8_t     Protocol; /**< Interface protocol ID. */
+
+				uint8_t     IADStrIndex; /**< Index of the string descriptor describing the
+				                          *   interface association.
+				                          */
+			} USB_Descriptor_Interface_Association_t;
+				
+			/** Type define for a standard Interface Association Descriptor. This structure uses the relevant standard's given
+			 *  element names to ensure compatibility with the standard.
 			 *
-			 *  \note The non-standard structure element names are documented here. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
-			 *        with names identical to those listed in the USB standard.
-			*/
+			 *  This descriptor has been added as a supplement to the USB2.0 standard, in the ECN located at
+			 *  <a>http://www.usb.org/developers/docs/InterfaceAssociationDescriptor_ecn.pdf</a>. It allows compound
+			 *  devices with multiple interfaces related to the same function to have the multiple interfaces bound
+			 *  together at the point of enumeration, loading one generic driver for all the interfaces in the single
+			 *  function. Read the ECN for more information.
+			 *
+			 *  \see \ref USB_Descriptor_Interface_Association_t for the version of this define with non-standard LUFA specific
+			 *       element names
+			 */
+			typedef struct
+			{
+				uint8_t     bLength; /**< Size of the descriptor, in bytes. */
+				uint8_t     bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value
+				                              *   given by the specific class.
+				                              */
+				uint8_t     bFirstInterface; /**< Index of the first associated interface. */
+				uint8_t     bInterfaceCount; /** Total number of associated interfaces. */
+				uint8_t     bFunctionClass; /**< Interface class ID. */
+				uint8_t     bFunctionSubClass; /**< Interface subclass ID. */
+				uint8_t     bFunctionProtocol; /**< Interface protocol ID. */
+				uint8_t     iFunction; /**< Index of the string descriptor describing the
+				                        *   interface association.
+				                        */
+			} USB_StdDescriptor_Interface_Association_t;
+
+			/** Type define for a standard Endpoint Descriptor. This structure uses LUFA-specific element names
+			 *  to make each element's purpose clearer.
+			 *
+			 *  \see \ref USB_StdDescriptor_Endpoint_t for the version of this define with standard element names
+			 */
 			typedef struct
 			{
-				#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
 				USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */
 
-				uint8_t                 EndpointAddress; /**< Logical address of the endpoint within the device
-				                                          *   for the current configuration, including direction
-				                                          *   mask.
-				                                          */
-				uint8_t                 Attributes; /**< Endpoint attributes, comprised of a mask of the
-				                                     *   endpoint type (EP_TYPE_*) and attributes (ENDPOINT_ATTR_*)
-				                                     *   masks.
-				                                     */
-				uint16_t                EndpointSize; /**< Size of the endpoint bank, in bytes. This indicates the
-				                                       *   maximum packet size that the endpoint can receive at a time.
-				                                       */
+				uint8_t     EndpointAddress; /**< Logical address of the endpoint within the device
+				                              *   for the current configuration, including direction
+				                              *   mask.
+				                              */
+				uint8_t     Attributes; /**< Endpoint attributes, comprised of a mask of the
+				                         *   endpoint type (EP_TYPE_*) and attributes (ENDPOINT_ATTR_*)
+				                         *   masks.
+				                         */
+				uint16_t    EndpointSize; /**< Size of the endpoint bank, in bytes. This indicates the
+				                           *   maximum packet size that the endpoint can receive at a time.
+				                           */
 				
-				uint8_t                 PollingIntervalMS; /**< Polling interval in milliseconds for the endpoint
-				                                            *   if it is an INTERRUPT or ISOCHRONOUS type.
-				                                            */
-				#else
-				uint8_t                 bLength;
-				uint8_t                 bDescriptorType;
-				uint8_t                 bEndpointAddress;
-				uint8_t                 bmAttributes;
-				uint16_t                wMaxPacketSize;
-				uint8_t                 bInterval;
-				#endif
+				uint8_t     PollingIntervalMS; /**< Polling interval in milliseconds for the endpoint
+				                                *   if it is an INTERRUPT or ISOCHRONOUS type.
+				                                */
 			} USB_Descriptor_Endpoint_t;
+				
+			/** Type define for a standard Endpoint Descriptor. This structure uses the relevant standard's given
+			 *  element names to ensure compatibility with the standard.
+			 *
+			 *  \see \ref USB_Descriptor_Endpoint_t for the version of this define with non-standard LUFA specific
+			 *       element names
+			 */
+			typedef struct
+			{
+				uint8_t     bLength; /**< Size of the descriptor, in bytes. */
+				uint8_t     bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value
+				                              *   given by the specific class.
+				                              */
+				uint8_t     bEndpointAddress; /**< Logical address of the endpoint within the device
+				                               *   for the current configuration, including direction
+				                               *   mask.
+				                               */
+				uint8_t     bmAttributes; /**< Endpoint attributes, comprised of a mask of the
+				                           *   endpoint type (EP_TYPE_*) and attributes (ENDPOINT_ATTR_*)
+				                           *   masks.
+				                           */
+				uint16_t    wMaxPacketSize; /**< Size of the endpoint bank, in bytes. This indicates the
+				                             *   maximum packet size that the endpoint can receive at a time.
+				                             */
+				uint8_t     bInterval; /**< Polling interval in milliseconds for the endpoint
+				                        *   if it is an INTERRUPT or ISOCHRONOUS type.
+				                        */
+			} USB_StdDescriptor_Endpoint_t;
 
 			/** Type define for a standard string descriptor. Unlike other standard descriptors, the length
 			 *  of the descriptor for placement in the descriptor header must be determined by the \ref USB_STRING_LEN()
@@ -451,33 +536,59 @@
 			 *  This structure should also be used for string index 0, which contains the supported language IDs for
 			 *  the device as an array.
 			 *
-			 *  \note The non-standard structure element names are documented here. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
-			 *        with names identical to those listed in the USB standard.
+			 *  This structure uses LUFA-specific element names to make each element's purpose clearer.
+			 *
+			 *  \see \ref USB_StdDescriptor_String_t for the version of this define with standard element names
 			 */
 			typedef struct
 			{
-				#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
 				USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */
 				
-				int16_t                 UnicodeString[]; /**< String data, as unicode characters (alternatively,
-				                                          *   string language IDs). If normal ASCII characters are
-				                                          *   to be used, they must be added as an array of characters
-				                                          *   rather than a normal C string so that they are widened to
-				                                          *   Unicode size.
-				                                          *
-				                                          *   Under GCC, strings prefixed with the "L" character (before
-				                                          *   the opening string quotation mark) are considered to be
-				                                          *   Unicode strings, and may be used instead of an explicit
-				                                          *   array of ASCII characters.
-				                                          */
-				#else
-				uint8_t                 bLength;
-				uint8_t                 bDescriptorType;
-				int16_t                 bString[];
-				#endif
+				int16_t     UnicodeString[]; /**< String data, as unicode characters (alternatively,
+				                              *   string language IDs). If normal ASCII characters are
+				                              *   to be used, they must be added as an array of characters
+				                              *   rather than a normal C string so that they are widened to
+				                              *   Unicode size.
+				                              *
+				                              *   Under GCC, strings prefixed with the "L" character (before
+				                              *   the opening string quotation mark) are considered to be
+				                              *   Unicode strings, and may be used instead of an explicit
+				                              *   array of ASCII characters.
+				                              */
 			} USB_Descriptor_String_t;
 
+			/** Type define for a standard string descriptor. Unlike other standard descriptors, the length
+			 *  of the descriptor for placement in the descriptor header must be determined by the \ref USB_STRING_LEN()
+			 *  macro rather than by the size of the descriptor structure, as the length is not fixed.
+			 *
+			 *  This structure should also be used for string index 0, which contains the supported language IDs for
+			 *  the device as an array.
+			 *
+			 *  This structure uses the relevant standard's given element names to ensure compatibility with the standard.
+			 *
+			 *  \see \ref USB_Descriptor_String_t for the version of this define with with non-standard LUFA specific
+			 *       element names
+			 */
+			typedef struct
+			{
+					uint8_t                 bLength; /**< Size of the descriptor, in bytes. */
+					uint8_t                 bDescriptorType; /**< Type of the descriptor, either a value in
+					                                          *   \ref USB_DescriptorTypes_t or a value
+				                                              *   given by the specific class.
+				                                              */
+					int16_t                 bString[]; /**< String data, as unicode characters (alternatively,
+				                                        *   string language IDs). If normal ASCII characters are
+				                                        *   to be used, they must be added as an array of characters
+				                                        *   rather than a normal C string so that they are widened to
+				                                        *   Unicode size.
+				                                        *
+				                                        *   Under GCC, strings prefixed with the "L" character (before
+				                                        *   the opening string quotation mark) are considered to be
+				                                        *   Unicode strings, and may be used instead of an explicit
+				                                        *   array of ASCII characters.
+				                                        */
+			} USB_StdDescriptor_String_t;
+
 	/* Private Interface - For use in library only: */
 	#if !defined(__DOXYGEN__)
 		/* Macros: */
diff --git a/LUFA/Drivers/USB/LowLevel/DevChapter9.c b/LUFA/Drivers/USB/LowLevel/DevChapter9.c
index fa35a1b61c42580662b57310df0c1af0a65273f6..50afb61be26bf633ce38a315e345082a6b65aca1 100644
--- a/LUFA/Drivers/USB/LowLevel/DevChapter9.c
+++ b/LUFA/Drivers/USB/LowLevel/DevChapter9.c
@@ -232,14 +232,9 @@ static void USB_Device_GetInternalSerialDescriptor(void)
 		int16_t                 UnicodeString[20];
 	} SignatureDescriptor;
 
-	#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)
-		SignatureDescriptor.Header.Size            = sizeof(SignatureDescriptor);
-		SignatureDescriptor.Header.Type            = DTYPE_String;
-	#else
-		SignatureDescriptor.Header.bLength         = sizeof(SignatureDescriptor);
-		SignatureDescriptor.Header.bDescriptorType = DTYPE_String;
-	#endif
-
+	SignatureDescriptor.Header.Size  = sizeof(SignatureDescriptor);
+	SignatureDescriptor.Header.Type  = DTYPE_String;
+	
 	uint8_t  SigReadAddress     = 0x0E;
 
 	for (uint8_t SerialCharNum = 0; SerialCharNum < 20; SerialCharNum++)
diff --git a/LUFA/Drivers/USB/LowLevel/Host.c b/LUFA/Drivers/USB/LowLevel/Host.c
index 8a51ae5bfc77821b852517b0681ba251212ca1ce..2685f5f0baa3bcc030d6f5241c5e54114abea9de 100644
--- a/LUFA/Drivers/USB/LowLevel/Host.c
+++ b/LUFA/Drivers/USB/LowLevel/Host.c
@@ -137,11 +137,7 @@ void USB_Host_ProcessNextHostState(void)
 				break;
 			}
 
-			#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)
 			USB_ControlPipeSize = DataBuffer[offsetof(USB_Descriptor_Device_t, Endpoint0Size)];
-			#else
-			USB_ControlPipeSize = DataBuffer[offsetof(USB_Descriptor_Device_t, bMaxPacketSize0)];			
-			#endif
 	
 			USB_Host_ResetDevice();
 			
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 9bbfba113adc4f949d20f3606e0467648d5a595d..6b16e1e7f6d96228b6aef597f21751cd1939d643 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -40,6 +40,8 @@
   *  - Add in new invalid event hook check targets to project makefiles to produce compilation errors when invalid event names
   *    are used in a project
   *  - The HID Report Parser now gives information on the total length of each report within a HID interface
+  *  - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now seperate USB_Descriptor_* and
+  *    USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so both may be used
   *
   *  <b>Fixed:</b>
   *  - Fixed possible lockup in the CDC device class driver, when the host sends data that is a multiple of the
diff --git a/LUFA/ManPages/CompileTimeTokens.txt b/LUFA/ManPages/CompileTimeTokens.txt
index fb051b8c89047f8f4db7c0cadde29a42f631be79..8213c678b47604e4a9dae94f51755043623917a4 100644
--- a/LUFA/ManPages/CompileTimeTokens.txt
+++ b/LUFA/ManPages/CompileTimeTokens.txt
@@ -72,12 +72,6 @@
  *  <b>USE_EEPROM_DESCRIPTORS</b> - ( \ref Group_Descriptors ) \n
  *  Similar to USE_RAM_DESCRIPTORS, but all descriptors are stored in the AVR's EEPROM memory rather than RAM.
  *
- *  <b>USE_NONSTANDARD_DESCRIPTOR_NAMES</b> - ( \ref Group_Descriptors ) \n
- *  The USB 2.0 standard gives some rather obscure names for the elements in the standard descriptor types (device, configuration,
- *  string, endpoint, etc.). By default the LUFA library uses these names in its predefined descriptor structure types for
- *  compatibility. If this token is defined, the structure element names are switched to the LUFA-specific but more descriptive
- *  names documented in the StdDescriptors.h source file.
- *
  *  <b>NO_INTERNAL_SERIAL</b> - ( \ref Group_Descriptors ) \n
  *  Some AVR models contain a unique 20-digit serial number which can be used as the device serial number, while in device mode. This
  *  allows the host to uniquely identify the device regardless of if it is moved between USB ports on the same computer, allowing
diff --git a/LUFA/ManPages/MigrationInformation.txt b/LUFA/ManPages/MigrationInformation.txt
index c098e130df28a3cb401b4388d7aab603056d406c..0070a34acd6faf887c79b0d6ad86719e243dc926 100644
--- a/LUFA/ManPages/MigrationInformation.txt
+++ b/LUFA/ManPages/MigrationInformation.txt
@@ -14,10 +14,10 @@
  *
  *  <b>Non-USB Library Components</b>
  *    - The ADC_Off() function has been renamed to \ref ADC_ShutDown() to be consistent with the rest of the library.
- *    - The Dataflash_Init() routine no longer initializes the SPI bus - the SPI bus should be initialized manually via a
+ *    - The \ref SPI_Init() routine's parameters have changed, so that the clock polarity and data sampling modes can be set. See
+ *      the \ref SPI_Init() function documentation for more details
+ *    - The \ref Dataflash_Init() routine no longer initializes the SPI bus - the SPI bus should be initialized manually via a
  *      call to SPI_Init() before using the Dataflash driver
- *    - The SPI_Init() routine's parameters have changed, so that the clock polarity and data sampling modes can be set. See
- *      the SPI_Init() function documentation for more details
  *
  *  <b>Host Mode</b>
  *    - The \ref USB_GetDeviceConfigDescriptor() function's parameters and behaviour has changed; the user is required to
@@ -28,6 +28,14 @@
  *      is interested in into the processed HID report item structure to save RAM. See \ref CALLBACK_HIDParser_FilterHIDReportItem().
  *    - The HID report parser now always parses FEATURE and always ignores constant-data items - the HID_ENABLE_FEATURE_PROCESSING
  *      and HID_INCLUDE_CONSTANT_DATA_ITEMS compile time tokens now have no effect.
+ *    - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now seperate USB_Descriptor_*
+ *      and USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in
+ *      the one project. For existing projects using the standardized names, change all code to use the USB_StdDescriptor_* variants.
+ *
+ *  <b>Device Mode</b>
+ *    - The USE_NONSTANDARD_DESCRIPTOR_NAMES compile time token has been removed - there are now seperate USB_Descriptor_*
+ *      and USB_StdDescriptor_* structures for both the LUFA and standardized element naming conventions so that both may be used in
+ *      the one project. For existing projects using the standardized names, change all code to use the USB_StdDescriptor_* variants.
  *
  * \section Sec_Migration090810 Migrating from 090605 to 090810
  *
diff --git a/Projects/AVRISP/makefile b/Projects/AVRISP/makefile
index 35e1e4244922c2e2bea16f82c90ce36c22f52f3c..6f0cb92859caca61de057a853eda058fe365bf6a 100644
--- a/Projects/AVRISP/makefile
+++ b/Projects/AVRISP/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=16
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D NO_STREAM_CALLBACKS
diff --git a/Projects/Benito/makefile b/Projects/Benito/makefile
index 5a1e7637823e4a43bb52a33cafd83c12e6a0c856..ac834b0addfc67dd942ce0390c93de93f18e2a76 100644
--- a/Projects/Benito/makefile
+++ b/Projects/Benito/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../../
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Projects/Magstripe/makefile b/Projects/Magstripe/makefile
index f672660b2ea48b7c31d11fffb5dce3c752273316..ace13c1ffb5c11bb81f01f98787ee123354264c1 100644
--- a/Projects/Magstripe/makefile
+++ b/Projects/Magstripe/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D USB_DEVICE_ONLY
+LUFA_OPTS  = -D USB_DEVICE_ONLY
 LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
 LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
diff --git a/Projects/MissileLauncher/makefile b/Projects/MissileLauncher/makefile
index a32030890dc9c653c9bb8cb2cee741226d11e4b2..18372a4e3b433e6809155ed6a31fe3a3c48aa82a 100644
--- a/Projects/MissileLauncher/makefile
+++ b/Projects/MissileLauncher/makefile
@@ -116,8 +116,7 @@ LUFA_PATH = ../..
 
 
 # LUFA library compile-time options
-LUFA_OPTS  = -D USE_NONSTANDARD_DESCRIPTOR_NAMES
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
+LUFA_OPTS  = -D NO_STREAM_CALLBACKS
 LUFA_OPTS += -D USB_HOST_ONLY
 LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"