diff --git a/Bootloaders/CDC/makefile b/Bootloaders/CDC/makefile
index 10f94984b11a7186afc6f4d285d8829b925e2598..022742720fd3b10c416fc7bbcbc94755b5ab006b 100644
--- a/Bootloaders/CDC/makefile
+++ b/Bootloaders/CDC/makefile
@@ -113,13 +113,18 @@ LUFA_PATH = ../..
 # List C source files here. (C dependencies are automatically generated.)
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Bootloaders/DFU/makefile b/Bootloaders/DFU/makefile
index 3bed40d59074072307c38a273a24b8acd24f2460..d93836fe1ab7491fc3108e544a4fd015e1773fe5 100644
--- a/Bootloaders/DFU/makefile
+++ b/Bootloaders/DFU/makefile
@@ -113,13 +113,18 @@ LUFA_PATH = ../..
 # List C source files here. (C dependencies are automatically generated.)
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
  
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Bootloaders/TeensyHID/makefile b/Bootloaders/TeensyHID/makefile
index 561ada56a114073adb08f3b909e5dd99193d1e8a..6ef9f3a3833251a6ff413d8c9d7babc534360df5 100644
--- a/Bootloaders/TeensyHID/makefile
+++ b/Bootloaders/TeensyHID/makefile
@@ -113,13 +113,18 @@ LUFA_PATH = ../..
 # List C source files here. (C dependencies are automatically generated.)
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/AudioInput/makefile b/Demos/Device/AudioInput/makefile
index 95297d7988a2f78cb59d16456d1171d00fb40116..31e609db606f1d7873797a7b60abe28ba4eb24af 100644
--- a/Demos/Device/AudioInput/makefile
+++ b/Demos/Device/AudioInput/makefile
@@ -126,13 +126,18 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/AudioOutput/makefile b/Demos/Device/AudioOutput/makefile
index 7ecd9009cec5a065597cf1a10f846bc5c321c3dd..997abe6af0ca7f37d0303c69264475374e4b50b7 100644
--- a/Demos/Device/AudioOutput/makefile
+++ b/Demos/Device/AudioOutput/makefile
@@ -126,13 +126,18 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/CDC/makefile b/Demos/Device/CDC/makefile
index 6f27fb9268ba771cebcd43cd812f84735882ec90..d9df583d4e2fb07d9a9525ef97eb025aa3274659 100644
--- a/Demos/Device/CDC/makefile
+++ b/Demos/Device/CDC/makefile
@@ -126,13 +126,18 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/DualCDC/makefile b/Demos/Device/DualCDC/makefile
index b2a8d9e045230e9b5baefb7c74dd76b9093afcdf..c456012544eda8aa7db492eae2a363332aa89413 100644
--- a/Demos/Device/DualCDC/makefile
+++ b/Demos/Device/DualCDC/makefile
@@ -126,13 +126,18 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/GenericHID/makefile b/Demos/Device/GenericHID/makefile
index c36808628c93c592abf2a68807214706cfa0cce3..4972121bc0cf3aef37bfb96fa377c3ddc1170c00 100644
--- a/Demos/Device/GenericHID/makefile
+++ b/Demos/Device/GenericHID/makefile
@@ -126,13 +126,18 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/Joystick/makefile b/Demos/Device/Joystick/makefile
index 8c645747d17eb77c1809d2a3e51454fb1298acb0..dd4495447148ea4bebac7741385e7771600e351b 100644
--- a/Demos/Device/Joystick/makefile
+++ b/Demos/Device/Joystick/makefile
@@ -126,13 +126,18 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/Keyboard/makefile b/Demos/Device/Keyboard/makefile
index 9f738ce08e64663410f10f7210c1bfe8896797f2..945a6f8fca579bf6a0cc80ed371ffd088fb7130c 100644
--- a/Demos/Device/Keyboard/makefile
+++ b/Demos/Device/Keyboard/makefile
@@ -126,13 +126,18 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/KeyboardMouse/makefile b/Demos/Device/KeyboardMouse/makefile
index 59d676f09b48ab7e3b29e3d9dd871afec00f5a32..e11238c17ce7b7532405dd82a7be10d1e878c803 100644
--- a/Demos/Device/KeyboardMouse/makefile
+++ b/Demos/Device/KeyboardMouse/makefile
@@ -126,13 +126,18 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/MIDI/makefile b/Demos/Device/MIDI/makefile
index 09bd0c28f9cb6e928c721b8f15bb98e14ccd57fd..08c303ec005e2e874ef3a132f53c79ff7b6020db 100644
--- a/Demos/Device/MIDI/makefile
+++ b/Demos/Device/MIDI/makefile
@@ -126,13 +126,18 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/MassStorage/makefile b/Demos/Device/MassStorage/makefile
index a25c2335d93476b9112e4feff3103e26e4c3759e..f263c5a7bc79d4742a07bf26f6df8adb74c72562 100644
--- a/Demos/Device/MassStorage/makefile
+++ b/Demos/Device/MassStorage/makefile
@@ -128,13 +128,18 @@ SRC = $(TARGET).c                                                 \
 	  SCSI.c                                                      \
 	  DataflashManager.c                                          \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/Mouse/makefile b/Demos/Device/Mouse/makefile
index 1dc0c663f2f80cfb271816654d7346bc9733dad3..b788b5a734fbcf51c97766e7f169d039860f91e0 100644
--- a/Demos/Device/Mouse/makefile
+++ b/Demos/Device/Mouse/makefile
@@ -126,15 +126,19 @@ LUFA_PATH = ../../..
 SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
-
-
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
+ 
 # List C++ source files here. (C dependencies are automatically generated.)
 CPPSRC = 
 
diff --git a/Demos/Device/RNDISEthernet/makefile b/Demos/Device/RNDISEthernet/makefile
index 2b104641e2a07b1683439a399197f8a43cd49b38..845c20873113e20030d41e5096ac6ed38a743971 100644
--- a/Demos/Device/RNDISEthernet/makefile
+++ b/Demos/Device/RNDISEthernet/makefile
@@ -135,16 +135,21 @@ SRC = $(TARGET).c                                                 \
 	  ARP.c                                                       \
 	  IP.c                                                        \
 	  Webserver.c                                                 \
