diff --git a/BuildTests/ModuleTest/Modules.h b/BuildTests/ModuleTest/Modules.h
index 6f50a996c82f6aacbaee373ffa17d5cdbaec9fa7..00f7b8913d21161049ddfe961f565557c8f35278 100644
--- a/BuildTests/ModuleTest/Modules.h
+++ b/BuildTests/ModuleTest/Modules.h
@@ -35,9 +35,15 @@
 #include <LUFA/Drivers/Misc/TerminalCodes.h>
 
 #if (ARCH == ARCH_AVR8)
-	#include <LUFA/Drivers/Peripheral/Serial.h>
-	#include <LUFA/Drivers/Peripheral/TWI.h>
-	#include <LUFA/Drivers/Peripheral/ADC.h>
+	#if defined(TWCR)
+		#include <LUFA/Drivers/Peripheral/TWI.h>
+	#endif
+
+	#if defined(ADC)
+		#include <LUFA/Drivers/Peripheral/ADC.h>
+	#endif
+
+	#include <LUFA/Drivers/Peripheral/Serial.h>	
 	#include <LUFA/Drivers/Peripheral/SPI.h>
 	#include <LUFA/Drivers/Peripheral/SerialSPI.h>
 #elif (ARCH == ARCH_XMEGA)
diff --git a/BuildTests/ModuleTest/makefile b/BuildTests/ModuleTest/makefile
index 7706ca6166a4317778758769eca85cef74616fad..1930eddc16b9e017508c180052e532cbd019aafd 100644
--- a/BuildTests/ModuleTest/makefile
+++ b/BuildTests/ModuleTest/makefile
@@ -12,21 +12,37 @@
 # all module headers in a simple C and C++
 # application.
 
-all:
+
+# List of device families per architecture, one device per architecture sub-family
+AVR8_FAMILIES  = at90usb1287 at90usb1286 atmega32u4 atmega32u2
+XMEGA_FAMILIES = atxmega128a1u atxmega128a3u atxmega128a4u atxmega128b1 atxmega128b3
+UC3_FAMILIES   = uc3a0256 uc3a1256 uc3a3256 uc3a4256 uc3b0256 uc3b1256
+
+# List of all device families, with a family postfix
+DEVICE_FAMILIES = $(AVR8_FAMILIES:%=%.avr8) $(XMEGA_FAMILIES:%=%.xmega) $(UC3_FAMILIES:%=%.uc3)
+
+
+all: begin $(DEVICE_FAMILIES) end
+
+begin:
 	@echo Executing build test "ModuleTest".
 	@echo
 
+end:
+	@echo Build test "ModuleTest" complete.
+	@echo
+
+%.avr8:
 	$(MAKE) -f makefile.avr8 clean
-	$(MAKE) -f makefile.avr8
+	$(MAKE) -f makefile.avr8 all MCU=$(@:%.avr8=%)
 
+%.xmega:
 	$(MAKE) -f makefile.xmega clean
-	$(MAKE) -f makefile.xmega
+	$(MAKE) -f makefile.xmega all MCU=$(@:%.xmega=%)
 
+%.uc3:
 	$(MAKE) -f makefile.uc3 clean
-	$(MAKE) -f makefile.uc3
-
-	@echo Build test "ModuleTest" complete.
-	@echo
+	$(MAKE) -f makefile.uc3 all MCU=$(@:%.uc3=%)
 
 clean:
 	$(MAKE) -f makefile.avr8 clean
diff --git a/BuildTests/ModuleTest/makefile.avr8 b/BuildTests/ModuleTest/makefile.avr8
index b4c319540abc25930b40457812a9abcd670b1e67..f41470f7a3c49650ac7a955f00e0a6d0ad182d7f 100644
--- a/BuildTests/ModuleTest/makefile.avr8
+++ b/BuildTests/ModuleTest/makefile.avr8
@@ -132,7 +132,6 @@ SRC = Test_C.c                   \
       $(LUFA_SRC_USB)            \
       $(LUFA_SRC_USBCLASS)       \
       $(LUFA_SRC_SERIAL)         \
-      $(LUFA_SRC_TWI)            \
       $(LUFA_SRC_SCHEDULER)