diff --git a/Bootloaders/CDC/BootloaderCDC.c b/Bootloaders/CDC/BootloaderCDC.c
index 54c7b7e49d2cee312f6961cc60c250aad71adefe..60fe4a4bc9e5e99096698f89541b61f8c8db56e0 100644
--- a/Bootloaders/CDC/BootloaderCDC.c
+++ b/Bootloaders/CDC/BootloaderCDC.c
@@ -71,8 +71,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 	
 	/* Relocate the interrupt vector table to the bootloader section */
 	MCUCR = (1 << IVCE);
diff --git a/Bootloaders/CDC/BootloaderCDC.h b/Bootloaders/CDC/BootloaderCDC.h
index a6e77550c9132f1a1351003bd67a243c1d47ed1b..dce84a5f84d4b9868e1eacfb294043b5f33626a1 100644
--- a/Bootloaders/CDC/BootloaderCDC.h
+++ b/Bootloaders/CDC/BootloaderCDC.h
@@ -41,6 +41,7 @@
 		#include <avr/wdt.h>
 		#include <avr/boot.h>
 		#include <avr/eeprom.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 
 		#include "Descriptors.h"
diff --git a/Bootloaders/DFU/BootloaderDFU.c b/Bootloaders/DFU/BootloaderDFU.c
index 704133f5dfafeb88f4b7db0fdba9c1cf1b68950b..8cc5fd4099ab4a7405916046e832d8aaaabc0f49 100644
--- a/Bootloaders/DFU/BootloaderDFU.c
+++ b/Bootloaders/DFU/BootloaderDFU.c
@@ -109,8 +109,8 @@ int main (void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 	
 	/* Relocate the interrupt vector table to the bootloader section */
 	MCUCR = (1 << IVCE);
diff --git a/Bootloaders/DFU/BootloaderDFU.h b/Bootloaders/DFU/BootloaderDFU.h
index b90fee13fe7263814f15d7025de9a1546a343955..21e8fce71fbd6f11ba3c6e61bfad8ac4e1cc9cbe 100644
--- a/Bootloaders/DFU/BootloaderDFU.h
+++ b/Bootloaders/DFU/BootloaderDFU.h
@@ -42,6 +42,7 @@
 		#include <avr/boot.h>
 		#include <avr/pgmspace.h>
 		#include <avr/eeprom.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 	
 		#include "Descriptors.h"
diff --git a/Bootloaders/TeensyHID/TeensyHID.c b/Bootloaders/TeensyHID/TeensyHID.c
index 4f09ac50b7c00f3d62c105a2e07b75010bedf680..fe20702cddfdd58109dc83f47b27afe80f0d4a78 100644
--- a/Bootloaders/TeensyHID/TeensyHID.c
+++ b/Bootloaders/TeensyHID/TeensyHID.c
@@ -53,8 +53,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Relocate the interrupt vector table to the bootloader section */
 	MCUCR = (1 << IVCE);
diff --git a/Bootloaders/TeensyHID/TeensyHID.h b/Bootloaders/TeensyHID/TeensyHID.h
index a53fca30f6d1db13a3362828fdfc2aa3e3aafe24..a4773f8f543962f934091d3b151bd3de73d2f479 100644
--- a/Bootloaders/TeensyHID/TeensyHID.h
+++ b/Bootloaders/TeensyHID/TeensyHID.h
@@ -41,6 +41,7 @@
 		#include <avr/wdt.h>
 		#include <avr/boot.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 		#include <util/delay.h>
 		#include <stdbool.h>
 
diff --git a/Demos/AudioInput/AudioInput.c b/Demos/AudioInput/AudioInput.c
index f5474b497f2980c186501943aef8eee8ca9e43ca..0db41c3c11e667bb99eea5706083db206c41a857 100644
--- a/Demos/AudioInput/AudioInput.c
+++ b/Demos/AudioInput/AudioInput.c
@@ -63,8 +63,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 	
 	/* Hardware Initialization */
 	LEDs_Init();
diff --git a/Demos/AudioInput/AudioInput.h b/Demos/AudioInput/AudioInput.h
index 97978fdea54470b1672506d26d93bf8f233ec193..02c838039c66a8b648b01de656559310ff7ed14e 100644
--- a/Demos/AudioInput/AudioInput.h
+++ b/Demos/AudioInput/AudioInput.h
@@ -39,6 +39,7 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 
 		#include "Descriptors.h"
 				
diff --git a/Demos/AudioOutput/AudioOutput.c b/Demos/AudioOutput/AudioOutput.c
index 184910e81a385105036ee05b10e35a7e182f9f6c..3d2e3249ed7df14352950b5bc4bc861550f7fbcf 100644
--- a/Demos/AudioOutput/AudioOutput.c
+++ b/Demos/AudioOutput/AudioOutput.c
@@ -66,8 +66,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	LEDs_Init();
diff --git a/Demos/AudioOutput/AudioOutput.h b/Demos/AudioOutput/AudioOutput.h
index 3b9923179b2dab6f701ad821570372ee165ccbc0..0ad9e5bf9d347240d8fbabf0127cfeb2f4824f81 100644
--- a/Demos/AudioOutput/AudioOutput.h
+++ b/Demos/AudioOutput/AudioOutput.h
@@ -39,6 +39,7 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 
 		#include "Descriptors.h"
 		
diff --git a/Demos/BluetoothHost/BluetoothHost.c b/Demos/BluetoothHost/BluetoothHost.c
index 50bd1a8fe191bab3325e32de6263763fcda24e6d..2e5ae44d2d291515ddd986a593a0065ff2525560 100644
--- a/Demos/BluetoothHost/BluetoothHost.c
+++ b/Demos/BluetoothHost/BluetoothHost.c
@@ -74,8 +74,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/BluetoothHost/BluetoothHost.h b/Demos/BluetoothHost/BluetoothHost.h
index 5fe9dbd1e9992c0eb0e373c3dcd07f578cbf97e8..51d41735660a25296f043e31c384f88f549c9548 100644
--- a/Demos/BluetoothHost/BluetoothHost.h
+++ b/Demos/BluetoothHost/BluetoothHost.h
@@ -35,6 +35,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/pgmspace.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 
 		#include "BluetoothStack.h"
diff --git a/Demos/CDC/CDC.c b/Demos/CDC/CDC.c
index 6e232a48b7bf84817bfbfa5f2fbb160edc632938..eeae625cfece4acecea1f5bf1b3f167f55e81d10 100644
--- a/Demos/CDC/CDC.c
+++ b/Demos/CDC/CDC.c
@@ -87,8 +87,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/CDC/CDC.h b/Demos/CDC/CDC.h
index 98f30b52fc9309185ea05f06b29454c86bf9db41..d953303f75edb43b4a9257d1c0eaa9e8c28e16b0 100644
--- a/Demos/CDC/CDC.h
+++ b/Demos/CDC/CDC.h
@@ -39,6 +39,7 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 		#include <string.h>
 
 		#include "Descriptors.h"
diff --git a/Demos/CDCHost/CDCHost.c b/Demos/CDCHost/CDCHost.c
index ac6d89ad116ac21ae24ebf3e60baefc23637653c..1f05ecb1f4b0b673d8072896e7ba0046d134c356 100644
--- a/Demos/CDCHost/CDCHost.c
+++ b/Demos/CDCHost/CDCHost.c
@@ -59,8 +59,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/CDCHost/CDCHost.h b/Demos/CDCHost/CDCHost.h
index 2adbefd3079600f23bbe590f547656ea000450bd..21b9d67edab1cbb01baa6a4e4af5eba76e75816f 100644
--- a/Demos/CDCHost/CDCHost.h
+++ b/Demos/CDCHost/CDCHost.h
@@ -40,6 +40,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/pgmspace.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 
 		#include <LUFA/Version.h>                                // Library Version Information
diff --git a/Demos/DualCDC/DualCDC.c b/Demos/DualCDC/DualCDC.c
index 90f00997ee8aa71a0660cab37909f0ec60e6ee61..8e6e3890716e9c901a5ce9a70fadeda610e0fc4a 100644
--- a/Demos/DualCDC/DualCDC.c
+++ b/Demos/DualCDC/DualCDC.c
@@ -101,8 +101,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/DualCDC/DualCDC.h b/Demos/DualCDC/DualCDC.h
index 5a01e07f78d7c92857e717bb12cd42f786c1afed..4c62abf9dad61a2ed0480b940b492e0a347fd7e0 100644
--- a/Demos/DualCDC/DualCDC.h
+++ b/Demos/DualCDC/DualCDC.h
@@ -39,6 +39,7 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 		#include <string.h>
 
 		#include "Descriptors.h"
diff --git a/Demos/Joystick/Joystick.c b/Demos/Joystick/Joystick.c
index 88d4158430bf98f2a7925339575bc6e5864ffba3..cd8822705b560369c4a66a672749b9a7c47ca720 100644
--- a/Demos/Joystick/Joystick.c
+++ b/Demos/Joystick/Joystick.c
@@ -58,8 +58,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/Joystick/Joystick.h b/Demos/Joystick/Joystick.h
index 966fa7e104414bb2ee92b479059cc21c6c4f0668..79c7e498fb09ea7bb2fb51ff652ec082eab7a1e7 100644
--- a/Demos/Joystick/Joystick.h
+++ b/Demos/Joystick/Joystick.h
@@ -39,6 +39,7 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 		#include <string.h>
 
 		#include "Descriptors.h"
diff --git a/Demos/Keyboard/Keyboard.c b/Demos/Keyboard/Keyboard.c
index 92f4ae948620007a090633a22fb40c9ca173a02a..22d406dbe9e66d3d291345fe5b0aa11138cefcd4 100644
--- a/Demos/Keyboard/Keyboard.c
+++ b/Demos/Keyboard/Keyboard.c
@@ -77,8 +77,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/Keyboard/Keyboard.h b/Demos/Keyboard/Keyboard.h
index e1aed1ec99b4c2f8b72f056246f48f5a2a1b8f9b..6988e579aba33126d0ef9d33065c7023250105a1 100644
--- a/Demos/Keyboard/Keyboard.h
+++ b/Demos/Keyboard/Keyboard.h
@@ -41,6 +41,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/interrupt.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 		#include <string.h>
 
diff --git a/Demos/KeyboardFullInt/KeyboardFullInt.c b/Demos/KeyboardFullInt/KeyboardFullInt.c
index 44f98305919c283cd9091527576ca90fe7707196..ed081376d32c483730b74cdd5b9b0a2f104ac1c6 100644
--- a/Demos/KeyboardFullInt/KeyboardFullInt.c
+++ b/Demos/KeyboardFullInt/KeyboardFullInt.c
@@ -70,8 +70,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/KeyboardFullInt/KeyboardFullInt.h b/Demos/KeyboardFullInt/KeyboardFullInt.h
index 7711faaa3e61f24c36764e9ae2579add59d0e13b..cc6655a6aad8a70df38cff7553d6033bb96a8407 100644
--- a/Demos/KeyboardFullInt/KeyboardFullInt.h
+++ b/Demos/KeyboardFullInt/KeyboardFullInt.h
@@ -41,6 +41,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/interrupt.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 		#include <string.h>
 
diff --git a/Demos/KeyboardHost/KeyboardHost.c b/Demos/KeyboardHost/KeyboardHost.c
index dd05bdea2673adec33a7310b654f56a289c8d6fc..74d65550ed5e3d311ecf29eca21cafb571ffdaf9 100644
--- a/Demos/KeyboardHost/KeyboardHost.c
+++ b/Demos/KeyboardHost/KeyboardHost.c
@@ -59,8 +59,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/KeyboardHost/KeyboardHost.h b/Demos/KeyboardHost/KeyboardHost.h
index 97695f748b14911ddc4980056bc7d25426b0eabd..388e50f525ddb6d2eb0ca7e1eb16853b282a3486 100644
--- a/Demos/KeyboardHost/KeyboardHost.h
+++ b/Demos/KeyboardHost/KeyboardHost.h
@@ -40,6 +40,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/pgmspace.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 
 		#include <LUFA/Version.h>                                // Library Version Information
diff --git a/Demos/KeyboardHostViaInt/KeyboardHostViaInt.c b/Demos/KeyboardHostViaInt/KeyboardHostViaInt.c
index ecff9511473769bf08b4849d691e00562fb2d805..424eb85027511f1ef48b07de7152a50bf5db6f4a 100644
--- a/Demos/KeyboardHostViaInt/KeyboardHostViaInt.c
+++ b/Demos/KeyboardHostViaInt/KeyboardHostViaInt.c
@@ -59,8 +59,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/KeyboardHostViaInt/KeyboardHostViaInt.h b/Demos/KeyboardHostViaInt/KeyboardHostViaInt.h
index 22848eeaf1bbe2d2260491493b240fe0948370c9..7ae54e6adaa19f9ab2508d8ab02ecbb6eaeb1d41 100644
--- a/Demos/KeyboardHostViaInt/KeyboardHostViaInt.h
+++ b/Demos/KeyboardHostViaInt/KeyboardHostViaInt.h
@@ -41,6 +41,7 @@
 		#include <avr/pgmspace.h>
 		#include <avr/interrupt.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 
 		#include <LUFA/Version.h>                                // Library Version Information
diff --git a/Demos/KeyboardHostWithParser/KeyboardHostWithParser.c b/Demos/KeyboardHostWithParser/KeyboardHostWithParser.c
index f0eec2b99c5d2d94f7c9961d8a5271c8250031a3..f7a0087e7ddbba43de0ea02db68064734381c3e4 100644
--- a/Demos/KeyboardHostWithParser/KeyboardHostWithParser.c
+++ b/Demos/KeyboardHostWithParser/KeyboardHostWithParser.c
@@ -59,8 +59,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/KeyboardHostWithParser/KeyboardHostWithParser.h b/Demos/KeyboardHostWithParser/KeyboardHostWithParser.h
index 6846e179e2a8ea3d397f3c529b069b1eb465de29..fece6797182d6300699a33753d722724ab6d8e14 100644
--- a/Demos/KeyboardHostWithParser/KeyboardHostWithParser.h
+++ b/Demos/KeyboardHostWithParser/KeyboardHostWithParser.h
@@ -35,6 +35,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/pgmspace.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 
 		#include <LUFA/Version.h>                                // Library Version Information
diff --git a/Demos/KeyboardMouse/KeyboardMouse.c b/Demos/KeyboardMouse/KeyboardMouse.c
index 383c66a58bf0f0185b962b6823abc142d2bff2af..8108a30327e5119ebc3aa7d4de110a6aea8528b9 100644
--- a/Demos/KeyboardMouse/KeyboardMouse.c
+++ b/Demos/KeyboardMouse/KeyboardMouse.c
@@ -67,8 +67,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/KeyboardMouse/KeyboardMouse.h b/Demos/KeyboardMouse/KeyboardMouse.h
index f5c1d4e7751def65627096c76536c48f1778053b..9794159fc35ef90264eedadc7913648ebf9ef4b3 100644
--- a/Demos/KeyboardMouse/KeyboardMouse.h
+++ b/Demos/KeyboardMouse/KeyboardMouse.h
@@ -35,6 +35,7 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 		#include <string.h>
 
diff --git a/Demos/KeyboardViaInt/KeyboardViaInt.c b/Demos/KeyboardViaInt/KeyboardViaInt.c
index 7916506755276978a18a43d68e173b305dc8b06c..b66506df5a123739e871ced2ce04f6978c6517a3 100644
--- a/Demos/KeyboardViaInt/KeyboardViaInt.c
+++ b/Demos/KeyboardViaInt/KeyboardViaInt.c
@@ -76,8 +76,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/KeyboardViaInt/KeyboardViaInt.h b/Demos/KeyboardViaInt/KeyboardViaInt.h
index 833bc919bc9da0980cedb5157c9a2913a78cb0f4..7dfe60d19cdcd81d48b61c9fce56d76afd014353 100644
--- a/Demos/KeyboardViaInt/KeyboardViaInt.h
+++ b/Demos/KeyboardViaInt/KeyboardViaInt.h
@@ -41,6 +41,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/interrupt.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 		#include <string.h>
 
diff --git a/Demos/MIDI/MIDI.c b/Demos/MIDI/MIDI.c
index a9c827a0d315d0abae21fb874438d70979426c9f..c0e4f9df9fd67b46da6a6b7f495eed1b8e7c1473 100644
--- a/Demos/MIDI/MIDI.c
+++ b/Demos/MIDI/MIDI.c
@@ -58,8 +58,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 	
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/MIDI/MIDI.h b/Demos/MIDI/MIDI.h
index 1775c63747c153160725266ae49a827fabdff663..733a7baedfe038b729dc79f7d7bca91f0fc2d731 100644
--- a/Demos/MIDI/MIDI.h
+++ b/Demos/MIDI/MIDI.h
@@ -39,6 +39,7 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 
 		#include "Descriptors.h"
diff --git a/Demos/MassStorage/MassStorage.c b/Demos/MassStorage/MassStorage.c
index fb61530ff36ab84164fed549bca31c17280aa0d3..34fcee4884fc6247299aa5e77fc9dcbfe8e44dee 100644
--- a/Demos/MassStorage/MassStorage.c
+++ b/Demos/MassStorage/MassStorage.c
@@ -68,8 +68,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	LEDs_Init();
diff --git a/Demos/MassStorage/MassStorage.h b/Demos/MassStorage/MassStorage.h
index 4f0e5b58fd3ea5166dc6fc4bf34f54376096f0e2..3525340ffd204bcb5449b2595cefb687393124b3 100644
--- a/Demos/MassStorage/MassStorage.h
+++ b/Demos/MassStorage/MassStorage.h
@@ -39,6 +39,7 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 
 		#include "Descriptors.h"
 		#include "SCSI.h"
diff --git a/Demos/MassStorageHost/MassStorageHost.c b/Demos/MassStorageHost/MassStorageHost.c
index ee4befd04999c5259a4f9e6b374b8caf064cd962..d042b78bbb3c58b0b82922e07a2797b8fda616b0 100644
--- a/Demos/MassStorageHost/MassStorageHost.c
+++ b/Demos/MassStorageHost/MassStorageHost.c
@@ -63,8 +63,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/MassStorageHost/MassStorageHost.h b/Demos/MassStorageHost/MassStorageHost.h
index 3ace6d46ab6dc3b8af7360d00e92f05d53711ce1..b130cfed3114f41bb2794659b18f7596b6759f4b 100644
--- a/Demos/MassStorageHost/MassStorageHost.h
+++ b/Demos/MassStorageHost/MassStorageHost.h
@@ -40,6 +40,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/pgmspace.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 		#include <ctype.h>
 
diff --git a/Demos/Mouse/Mouse.c b/Demos/Mouse/Mouse.c
index 9080efba34e648b52b94b7789955eba7dcd02a98..3e59706c98e5bcefec1c0873abc28ef2105e5e67 100644
--- a/Demos/Mouse/Mouse.c
+++ b/Demos/Mouse/Mouse.c
@@ -76,8 +76,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/Mouse/Mouse.h b/Demos/Mouse/Mouse.h
index 1c7b5888da75da1f0af45c8b05420dab72d0c435..50908129aa6d63a70362046cad6ca55f62b745f0 100644
--- a/Demos/Mouse/Mouse.h
+++ b/Demos/Mouse/Mouse.h
@@ -40,6 +40,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/interrupt.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 		#include <string.h>
 		
diff --git a/Demos/MouseFullInt/MouseFullInt.c b/Demos/MouseFullInt/MouseFullInt.c
index 28267a14f69bd15c193fa9dbacaeae5463ba90e8..98782b6cf9193b4f57282d5246f85d335a08873c 100644
--- a/Demos/MouseFullInt/MouseFullInt.c
+++ b/Demos/MouseFullInt/MouseFullInt.c
@@ -69,8 +69,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/MouseFullInt/MouseFullInt.h b/Demos/MouseFullInt/MouseFullInt.h
index 9fdc51d3bc47f36b8f58425498ff93738e8ecc11..f46f7ef980ff883574e7f32462d17dc242579044 100644
--- a/Demos/MouseFullInt/MouseFullInt.h
+++ b/Demos/MouseFullInt/MouseFullInt.h
@@ -40,6 +40,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/interrupt.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 		#include <string.h>
 		
diff --git a/Demos/MouseHost/MouseHost.c b/Demos/MouseHost/MouseHost.c
index 2bc13a90771644e998b6b2fb98133a44205d5495..ee7aec9d5cca339056a61e25f26a7030832e8d7f 100644
--- a/Demos/MouseHost/MouseHost.c
+++ b/Demos/MouseHost/MouseHost.c
@@ -59,8 +59,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 	
 	/* Hardware Initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/MouseHost/MouseHost.h b/Demos/MouseHost/MouseHost.h
index 9e474956b419d907dfd1ccf5bf0a4bbe6bbf7fe9..1bd52ebea5a2dcdd9a2a8c7b27b8a8ccf89d7a40 100644
--- a/Demos/MouseHost/MouseHost.h
+++ b/Demos/MouseHost/MouseHost.h
@@ -40,6 +40,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/pgmspace.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 
 		#include <LUFA/Version.h>                                // Library Version Information
diff --git a/Demos/MouseHostViaInt/MouseHostViaInt.c b/Demos/MouseHostViaInt/MouseHostViaInt.c
index c4c3778586a96bfa9ca16b2730bfc0e181d49a73..a44f707d989c11e05664b84c91b10f0f08f1649d 100644
--- a/Demos/MouseHostViaInt/MouseHostViaInt.c
+++ b/Demos/MouseHostViaInt/MouseHostViaInt.c
@@ -59,8 +59,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/MouseHostViaInt/MouseHostViaInt.h b/Demos/MouseHostViaInt/MouseHostViaInt.h
index c4238c80b095cd8cadda6e6e9051d8c93bc4915f..459bc2261729673e42b1cff9e81039f4cc004346 100644
--- a/Demos/MouseHostViaInt/MouseHostViaInt.h
+++ b/Demos/MouseHostViaInt/MouseHostViaInt.h
@@ -41,6 +41,7 @@
 		#include <avr/pgmspace.h>
 		#include <avr/interrupt.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 
 		#include <LUFA/Version.h>                                // Library Version Information
diff --git a/Demos/MouseHostWithParser/MouseHostWithParser.c b/Demos/MouseHostWithParser/MouseHostWithParser.c
index 97bad3b5b4af4d3ac09729cb0e38520eb399d4ef..5ccda491265c09607f612d5d93a80755262ccf18 100644
--- a/Demos/MouseHostWithParser/MouseHostWithParser.c
+++ b/Demos/MouseHostWithParser/MouseHostWithParser.c
@@ -59,8 +59,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 	
 	/* Hardware Initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/MouseHostWithParser/MouseHostWithParser.h b/Demos/MouseHostWithParser/MouseHostWithParser.h
index 6d1ce32d00930826ec03998d96ea2fa279c1276b..b59ab9a7898aa7df1b829dec5f07b08ca44c7124 100644
--- a/Demos/MouseHostWithParser/MouseHostWithParser.h
+++ b/Demos/MouseHostWithParser/MouseHostWithParser.h
@@ -35,6 +35,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/pgmspace.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 
 		#include <LUFA/Version.h>                                // Library Version Information
diff --git a/Demos/MouseViaInt/MouseViaInt.c b/Demos/MouseViaInt/MouseViaInt.c
index a4b863c133e0201154641a9fc7a7c6df9e02884f..445fb499407fdf49678e8145d790b692c1ca4f1a 100644
--- a/Demos/MouseViaInt/MouseViaInt.c
+++ b/Demos/MouseViaInt/MouseViaInt.c
@@ -74,8 +74,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Joystick_Init();
diff --git a/Demos/MouseViaInt/MouseViaInt.h b/Demos/MouseViaInt/MouseViaInt.h
index 6f4b9abe56d08009270a2473cecaef9d8521e617..ccc37ef3cd4f42bf80a3c0bdb63a978810744c74 100644
--- a/Demos/MouseViaInt/MouseViaInt.h
+++ b/Demos/MouseViaInt/MouseViaInt.h
@@ -40,6 +40,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/interrupt.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 		#include <string.h>
 		
diff --git a/Demos/RNDISEthernet/RNDISEthernet.c b/Demos/RNDISEthernet/RNDISEthernet.c
index 255a53b3dd8b9ed82acc1432e2336b55884cbd28..3f9bb187ad0c04627f389d565831ccc563b1d3eb 100644
--- a/Demos/RNDISEthernet/RNDISEthernet.c
+++ b/Demos/RNDISEthernet/RNDISEthernet.c
@@ -60,8 +60,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	LEDs_Init();
diff --git a/Demos/RNDISEthernet/RNDISEthernet.h b/Demos/RNDISEthernet/RNDISEthernet.h
index 4a0f3c18391ba7a6b940e84f0c4eb99ec0332ea1..83e49ce84c210563aa7cd8456095608a76fed57e 100644
--- a/Demos/RNDISEthernet/RNDISEthernet.h
+++ b/Demos/RNDISEthernet/RNDISEthernet.h
@@ -39,9 +39,10 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/pgmspace.h>
+		#include <avr/power.h>
 		#include <string.h>
 		#include <stdio.h>
-		#include <avr/pgmspace.h>
 
 		#include "Descriptors.h"
 		#include "RNDIS.h"
diff --git a/Demos/StillImageHost/StillImageHost.h b/Demos/StillImageHost/StillImageHost.h
index 5669c827c9477c79c1c8b077d27e447e9443edde..7757b080773940005bc01200ba35e03de738fcb4 100644
--- a/Demos/StillImageHost/StillImageHost.h
+++ b/Demos/StillImageHost/StillImageHost.h
@@ -39,6 +39,7 @@
 	/* Includes: */
 		#include <avr/io.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 		#include <stdio.h>
 		
 		#include "ConfigDescriptor.h"
diff --git a/Demos/TestApp/TestApp.c b/Demos/TestApp/TestApp.c
index e7ee526d7f29214d187d9097591ea8a3e6fae794..a66a728c9328991c1d1baed2981091172bf1cdba 100644
--- a/Demos/TestApp/TestApp.c
+++ b/Demos/TestApp/TestApp.c
@@ -61,7 +61,7 @@ int main(void)
 	wdt_disable();
 
 	/* Disable clock division */
-	SetSystemClockPrescaler(0);
+	clock_prescale_set(clock_div_1);
 	
 	/* Hardware initialization */
 	SerialStream_Init(9600, false);
diff --git a/Demos/TestApp/TestApp.h b/Demos/TestApp/TestApp.h
index 4175fad120c436c8bdd59a5fa065135b700d1335..cb262397dd332696b47e55d31c8fb9c91cb25e1c 100644
--- a/Demos/TestApp/TestApp.h
+++ b/Demos/TestApp/TestApp.h
@@ -40,6 +40,7 @@
 		#include <avr/io.h>
 		#include <avr/interrupt.h>
 		#include <avr/wdt.h>
+		#include <avr/power.h>
 
 		#include <LUFA/Version.h>                               // Library Version Information
 		#include <LUFA/Drivers/USB/USB.h>                       // USB Functionality
diff --git a/Demos/USBtoSerial/USBtoSerial.c b/Demos/USBtoSerial/USBtoSerial.c
index 0cef8d193e14502b9f5c314bc191f5bf91800c9c..0495826b9d48ff8605d8f00b28a5e7d9b8766273 100644
--- a/Demos/USBtoSerial/USBtoSerial.c
+++ b/Demos/USBtoSerial/USBtoSerial.c
@@ -72,8 +72,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	LEDs_Init();
diff --git a/Demos/USBtoSerial/USBtoSerial.h b/Demos/USBtoSerial/USBtoSerial.h
index f363fa93f4f4f7151b4ada014b41edb4bf2b102c..3fb6d7d9f71d1c9002c00cf69a6b097858baa346 100644
--- a/Demos/USBtoSerial/USBtoSerial.h
+++ b/Demos/USBtoSerial/USBtoSerial.h
@@ -40,6 +40,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/interrupt.h>
+		#include <avr/power.h>
 
 		#include "Descriptors.h"
 		#include "RingBuff.h"
diff --git a/LUFA/ChangeLog.txt b/LUFA/ChangeLog.txt
index f699507dde28280d33ff461e099fec7bc1787fb7..1a2b9f8a1813d9bc3893051163e4a280935fcd0f 100644
--- a/LUFA/ChangeLog.txt
+++ b/LUFA/ChangeLog.txt
@@ -28,6 +28,7 @@
   *  - Mass Storage Host demo now uses a USB_STREAM_TIMEOUT_MS of two seconds to maintain compatibility with poorly designed devices
   *  - Function attribute ATTR_ALWAYSINLINE renamed to ATTR_ALWAYS_INLINE to match other function attribute macro naming conventions
   *  - Added ATTR_ALWAYS_INLINE attribute to several key inlined library components, to ensure they are inlined in all circumstances
+  *  - Removed SetSystemClockPrescaler() macro, the clock_prescale_set() avr-libc macro has been corrected in recent avr-libc versions
   *
   *  \section Sec_ChangeLog090209 Version 090209
   *
diff --git a/LUFA/Common/Common.h b/LUFA/Common/Common.h
index 97e9ce9318f458183f2e44b4e6f154712dcbed65..ed2d1bc904bb55f97573a4ef799f2b40b8179675 100644
--- a/LUFA/Common/Common.h
+++ b/LUFA/Common/Common.h
@@ -88,27 +88,6 @@
 			                                } }MACROE
 
 		/* Inline Functions: */