-      $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-      $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-      $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
-      $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-      $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-      $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
-      $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
-      $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
-      $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
-      $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
+	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
+	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
+	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Device/USBtoSerial/makefile b/Demos/Device/USBtoSerial/makefile
index 650a677041f45ed76cae26be8bc37478a27d2e00..8b7e70163067c01b03ed2ef703095116a6bc5af4 100644
--- a/Demos/Device/USBtoSerial/makefile
+++ b/Demos/Device/USBtoSerial/makefile
@@ -127,14 +127,18 @@ SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  RingBuff.c                                                  \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Host/CDCHost/makefile b/Demos/Host/CDCHost/makefile
index 9d36b0d1f160f37720fe212fd4bdffe84d2636bd..954fc583fff52a309d525c44449a14d8483991ce 100644
--- a/Demos/Host/CDCHost/makefile
+++ b/Demos/Host/CDCHost/makefile
@@ -128,14 +128,18 @@ SRC = $(TARGET).c                                                 \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Host/GenericHIDHost/makefile b/Demos/Host/GenericHIDHost/makefile
index 49d4867d573d2b57f39a5b2d31716ad52d9c9da8..1b0f6d23284fc318b9aefc0cda609295c3b85c92 100644
--- a/Demos/Host/GenericHIDHost/makefile
+++ b/Demos/Host/GenericHIDHost/makefile
@@ -128,14 +128,18 @@ SRC = $(TARGET).c                                                 \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Host/KeyboardHost/makefile b/Demos/Host/KeyboardHost/makefile
index e74cc4d70308d66229ddb5b51b8284b5c07cf671..47acfa6bce5183bba4a2d5539ba8e25dbe032363 100644
--- a/Demos/Host/KeyboardHost/makefile
+++ b/Demos/Host/KeyboardHost/makefile
@@ -128,14 +128,18 @@ SRC = $(TARGET).c                                                 \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Host/KeyboardHostWithParser/makefile b/Demos/Host/KeyboardHostWithParser/makefile
index 9768b4bbdd1e47b035573923e8f8f3fa4dd16573..0e6658c33160501a0f43daf8460e02fcdfeff909 100644
--- a/Demos/Host/KeyboardHostWithParser/makefile
+++ b/Demos/Host/KeyboardHostWithParser/makefile
@@ -129,15 +129,18 @@ SRC = $(TARGET).c                                                 \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Host/MassStorageHost/makefile b/Demos/Host/MassStorageHost/makefile
index dbd0d32858b82703b9258fd39249db4638d7c190..849511443ffcab5aff62bf5fa9dd8c75c38e5c15 100644
--- a/Demos/Host/MassStorageHost/makefile
+++ b/Demos/Host/MassStorageHost/makefile
@@ -129,14 +129,18 @@ SRC = $(TARGET).c                                                 \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Host/MouseHost/makefile b/Demos/Host/MouseHost/makefile
index 61d6437d532f15b4053a22d8c65d4047cdedfb3b..5ab0338eaef65827a023e05b18d438bc10fc56b8 100644
--- a/Demos/Host/MouseHost/makefile
+++ b/Demos/Host/MouseHost/makefile
@@ -128,14 +128,18 @@ SRC = $(TARGET).c                                                 \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Host/MouseHostWithParser/makefile b/Demos/Host/MouseHostWithParser/makefile
index 598ecf30a3abd2b3b795f952aaf579442aede70d..d2f06a21235bdbbdd4e83c6c769c18ac47ebeeac 100644
--- a/Demos/Host/MouseHostWithParser/makefile
+++ b/Demos/Host/MouseHostWithParser/makefile
@@ -129,15 +129,18 @@ SRC = $(TARGET).c                                                 \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/Host/StillImageHost/makefile b/Demos/Host/StillImageHost/makefile
index 3b1f48679c7bd91c036d1ea71857a6916e447cf5..16ec64954b0df0e0e407004a7be9e006bcd91cef 100644
--- a/Demos/Host/StillImageHost/makefile
+++ b/Demos/Host/StillImageHost/makefile
@@ -128,14 +128,18 @@ SRC = $(TARGET).c                                                 \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/Demos/OTG/TestApp/makefile b/Demos/OTG/TestApp/makefile
index c4b436df4877b0e5105f9c7101b177c1d9c2d6ed..43981a4f23317ee201972bcd6e5425f731801102 100644
--- a/Demos/OTG/TestApp/makefile
+++ b/Demos/OTG/TestApp/makefile
@@ -131,16 +131,18 @@ SRC = $(TARGET).c                                                 \
 	  $(LUFA_PATH)/LUFA/Drivers/Board/Temperature.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \
 	  $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)
diff --git a/LUFA/Doxygen.conf b/LUFA/Doxygen.conf
index 136a72335b75a75aea2cac3fe1a75aa2760f84dc..3b94c4bac57ca8026c3a1351184b8a016c77990b 100644
--- a/LUFA/Doxygen.conf
+++ b/LUFA/Doxygen.conf
@@ -580,7 +580,6 @@ INPUT_ENCODING         = UTF-8
 # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
 
 FILE_PATTERNS          = *.h \
-                         *.c \
 						 *.txt
 
 # The RECURSIVE tag can be used to turn specify whether or not subdirectories 
@@ -615,7 +614,7 @@ EXCLUDE_PATTERNS       =
 # wildcard * is used, a substring. Examples: ANamespace, AClass, 
 # AClass::ANamespace, ANamespace::*Test
 
-EXCLUDE_SYMBOLS        = __*
+EXCLUDE_SYMBOLS        = __* INCLUDE_FROM_*
 
 # The EXAMPLE_PATH tag can be used to specify one or more files or 
 # directories that contain example code fragments that are included (see 
diff --git a/LUFA/Drivers/Board/ATAVRUSBRF01/HWB.h b/LUFA/Drivers/Board/ATAVRUSBRF01/HWB.h
index 9d9982ba224982ef1b25d1d13224ea71ab416cc0..87426de160c43611c0b42a7cb519d6b338ab217c 100644
--- a/LUFA/Drivers/Board/ATAVRUSBRF01/HWB.h
+++ b/LUFA/Drivers/Board/ATAVRUSBRF01/HWB.h
@@ -36,12 +36,6 @@
  *        dispatch header located in LUFA/Drivers/Board/HWB.h.
  */
 
-/** \ingroup Group_HWB
- *  @defgroup Group_HWB_ATAVRUSBRF01 ATAVRUSBRF01
- *
- *  @{
- */
- 
 #ifndef __HWB_ATAVRUSBRF01_H__
 #define __HWB_ATAVRUSBRF01_H__
 
@@ -84,4 +78,3 @@
 			
 #endif
 
