diff --git a/Bootloaders/TeensyHID/makefile b/Bootloaders/TeensyHID/makefile
index 2173c35653d6dbc8a1bc852fa00d2b7041ca2b5b..062a3243b233b4c94f096e788b6ccdc31a63f194 100644
--- a/Bootloaders/TeensyHID/makefile
+++ b/Bootloaders/TeensyHID/makefile
@@ -75,7 +75,7 @@ BOARD  = USBKEY
 #         F_CPU = 16000000
 #         F_CPU = 18432000
 #         F_CPU = 20000000
-F_CPU = 8000000
+F_CPU = 16000000
 
 
 # Input clock frequency.
@@ -89,7 +89,7 @@ F_CPU = 8000000
 #
 #     If no clock division is performed on the input clock inside the AVR (via the
 #     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_CLOCK = 8000000
+F_CLOCK = 16000000
 
 
 # Output format. (can be srec, ihex, binary)
diff --git a/Projects/Magstripe/CircularBitBuffer.h b/Projects/Magstripe/CircularBitBuffer.h
index 52410f649bfd5350738101aad81e14112ba4e331..71b9e26a78744d9f11c4d370fb79811044256c72 100644
--- a/Projects/Magstripe/CircularBitBuffer.h
+++ b/Projects/Magstripe/CircularBitBuffer.h
@@ -47,7 +47,7 @@
 		#if (defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) || \
 		     defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__)) || defined(__DOXYGEN__)
 			/** Maximum number of bits which can be stored into a bit buffer. The memory usage is one eigth of this value per buffer. */
-			#define MAX_BITS 20480
+			#define MAX_BITS 8192
 		#else
 			#define MAX_BITS 1024
 		#endif
diff --git a/Projects/Magstripe/Magstripe.c b/Projects/Magstripe/Magstripe.c
index 0e10053da44104dc7bc491e0d62f75937e977357..aef7812fa2fcbe76774db134e7117747389588f2 100644
--- a/Projects/Magstripe/Magstripe.c
+++ b/Projects/Magstripe/Magstripe.c
@@ -316,13 +316,13 @@ bool GetNextReport(USB_KeyboardReport_Data_t* ReportData)
 		if (OddReport)
 		{
 			/* Set the report key code to the key code for the next data bit */
-			ReportData->KeyCode[0] = BitBuffer_GetNextBit(Buffer) ? KEY_1 : KEY_0;
+			ReportData->KeyCode = BitBuffer_GetNextBit(Buffer) ? KEY_1 : KEY_0;
 			
 			/* If buffer is now empty, a new line must be sent instead of the terminating bit */
 			if (!(Buffer->Elements))
 			{
 				/* Set the keycode to the code for an enter key press */
-				ReportData->KeyCode[0] = KEY_ENTER;				
+				ReportData->KeyCode = KEY_ENTER;				
 			}
 		}
 
diff --git a/Projects/Magstripe/Magstripe.h b/Projects/Magstripe/Magstripe.h
index 61f3098eab7ee6d1da572ce18763a9f9f96d9d65..fbf68e51cac43d10abca59b01cc3da6bc6fab24d 100644
--- a/Projects/Magstripe/Magstripe.h
+++ b/Projects/Magstripe/Magstripe.h
@@ -98,7 +98,7 @@
 		{
 			uint8_t Modifier; /**< Modifier byte, indicating pressed modifier keys such as CTRL or ALT */
 			uint8_t Reserved; /**< Reserved for OEM use, always set to 0 */
-			uint8_t KeyCode[6]; /**< Key code array for pressed keys - up to six can be given simultaneously */
+			uint8_t KeyCode; /**< Key code array for pressed keys - up to six can be given simultaneously */
 		} USB_KeyboardReport_Data_t;
 
 	/* Event Handlers: */
diff --git a/Projects/Magstripe/makefile b/Projects/Magstripe/makefile
index 98cf23de0bf636d94ca6d81a05d1c0db9b8bcc6e..25f3fa4290c04adb6c1237e9528b5fdfb4edddcb 100644
--- a/Projects/Magstripe/makefile
+++ b/Projects/Magstripe/makefile
@@ -66,7 +66,7 @@ MCU = at90usb1287
 # Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
-BOARD  = USBKEY
+BOARD  = USER
 
 
 # Processor frequency.
@@ -101,7 +101,7 @@ F_CPU = 16000000
 #
 #     If no clock division is performed on the input clock inside the AVR (via the
 #     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_CLOCK = 8000000
+F_CLOCK = 16000000
 
 
 # Output format. (can be srec, ihex, binary)