-			/** Function for reliably setting the AVR's system clock prescaler, using inline assembly. This function
-			 *  is guaranteed to operate reliably regardless of optimization setting or other compile time options. 
-			 *
-			 *  \param PrescalerMask   The mask of the new prescaler setting for CLKPR
-			 */
-			static inline void SetSystemClockPrescaler(uint8_t PrescalerMask)
-			{
-					uint8_t tmp = (1 << CLKPCE);
-					__asm__ __volatile__ (
-							"in __tmp_reg__,__SREG__" "\n\t"
-							"cli" "\n\t"
-							"sts %1, %0" "\n\t"
-							"sts %1, %2" "\n\t"
-							"out __SREG__, __tmp_reg__"
-							: /* no outputs */
-							: "d" (tmp),
-							  "M" (_SFR_MEM_ADDR(CLKPR)),
-							  "d" (PrescalerMask)
-							: "r0");
-			}
-
 			/** Function to reverse the individual bits in a byte - i.e. bit 7 is moved to bit 0, bit 6 to bit 1,
 			 *  etc.
 			 *
diff --git a/LUFA/MigrationInformation.txt b/LUFA/MigrationInformation.txt
index ebfc364d05e4e254b0958a499136033892ae0ad3..364f09c3e0f603d0eb4bcd9e7a411409a1330f0f 100644
--- a/LUFA/MigrationInformation.txt
+++ b/LUFA/MigrationInformation.txt
@@ -17,6 +17,8 @@
  *      defined in the project makefile and passed to the compiler via the -D switch.
  *    - The makefile EEPROM programming targets for FLIP and dfu-programmer no longer program in the FLASH data in addition to the
  *      EEPROM data into the device. If both are to be programmed, both the EEPROM and FLASH programming targets must be called.
+ *    - As the avr-libc macro has been corrected in recent avr-libc distributions, the SetSystemClockPrescaler() macro has been removed.
+ *      Include <avr/power.h> and call clock_prescale_set(clock_div_1); instead on recent avr-libc distributions.
  *
  *  <b>Library Demos</b>
  *    - The USBtoSerial demo now discards all data when not connected to a host, rather than buffering it for later transmission.
diff --git a/Projects/AVRISP_Programmer/AVRISP_Programmer.c b/Projects/AVRISP_Programmer/AVRISP_Programmer.c
index 9ba3c0e7ece4901e600706c952ecdd0c3e02a98b..4bc4f9cc31876d2e1f6fb99bf761f7b83b2ee922 100644
--- a/Projects/AVRISP_Programmer/AVRISP_Programmer.c
+++ b/Projects/AVRISP_Programmer/AVRISP_Programmer.c
@@ -167,8 +167,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	LEDs_Init();
diff --git a/Projects/AVRISP_Programmer/AVRISP_Programmer.h b/Projects/AVRISP_Programmer/AVRISP_Programmer.h
index 4c98d6bf3a461213b0c13e5eb73b472133d57789..c6ac13fe7bb8c7f02e0ea40c3b3c22624e629ee0 100644
--- a/Projects/AVRISP_Programmer/AVRISP_Programmer.h
+++ b/Projects/AVRISP_Programmer/AVRISP_Programmer.h
@@ -37,10 +37,11 @@
 #define _AVRISP_PROGRAMMER_H_
 
 	/* Includes: */