-/** @} */
diff --git a/LUFA/Drivers/Board/Dataflash.h b/LUFA/Drivers/Board/Dataflash.h
index c235cf31901890ddd405db091b110d6cc83b8144..9f5d0756d58ebd499924b78e9df9f6ac9edf5e86 100644
--- a/LUFA/Drivers/Board/Dataflash.h
+++ b/LUFA/Drivers/Board/Dataflash.h
@@ -43,8 +43,16 @@
 /** \ingroup Group_BoardDrivers
  *  @defgroup Group_Dataflash Dataflash Driver - LUFA/Drivers/Board/Dataflash.h
  *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - None
+ *
+ *  \section Module Description
  *  Functions, macros, variables, enums and types related to the control of board Dataflash ICs.
  *
+ *  If the BOARD value is set to BOARD_USER, this will include the /Board/Dataflash.h file in the user project
+ *  directory. Otherwise, it will include the appropriate built in board driver header file.
+ *
  *  @{
  */
  
diff --git a/LUFA/Drivers/Board/HWB.h b/LUFA/Drivers/Board/HWB.h
index 049fd2378d03fa2f250a8bf9c365add6359149b3..f6221afd3bd1d769d54db9fbae4fe6018a19eb38 100644
--- a/LUFA/Drivers/Board/HWB.h
+++ b/LUFA/Drivers/Board/HWB.h
@@ -43,8 +43,16 @@
 /** \ingroup Group_BoardDrivers
  *  @defgroup Group_HWB HWB Driver - LUFA/Drivers/Board/HWB.h
  *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - None
+ *
+ *  \section Module Description
  *  Functions, macros, variables, enums and types related to the control of board HWB.
  *
+ *  If the BOARD value is set to BOARD_USER, this will include the /Board/Dataflash.h file in the user project
+ *  directory. Otherwise, it will include the appropriate built in board driver header file.
+ *
  *  @{
  */
 
diff --git a/LUFA/Drivers/Board/Joystick.h b/LUFA/Drivers/Board/Joystick.h
index 86a02cfe726801d999242e360a339d24c4da0864..c7eb313b8cc7a33560a9e3d631c1a216a0f98378 100644
--- a/LUFA/Drivers/Board/Joystick.h
+++ b/LUFA/Drivers/Board/Joystick.h
@@ -43,8 +43,16 @@
 /** \ingroup Group_BoardDrivers
  *  @defgroup Group_Joystick Joystick Driver - LUFA/Drivers/Board/Joystick.h
  *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - None
+ *
+ *  \section Module Description
  *  Functions, macros, variables, enums and types related to the control of board joystick.
  *
+ *  If the BOARD value is set to BOARD_USER, this will include the /Board/Dataflash.h file in the user project
+ *  directory. Otherwise, it will include the appropriate built in board driver header file.
+ *
  *  @{
  */
 
diff --git a/LUFA/Drivers/Board/LEDs.h b/LUFA/Drivers/Board/LEDs.h
index c40042ddc9839ca54d6463b3a9ee028fe1e31dda..1874dfde3b49f3c96e67b4ad2e9e2ce8df331f95 100644
--- a/LUFA/Drivers/Board/LEDs.h
+++ b/LUFA/Drivers/Board/LEDs.h
@@ -43,8 +43,16 @@
 /** \ingroup Group_BoardDrivers
  *  @defgroup Group_LEDs LEDs Driver - LUFA/Drivers/Board/LEDs.h
  *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - None
+ *
+ *  \section Module Description
  *  Functions, macros, variables, enums and types related to the control of board LEDs.
  *
+ *  If the BOARD value is set to BOARD_USER, this will include the /Board/Dataflash.h file in the user project
+ *  directory. Otherwise, it will include the appropriate built in board driver header file.
+ *
  *  @{
  */
 
diff --git a/LUFA/Drivers/Board/STK525/HWB.h b/LUFA/Drivers/Board/STK525/HWB.h
index a91890cd35011f3089915df8d91c703ee2785c3a..2200453ee800280b50ce9db9b6afc76ce44b6e7a 100644
--- a/LUFA/Drivers/Board/STK525/HWB.h
+++ b/LUFA/Drivers/Board/STK525/HWB.h
@@ -36,12 +36,6 @@
  *        dispatch header located in LUFA/Drivers/Board/HWB.h.
  */
 
-/** \ingroup Group_HWB
- *  @defgroup Group_HWB_STK525 STK525
- *
- *  @{
- */
-
 #ifndef __HWB_STK525_H__
 #define __HWB_STK525_H__
 
@@ -84,4 +78,3 @@
 				
 #endif
 
-/** @} */
diff --git a/LUFA/Drivers/Board/STK526/HWB.h b/LUFA/Drivers/Board/STK526/HWB.h
index 0d4fd7e03df67c29ab37ecc357ea45fb222220eb..6f1861bc15abc5e7b17e7a02432d7ad4320af652 100644
--- a/LUFA/Drivers/Board/STK526/HWB.h
+++ b/LUFA/Drivers/Board/STK526/HWB.h
@@ -36,12 +36,6 @@
  *        dispatch header located in LUFA/Drivers/Board/HWB.h.
  */
 
-/** \ingroup Group_HWB
- *  @defgroup Group_HWB_STK526 STK526
- *
- *  @{
- */
-
 #ifndef __HWB_STK526_H__
 #define __HWB_STK526_H__
 
@@ -83,5 +77,3 @@
 		#endif
 	
 #endif
-
-/** @} */
diff --git a/LUFA/Drivers/Board/Temperature.h b/LUFA/Drivers/Board/Temperature.h
index 7069e3e990475ae39166c080e6a7a72183b76bd5..f21ed400d20c6b0eccda064d7cfc6eb0f31a1331 100644
--- a/LUFA/Drivers/Board/Temperature.h
+++ b/LUFA/Drivers/Board/Temperature.h
@@ -36,6 +36,11 @@
 /** \ingroup Group_BoardDrivers
  *  @defgroup Group_Temperature Temperature Driver - LUFA/Drivers/Board/Temperature.h
  *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - LUFA/Drivers/Board/Temperature.c
+ *
+ *  \section Module Description
  *  Functions, macros, variables, enums and types related to the control of board temperature sensors.
  *
  *  @{
diff --git a/LUFA/Drivers/Board/USBKEY/HWB.h b/LUFA/Drivers/Board/USBKEY/HWB.h
index bfbaa4940c77bfa7d30450139870a58ac9a4272a..13af186a07a2233b113e8d439099e292c49260f2 100644
--- a/LUFA/Drivers/Board/USBKEY/HWB.h
+++ b/LUFA/Drivers/Board/USBKEY/HWB.h
@@ -36,12 +36,6 @@
  *        dispatch header located in LUFA/Drivers/Board/HWB.h.
  */
 
-/** \ingroup Group_HWB
- *  @defgroup Group_HWB_USBKEY USBKEY
- *
- *  @{
- */
-
 #ifndef __HWB_USBKEY_H__
 #define __HWB_USBKEY_H__
 
@@ -84,4 +78,3 @@
 			
 #endif
 
-/** @} */
diff --git a/LUFA/Drivers/Misc/TerminalCodes.h b/LUFA/Drivers/Misc/TerminalCodes.h
index 1206ade2679e383888e4c723a38bc7ce84155838..b81a8d6740e19e1bec46081a8da063fce8e0b550 100644
--- a/LUFA/Drivers/Misc/TerminalCodes.h
+++ b/LUFA/Drivers/Misc/TerminalCodes.h
@@ -33,6 +33,18 @@
  *  ANSI terminal compatible escape sequences. These escape sequences are designed to be concatenated with existing
  *  strings to modify their display on a compatible terminal application.
  *
+ */
+ 
+/** \ingroup Group_MiscDrivers
+ *  @defgroup Group_Terminal ANSI Terminal Escape Codes - LUFA/Drivers/Misc/TerminalCodes.h
+ *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - None
+ *
+ *  \section Module Description
+ *  Escape code macros for ANSI compliant text terminals.
+ *
  *  \note If desired, the macro DISABLE_TERMINAL_CODES can be defined in the project makefile and passed to the GCC
  *        compiler via the -D switch to disable the terminal codes without modifying the source, for use with non
  *        compatible terminals (any terminal code then equate to empty strings).
@@ -41,12 +53,6 @@
  *  \code
  *      printf("Some String, " ESC_BOLD_ON " Some bold string");
  *  \endcode
- */
- 
-/** \ingroup Group_MiscDrivers
- *  @defgroup Group_Terminal ANSI Terminal Escape Codes - LUFA/Drivers/Misc/TerminalCodes.h
- *
- *  Escape code macros for ANSI compliant text terminals.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/Peripheral/ADC.h b/LUFA/Drivers/Peripheral/ADC.h
index 02d2d0838ab4747adbdf547c523a95d2aeb42af3..381900acc4a87ef1586b417af00374c46f72e28b 100644
--- a/LUFA/Drivers/Peripheral/ADC.h
+++ b/LUFA/Drivers/Peripheral/ADC.h
@@ -36,8 +36,15 @@
  *  currently selected AVR model.
  */
 
-/** \ingroup Group_SubsystemDrivers
+/** \ingroup Group_PeripheralDrivers
  *  @defgroup Group_ADC ADC Driver - LUFA/Drivers/Peripheral/ADC.h
+ *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - None
+ *
+ *  \section Module Description
+ *  Functions, macros, variables, enums and types related to the setup of a the ADC subsystem.
  */
  
 #ifndef __ADC_H__
@@ -58,30 +65,5 @@
 		#else
 			#error "ADC is not available for the currently selected AVR model."
 		#endif
-
-	/* Public Interface - May be used in end-application: */
-		/* Inline Functions: */
-			/** Starts the reading of the given channel, but does not wait until the conversion has completed.
-			 *  Once executed, the conversion status can be determined via the ADC_IsReadingComplete() macro and
-			 *  the result read via the ADC_GetResult() macro.
-			 *
-			 *  \param MUXMask  Mask comprising of an ADC channel number, reference mask and adjustment mask
-			 */
-			static inline void ADC_StartReading(const uint8_t MUXMask);
-
-			/** Performs a complete single reading from channel, including a polling spinloop to wait for the
-			 *  conversion to complete, and the returning of the converted value.
-			 *
-			 *  \param MUXMask  Mask comprising of an ADC channel number, reference mask and adjustment mask
-			 */
-			static inline uint16_t ADC_GetChannelReading(const uint8_t MUXMask) ATTR_WARN_UNUSED_RESULT;
-
-			/** Configures the given ADC channel, ready for ADC conversions. This function sets the
-			 *  associated port pin as an input and disables the digital portion of the I/O to reduce
-			 *  power consumption.
-			 *
-			 *  \param Channel  ADC channel number to set up for conversions
-			 */
-			static inline void ADC_SetupChannel(const uint8_t Channel);
 			
 #endif
diff --git a/LUFA/Drivers/Peripheral/SPI.h b/LUFA/Drivers/Peripheral/SPI.h
index 4ada7935caae6cafca7d7532e5e7409bca87e9f9..d8d60ede588e18d49569c4dfb612421753fd7a5e 100644
--- a/LUFA/Drivers/Peripheral/SPI.h
+++ b/LUFA/Drivers/Peripheral/SPI.h
@@ -33,9 +33,14 @@
  *  Hardware SPI subsystem driver for the supported USB AVRs models.
  */
 
-/** \ingroup Group_SubsystemDrivers
+/** \ingroup Group_PeripheralDrivers
  *  @defgroup Group_SPI SPI Driver - LUFA/Drivers/Peripheral/SPI.h
  *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - None
+ *
+ *  \section Module Description
  *  Functions, macros, variables, enums and types related to the setup of a the SPI port.
  *
  *  @{
diff --git a/LUFA/Drivers/Peripheral/Serial.h b/LUFA/Drivers/Peripheral/Serial.h
index d83761f3f13b4f43e83308d9f6047b8f4e349a5a..65b40a53f6010daebfc95fb3d664666a27dd4127 100644
--- a/LUFA/Drivers/Peripheral/Serial.h
+++ b/LUFA/Drivers/Peripheral/Serial.h
@@ -33,9 +33,14 @@
  *  Driver for the USART subsystem on supported USB AVRs.
  */
  
-/** \ingroup Group_SubsystemDrivers
+/** \ingroup Group_PeripheralDrivers
  *  @defgroup Group_Serial Serial USART Driver - LUFA/Drivers/Peripheral/Serial.h
  *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - LUFA/Drivers/Peripheral/Serial.c
+ *
+ *  \section Module Description
  *  Functions, macros, variables, enums and types related to the setup of the USART for serial communications.
  *
  *  @{
@@ -59,11 +64,6 @@
 
 	/* Public Interface - May be used in end-application: */
 		/* Macros: */	
-			/** Indicates whether a character has been received through the USART - boolean false if no character
-			 *  has been received, or non-zero if a character is waiting to be read from the reception buffer.
-			 */
-			#define Serial_IsCharReceived() ((UCSR1A & (1 << RXC1)) ? true : false)
-
 			/** Macro for calculating the baud value from a given baud rate when the U2X (double speed) bit is
 			 *  not set.
 			 */