-		#include <util/delay.h>
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/interrupt.h>
+		#include <avr/power.h>
+		#include <util/delay.h>
 
 		#include "Descriptors.h"
 		#include "RingBuff.h"
diff --git a/Projects/Magstripe/Magstripe.c b/Projects/Magstripe/Magstripe.c
index 3696c12496b220f5dd0b708b08fad02bc2115b5b..2826c140e0530d73ab4f4788612e58f5c2efd0d3 100644
--- a/Projects/Magstripe/Magstripe.c
+++ b/Projects/Magstripe/Magstripe.c
@@ -93,8 +93,8 @@ int main(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
-	/* Disable Clock Division */
-	SetSystemClockPrescaler(0);
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
 
 	/* Hardware Initialization */
 	Magstripe_Init();
diff --git a/Projects/Magstripe/Magstripe.h b/Projects/Magstripe/Magstripe.h
index cde2fcdc6356205aca647aa451e26200287625e0..61f3098eab7ee6d1da572ce18763a9f9f96d9d65 100644
--- a/Projects/Magstripe/Magstripe.h
+++ b/Projects/Magstripe/Magstripe.h
@@ -41,6 +41,7 @@
 		#include <avr/io.h>
 		#include <avr/wdt.h>
 		#include <avr/interrupt.h>
+		#include <avr/power.h>
 		#include <stdbool.h>
 		#include <string.h>