@@ -74,6 +74,17 @@
 			 */
 			#define SERIAL_2X_UBBRVAL(baud) (((F_CPU / 8) / baud) - 1)
 
+		/* Psuedo-Functions: */
+			#if defined(__DOXYGEN__)
+				/** Indicates whether a character has been received through the USART.
+				 *
+				 *  \return Boolean true if a character has been received, false otherwise
+				 */
+				static inline bool Serial_IsCharReceived(void);
+			#else
+				#define Serial_IsCharReceived() ((UCSR1A & (1 << RXC1)) ? true : false)
+			#endif
+
 		/* Function Prototypes: */
 			/** Initializes the USART, ready for serial data transmission and reception.
 			 *
diff --git a/LUFA/Drivers/Peripheral/SerialStream.h b/LUFA/Drivers/Peripheral/SerialStream.h
index 394fd081d5da08eb4626a58160a5f597ea5ac281..27531358966ea8abf37a7a053a3c0f39ff1dba7f 100644
--- a/LUFA/Drivers/Peripheral/SerialStream.h
+++ b/LUFA/Drivers/Peripheral/SerialStream.h
@@ -35,11 +35,17 @@
  *  USART.
  **/
 
-/** \ingroup Group_SubsystemDrivers
+/** \ingroup Group_PeripheralDrivers
  *  @defgroup Group_SerialStream Serial Stream Driver - LUFA/Drivers/Peripheral/SerialStream.h
  *
- *  Functions, macros, variables, enums and types related to the setup of a serial stream, so that standard printf and other
- *  C stream functions can be used on the serial port.
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - LUFA/Drivers/Peripheral/SerialStream.c
+ *
+ *  \section Module Description
+ *  Serial stream driver for the USART subsystem on supported USB AVRs. This makes use of the functions in the
+ *  regular USART driver, but allows the avr-libc standard stream functions (printf, puts, etc.) to work with the
+ *  USART.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/Class/ConfigDescriptor.c b/LUFA/Drivers/USB/Class/ConfigDescriptor.c
index f22426bf06bfad21691dd3c1d088d07b20f51f5c..ecd58791c389bd5bf430d6a6a46b426fe8b82abd 100644
--- a/LUFA/Drivers/USB/Class/ConfigDescriptor.c
+++ b/LUFA/Drivers/USB/Class/ConfigDescriptor.c
@@ -28,6 +28,10 @@
   this software.
 */
 
+#include "../HighLevel/USBMode.h"
+
+#if defined(USB_CAN_BE_HOST)
+
 #include "ConfigDescriptor.h"
 
 uint8_t USB_Host_GetDeviceConfigDescriptor(uint16_t* const ConfigSizePtr, void* BufferPtr)
@@ -138,3 +142,5 @@ uint8_t USB_Host_GetNextDescriptorComp_P(uint16_t* BytesRem, uint8_t** CurrConfi
 	
 	return Descriptor_Search_Comp_EndOfDescriptor;
 }
+
+#endif
diff --git a/LUFA/Drivers/USB/Class/HIDParser.h b/LUFA/Drivers/USB/Class/HIDParser.h
index ad242fe5655ed8edd791965dcd633d578f825b0e..4d9f9db7a5d368a505f17dfb18b9bc184349fcbb 100644
--- a/LUFA/Drivers/USB/Class/HIDParser.h
+++ b/LUFA/Drivers/USB/Class/HIDParser.h
@@ -33,7 +33,14 @@
  *  USB Human Interface Device (HID) Class report descriptor processing routines. This file allows for the easy
  *  parsing of the complex HID report descriptor, which describes the data that the device transmits to the host.
  *
- *  The processed report is presented back to the user application as a flat structure containing each report
+ */
+ 
+/** \ingroup Group_USB
+ *  @defgroup Group_HIDParser HID Report Parser
+ *
+ *  Functions, macros, variables, enums and types related to the parsing of HID class device report descriptors.
+ *
+ *  The processed HID report is presented back to the user application as a flat structure containing each report
  *  item's IN, OUT and FEATURE (if desired) items along with each item's attributes.
  *
  *  This library portion also allows for easy setting and retrieval of data from a HID report, including devices
@@ -43,12 +50,6 @@
  *  to save on memory. This can be overridden by defining the HID_ENABLE_FEATURE_PROCESSING or
  *  HID_INCLUDE_CONSTANT_DATA_ITEMS tokens in the user project makefile, passing them to the compiler via the -D
  *  switch.
- */
- 
-/** \ingroup Group_USB
- *  @defgroup Group_HIDParser HID Report Parser
- *
- *  Functions, macros, variables, enums and types related to the parsing of HID class device report descriptors.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/HighLevel/Events.h b/LUFA/Drivers/USB/HighLevel/Events.h
index 480e824a78f9fe3deb42f5203515b66da871e091..9638afee3a4b187ccf492ee20739a181236f0bd1 100644
--- a/LUFA/Drivers/USB/HighLevel/Events.h
+++ b/LUFA/Drivers/USB/HighLevel/Events.h
@@ -28,22 +28,19 @@
   this software.
 */
 
-/** Library events module. This module contains macros and functions relating to the management of library
- *  events, which are small pieces of code similar to ISRs which are run when a given condition is met. Each
- *  event can be fired from multiple places in the user or library code, which may or may not be inside an ISR,
- *  thus each handler should be written to be as small and fast as possible to prevent possible problems.
+/** \ingroup Group_USB
+ *  @defgroup Group_Events USB Events
+ *
+ *  This module contains macros and functions relating to the management of library events, which are small
+ *  pieces of code similar to ISRs which are run when a given condition is met. Each event can be fired from
+ *  multiple places in the user or library code, which may or may not be inside an ISR, thus each handler
+ *  should be written to be as small and fast as possible to prevent possible problems.
  *
  *  Events can be hooked by the user application using the EVENT_HANDLER() and HANDLES_EVENT() macros. If an
  *  event with no associated handler is fired within the library, it by default fires an internal empty stub
  *  function. This is achieved through the use of the GCC compiler's "alias" attribute.
  *
  *  Each event must only have one associated event handler, but can be raised by multiple sources.
- */
-
-/** \ingroup Group_USB
- *  @defgroup Group_Events USB Events
- *
- *  Functions, macros, variables, enums and types related to the management of events from the USB kernel.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
index a1a051824bdfe876032337b1d5614cbe0d064510..431080b7268d96311a017123bb12c64533db244b 100644
--- a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
+++ b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
@@ -28,7 +28,8 @@
   this software.
 */
 
-/** \file
+/** \ingroup Group_USB
+ *  @defgroup Group_Descriptors USB Descriptors
  *
  *  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.
@@ -42,12 +43,6 @@
  *  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.
- */
-
-/** \ingroup Group_USB
- *  @defgroup Group_Descriptors USB Descriptors
- *
- *  Functions, macros, variables, enums and types related to standard USB descriptors.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/HighLevel/StdRequestType.h b/LUFA/Drivers/USB/HighLevel/StdRequestType.h
index bf9ef8aeeab3f42924af06c4de69e42a6c6f146a..27c179497fce4b28456ae0b0feb9b769ef91e267 100644
--- a/LUFA/Drivers/USB/HighLevel/StdRequestType.h
+++ b/LUFA/Drivers/USB/HighLevel/StdRequestType.h
@@ -28,16 +28,11 @@
   this software.
 */
 
-/** \file
- *
- *  Contains definitions for the various control request parameters, so that the request details (such as data
- *  direction, request recipient, etc.) can be extracted via masking.
- */
- 
 /** \ingroup Group_USB
  *  @defgroup Group_StdRequest Standard USB Requests
  *
- *  Functions, macros, variables, enums and types related to standard USB requests to USB devices.
+ *  This module contains definitions for the various control request parameters, so that the request
+ *   details (such as data direction, request recipient, etc.) can be extracted via masking.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/HighLevel/StreamCallbacks.h b/LUFA/Drivers/USB/HighLevel/StreamCallbacks.h
index 300a3f217e470e0e35b6f767887aa1a6f45c650f..26f15035007e34e909f2bbbbc1806b735f30eb3f 100644
--- a/LUFA/Drivers/USB/HighLevel/StreamCallbacks.h
+++ b/LUFA/Drivers/USB/HighLevel/StreamCallbacks.h
@@ -27,18 +27,13 @@
   arising out of or in connection with the use or performance of
   this software.
 */
-
-/** \file
- *
- *  Macros and enums for the stream callback routines in Endpoint.h and Pipe.c. This module contains the
- *  code required to easily set up stream callback functions which can be used to force early abort of a
- *  stream read/write process.
- */
  
 /** \ingroup Group_USB
  *  @defgroup Group_StreamCallbacks Endpoint and Pipe Stream Callbacks
  *
- *  Functions, macros, variables, enums and types related to endpoint and pipe stream callback functions.
+ *  Macros and enums for the stream callback routines in Endpoint.h and Pipe.c. This module contains the
+ *  code required to easily set up stream callback functions which can be used to force early abort of a
+ *  stream read/write process.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/HighLevel/USBInterrupt.h b/LUFA/Drivers/USB/HighLevel/USBInterrupt.h
index 65e0b5fb17993e7b89f5d299f8878d30334826bd..56297e3d4c313ea743343d45ea59031972b37314 100644
--- a/LUFA/Drivers/USB/HighLevel/USBInterrupt.h
+++ b/LUFA/Drivers/USB/HighLevel/USBInterrupt.h
@@ -28,16 +28,12 @@
   this software.
 */
 
-/** \file
- *
- *  Main USB interrupt vector handler. This file manages the main USB interrupt vector, for handling such
- *  events as VBUS interrupts (on supported USB AVR models), device connections and disconnections, etc.
- */
-
 /** \ingroup Group_USB
  *  @defgroup Group_USBInterrupt Endpoint and Pipe Interrupts
  *
- *  Functions, macros, variables, enums and types related to endpoint and pipe interrupts.
+ *  Main USB interrupt vector handler. This file manages the main USB interrupt vector, for handling such
+ *  events as VBUS interrupts (on supported USB AVR models), device connections and disconnections, etc.
+ *  as well as providing easy to use macros for the management of the Endpoint/Pipe interrupt vector.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/HighLevel/USBTask.h b/LUFA/Drivers/USB/HighLevel/USBTask.h
index bcf117ddb4f49b2d995dad35f15c3df396ab049b..63787229116ee3e504ac2370e701eb8d8a532926 100644
--- a/LUFA/Drivers/USB/HighLevel/USBTask.h
+++ b/LUFA/Drivers/USB/HighLevel/USBTask.h
@@ -27,12 +27,6 @@
   arising out of or in connection with the use or performance of
   this software.
 */
-
-/** \file
- *
- *  Main library USB management task for both Host and Device mode operations. This contains the master
- *  USB_USBTask task which should be periodically run to service both host and device USB projects.
- */
  
 #ifndef __USBTASK_H__
 #define __USBTASK_H__
diff --git a/LUFA/Drivers/USB/LowLevel/DevChapter9.h b/LUFA/Drivers/USB/LowLevel/DevChapter9.h
index 6571659c1f3cdba95397f913711549097cdee0e3..23b7b4620103e107f273e28cc3ee32114422185c 100644
--- a/LUFA/Drivers/USB/LowLevel/DevChapter9.h
+++ b/LUFA/Drivers/USB/LowLevel/DevChapter9.h
@@ -28,14 +28,6 @@
   this software.
 */
 
-/** \file
- *
- *  Module for device mode request processing. This module allows for the processing of standard control
- *  requests to the default control endpoint while in device mode.
- *
- *  \see Chapter 9 of the USB 2.0 specification.
- */
-
 #ifndef __DEVCHAPTER9_H__
 #define __DEVCHAPTER9_H__
 
diff --git a/LUFA/Drivers/USB/LowLevel/Device.h b/LUFA/Drivers/USB/LowLevel/Device.h
index 8a2ee00c3307bd96afdd0cc8dfe0604e32a0aef6..3c2bb36970161c9988a864d049e803c5c6a6af3f 100644
--- a/LUFA/Drivers/USB/LowLevel/Device.h
+++ b/LUFA/Drivers/USB/LowLevel/Device.h
@@ -27,17 +27,12 @@
   arising out of or in connection with the use or performance of
   this software.
 */
-
-/** \file
- *
- *  USB Device mode related macros and enums. This module contains macros and enums which are used when
- *  the USB controller is initialized in device mode.
- */
  
 /** \ingroup Group_USB
  *  @defgroup Group_Device Device Management
  *
- *  Functions, macros, variables, enums and types related to the management of a USB device when in Device mode.
+ *  USB Device mode related macros and enums. This module contains macros and enums which are used when
+ *  the USB controller is initialized in device mode.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.h b/LUFA/Drivers/USB/LowLevel/Endpoint.h
index a7a28225888060473388410f9d3854f5e228e47a..651c0e8e6972e081df5c40ee535a4e5705e838b2 100644
--- a/LUFA/Drivers/USB/LowLevel/Endpoint.h
+++ b/LUFA/Drivers/USB/LowLevel/Endpoint.h
@@ -28,17 +28,12 @@
   this software.
 */
 
-/** \file
+/** \ingroup Group_USB
+ *  @defgroup Group_EndpointManagement Endpoint Management
  *
  *  Functions, macros and enums related to endpoint management when in USB Device mode. This
  *  module contains the endpoint management macros, as well as endpoint interrupt and data
  *  send/recieve functions for various data types.
- */
-
-/** \ingroup Group_USB
- *  @defgroup Group_EndpointManagement Endpoint Management
- *
- *  Functions, macros, variables, enums and types related to the setup and management of endpoints while in USB Device mode.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/LowLevel/Host.h b/LUFA/Drivers/USB/LowLevel/Host.h
index 1ff2d7ab2d6d4ce0e2e8adf56214f999572898e8..82cceb2c011ff72c91b120cc5fa7b6d78719d87f 100644
--- a/LUFA/Drivers/USB/LowLevel/Host.h
+++ b/LUFA/Drivers/USB/LowLevel/Host.h
@@ -28,16 +28,11 @@
   this software.
 */
 
-/** \file
- *
- *  USB Host mode related macros and enums. This module contains macros and enums which are used when
- *  the USB controller is initialized in host mode.
- */
-
 /** \ingroup Group_USB
  *  @defgroup Group_Host Host Management
  *
- *  Functions, macros, variables, enums and types related to the management of a USB host when in Host mode.
+ *  USB Host mode related macros and enums. This module contains macros and enums which are used when
+ *  the USB controller is initialized in host mode.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/LowLevel/HostChapter9.h b/LUFA/Drivers/USB/LowLevel/HostChapter9.h
index 8e7695b34ea0f25635257e933e445ecd79c123b1..c2c4ece7a8c0f9ca301929714e52926a20410695 100644
--- a/LUFA/Drivers/USB/LowLevel/HostChapter9.h
+++ b/LUFA/Drivers/USB/LowLevel/HostChapter9.h
@@ -28,14 +28,6 @@
   this software.
 */
 
-/** \file
- *
- *  Module for host mode request processing. This module allows for the transmission of standard, class and
- *  vendor control requests to the default control endpoint of an attached device while in host mode.
- *
- *  \see Chapter 9 of the USB 2.0 specification.
- */
-
 #ifndef __HOSTCHAPTER9_H__
 #define __HOSTCHAPTER9_H__
 
diff --git a/LUFA/Drivers/USB/LowLevel/LowLevel.h b/LUFA/Drivers/USB/LowLevel/LowLevel.h
index a6f506f3b0ec8c218e4bbded6b4d375f5acd145d..5c474df705e6c9ccae7adfe451f73ba43034b356 100644
--- a/LUFA/Drivers/USB/LowLevel/LowLevel.h
+++ b/LUFA/Drivers/USB/LowLevel/LowLevel.h
@@ -28,12 +28,6 @@
   this software.
 */
 
-/** \file
- *
- *  Main low level USB driver. This module manages the low level initialization and shut down of the USB AVR's
- *  USB interface in either device or (if supported) host mode.
- */
-
 /** \ingroup Group_USB
  *  @defgroup Group_USBManagement USB Interface Management
  *
diff --git a/LUFA/Drivers/USB/LowLevel/OTG.h b/LUFA/Drivers/USB/LowLevel/OTG.h
index caef82cb6b09bd3b1fff04950b76a405b12b414d..da303c9093acf902265c4c4c27ad3f70e091c32e 100644
--- a/LUFA/Drivers/USB/LowLevel/OTG.h
+++ b/LUFA/Drivers/USB/LowLevel/OTG.h
@@ -27,19 +27,13 @@
   arising out of or in connection with the use or performance of
   this software.
 */
-
-/** \file
- *
- *  Macros for embedded USB hosts with dual role On The Go capabilities, for managing role exchange. OTG
- *  is a way for two USB dual role devices to talk to one another directly without fixed device/host roles.
- *
- *  \note These macros are only for AVRs which support the OTG protocol, and do not exist for device-only AVRs.
- */
  
 /** \ingroup Group_USB
  *  @defgroup Group_OTGManagement USB On The Go (OTG) Management
  *
- *  Functions, macros, variables, enums and types related to the setup and management of dual role devices.
+ *  This module contains macros for embedded USB hosts with dual role On The Go capabilities, for managing role
+ *  exchange. OTG is a way for two USB dual role devices to talk to one another directly without fixed device/host
+ *  roles.
  *
  *  @{
  */
diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.h b/LUFA/Drivers/USB/LowLevel/Pipe.h
index 9d8dded04dcb6f2dd9cf09b96a0833db8e50d9b2..15be81e13549f7a0f3af8dff822660957404c8c7 100644
--- a/LUFA/Drivers/USB/LowLevel/Pipe.h
+++ b/LUFA/Drivers/USB/LowLevel/Pipe.h
@@ -27,18 +27,13 @@
   arising out of or in connection with the use or performance of
   this software.
 */
-
-/** \file
- *
- *  Functions, macros and enums related to pipe management when in USB Host mode. This
- *  module contains the pipe management macros, as well as pipe interrupt and data
- *  send/recieve functions for various data types.
- */
  
 /** \ingroup Group_USB
  *  @defgroup Group_PipeManagement Pipe Management
  *
- *  Functions, macros, variables, enums and types related to the setup and management of pipes while in USB Device mode.
+ *  This module contains functions, macros and enums related to pipe management when in USB Host mode. This
+ *  module contains the pipe management macros, as well as pipe interrupt and data send/recieve functions
+ *  for various data types.
  *
  *  @{
  */
@@ -55,8 +50,11 @@
  
 /** @defgroup Group_PipeControlReq Pipe Control Request Management
  *
- *  Functions, macros, variables, enums and types related to control request management of pipes.
- */
+ *  Module for host mode request processing. This module allows for the transmission of standard, class and
+ *  vendor control requests to the default control endpoint of an attached device while in host mode.
+ *
+ *  \see Chapter 9 of the USB 2.0 specification.
+ */ 
 
 #ifndef __PIPE_H__
 #define __PIPE_H__
diff --git a/LUFA/Drivers/USB/USB.h b/LUFA/Drivers/USB/USB.h
index 4d1408849cfed7e0f43e449524ea5b671de25bcd..e0d8127875308fd00f834df70020103de5902020 100644
--- a/LUFA/Drivers/USB/USB.h
+++ b/LUFA/Drivers/USB/USB.h
@@ -33,13 +33,26 @@
  *  Master include file for the library USB functionality. This file should be included in all user projects making
  *  use of the USB portions of the library, instead of including any headers in the USB/LowLevel or USB/HighLevel
  *  directories.
- *
- *  Class specific utility files in USB/Class/ must still be included manually, as they are not normally part of
- *  the USB library unless desired by the library user.
  */
 
 /** @defgroup Group_USB USB - LUFA/Drivers/USB/USB.h
  *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - LUFA/Drivers/USB/LowLevel/DevChapter9.c
+ *    - LUFA/Drivers/USB/LowLevel/Endpoint.c
+ *    - LUFA/Drivers/USB/LowLevel/Host.c
+ *    - LUFA/Drivers/USB/LowLevel/HostChapter9.c
+ *    - LUFA/Drivers/USB/LowLevel/LowLevel.c
+ *    - LUFA/Drivers/USB/LowLevel/Pipe.c
+ *    - LUFA/Drivers/USB/HighLevel/Events.c
+ *    - LUFA/Drivers/USB/HighLevel/StdDescriptors.c
+ *    - LUFA/Drivers/USB/HighLevel/USBInterrupt.c
+ *    - LUFA/Drivers/USB/HighLevel/USBTask.c
+ *    - LUFA/Drivers/USB/Class/ConfigDescriptor.c
+ *    - LUFA/Drivers/USB/Class/HIDParser.c
+ *
+ *  \section Module Description
  *  Functions, macros, variables, enums and types related to the management of USB communications.
  */
 
diff --git a/LUFA/Groups.txt b/LUFA/Groups.txt
index dec615bf871f94101998b79a2e0007c64ab84a8b..f479b51db5c74d0c6b0af27fdcedcb3a0d7ada6b 100644
--- a/LUFA/Groups.txt
+++ b/LUFA/Groups.txt
@@ -9,7 +9,7 @@
  *  Functions, macros, variables, enums and types related to the control of physical board hardware.
  */
 
-/** @defgroup Group_ChipPeripheralDrivers On-chip Peripheral Drivers
+/** @defgroup Group_PeripheralDrivers On-chip Peripheral Drivers
  *
  *  Functions, macros, variables, enums and types related to the control of AVR subsystems.
  */
diff --git a/LUFA/MemoryAllocator/DynAlloc.h b/LUFA/MemoryAllocator/DynAlloc.h
index d53b8bb30cc6c58723cee3c0537e1cd7f9d3f9ea..acbfbd18a6438c084d3c2445c097f2b00781dbf3 100644
--- a/LUFA/MemoryAllocator/DynAlloc.h
+++ b/LUFA/MemoryAllocator/DynAlloc.h
@@ -33,6 +33,18 @@
  *  Dynamic, auto-defragmenting block memory allocator library. This library provides a convenient replacement for
  *  the standard avr-libc dynamic memory allocation routines. Memory is handed out in block chunks, to reduce the
  *  management memory overhead.
+ */
+
+/** @defgroup Group_MemoryAllocator Dynamic Block Memory Allocator - LUFA/MemoryAllocator/DynAlloc.h
+ *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - LUFA/MemoryAllocator/DynAlloc.c
+ *
+ *  \section Module Description
+ *  Dynamic, auto-defragmenting block memory allocator library. This library provides a convenient replacement for
+ *  the standard avr-libc dynamic memory allocation routines. Memory is handed out in block chunks, to reduce the
+ *  management memory overhead.
  *
  *  Unlike the normal memory allocation routines, this library gives out handles to memory which must be dereferenced
  *  at the exact time of use, rather than handing back direct memory pointers. By using library managed handles
@@ -48,12 +60,7 @@
  *  NUM_BLOCKS indicates the number of memory blocks in the memory psudoheap which can be chained together and handed
  *  to the application via a memory handle. NUM_HANDLES is the maximum number of memory handles (pointing to one or
  *  more chained memory blocks) which can be handed out simultaneously before requiring a handle (and its associated
- *  memory) to be freed. BLOCK_SIZE gives the number of bytes in each memory block.
- */
-
-/** @defgroup Group_MemoryAllocator Dynamic Block Memory Allocator - LUFA/MemoryAllocator/DynAlloc.h
- *
- *  Dynamic auto-degragmenting memory block allocator functions. See DynAlloc.h description for more details.
+ *  memory) to be freed. BLOCK_SIZE gives the number of bytes in each memory block. 
  *
  *  @{
  */
diff --git a/LUFA/Scheduler/Scheduler.h b/LUFA/Scheduler/Scheduler.h
index 904380cd3ab335d04266087b6536be7b39bbd588..38e97367202f63dbd716dcf48b5a7388e4cc5101 100644
--- a/LUFA/Scheduler/Scheduler.h
+++ b/LUFA/Scheduler/Scheduler.h
@@ -32,6 +32,17 @@
  *
  *  Simple round-robbin cooperative scheduler for use in basic projects where non real-time tasks need
  *  to be executed. Each task is executed in sequence, and can be enabled or disabled individually or as a group.
+ */
+ 
+/** @defgroup Group_Scheduler Simple Task Scheduler - LUFA/Scheduler/Scheduler.h
+ *
+ *  \section Sec_Dependencies Module Source Dependencies
+ *  The following files must be built with any user project that uses this module:
+ *    - LUFA/Scheduler/Scheduler.c
+ *
+ *  \section Module Description
+ *  Simple round-robbin cooperative scheduler for use in basic projects where non real-time tasks need
+ *  to be executed. Each task is executed in sequence, and can be enabled or disabled individually or as a group.
  *
  *  For a task to yield it must return, thus each task should have persistent data marked with the static attribute.
  *
@@ -63,11 +74,6 @@
  *      	// Implementation Here
  *      }
  *  \endcode
- */
- 
-/** @defgroup Group_Scheduler Simple Task Scheduler - LUFA/Scheduler/Scheduler.h
- *
- *  Simple round-robbin task scheduler. See Scheduler.h description for more details.
  *
  *  @{
  */
diff --git a/Projects/Magstripe/makefile b/Projects/Magstripe/makefile
index 908a626f2c0e71bf58c56213357f9397356a49a4..979952d424f1bd8584795a6470940bc363eab682 100644
--- a/Projects/Magstripe/makefile
+++ b/Projects/Magstripe/makefile
@@ -127,13 +127,18 @@ SRC = $(TARGET).c                                                 \
 	  Descriptors.c                                               \
 	  CircularBitBuffer.c                                         \
 	  $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c                     \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
-	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \
+ 	  $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \
 	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c      \
+	  $(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c             \
 
 
 # List C++ source files here. (C dependencies are automatically generated.)