diff --git a/libraries/APM_RC/APM_RC_APM1.cpp b/libraries/APM_RC/APM_RC_APM1.cpp
index cd242cd312ccb82af6bc54260856e16e1b8b5afa..fa4995f8c87ee8d9d8cbc391074044966c94d38f 100644
--- a/libraries/APM_RC/APM_RC_APM1.cpp
+++ b/libraries/APM_RC/APM_RC_APM1.cpp
@@ -21,7 +21,11 @@
 #include "APM_RC_APM1.h"
 
 #include <avr/interrupt.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
 # error Please check the Tools/Board menu to ensure you have selected Arduino Mega as your target.
diff --git a/libraries/APM_RC/APM_RC_APM2.cpp b/libraries/APM_RC/APM_RC_APM2.cpp
index f9e55fcac54176e4f17f09f9855dfd0c8e730412..22532949909d86f49a4b0d5eec0bfe6616c09955 100644
--- a/libraries/APM_RC/APM_RC_APM2.cpp
+++ b/libraries/APM_RC/APM_RC_APM2.cpp
@@ -20,7 +20,11 @@
 */
 #include "APM_RC_APM2.h"
 
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
 # error Please check the Tools/Board menu to ensure you have selected Arduino Mega as your target.
diff --git a/libraries/AP_ADC/AP_ADC_ADS7844.cpp b/libraries/AP_ADC/AP_ADC_ADS7844.cpp
index 5eea6eb370541ebd032868f48d4c9ab89d3cce41..c3cf71cda2550b356b5dc2ac7e72f2434493517f 100644
--- a/libraries/AP_ADC/AP_ADC_ADS7844.cpp
+++ b/libraries/AP_ADC/AP_ADC_ADS7844.cpp
@@ -44,15 +44,19 @@
 	Channel 7 : Differential pressure sensor port
 
 */
+#include "AP_ADC_ADS7844.h"
+
 extern "C" {
 	// AVR LibC Includes
 	#include <inttypes.h>
 	#include <stdint.h>
 	#include <avr/interrupt.h>
-	#include "WConstants.h"
 }
-
-#include "AP_ADC_ADS7844.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 
 // Commands for reading ADC channels on ADS7844
 static const unsigned char 		adc_cmd[9]		= { 0x87, 0xC7, 0x97, 0xD7, 0xA7, 0xE7, 0xB7, 0xF7, 0x00 };
diff --git a/libraries/AP_ADC/AP_ADC_HIL.cpp b/libraries/AP_ADC/AP_ADC_HIL.cpp
index 5a0cb92583bb58476d1d461f5b705a64ac4a67c3..80488682ab0b57cb32931eb0b8aef7d2dac5bdee 100644
--- a/libraries/AP_ADC/AP_ADC_HIL.cpp
+++ b/libraries/AP_ADC/AP_ADC_HIL.cpp
@@ -1,5 +1,9 @@
 #include "AP_ADC_HIL.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 /*
 	AP_ADC_HIL.cpp
diff --git a/libraries/AP_AnalogSource/AP_AnalogSource_Arduino.cpp b/libraries/AP_AnalogSource/AP_AnalogSource_Arduino.cpp
index 3406a59a229d54506acc03aa92ff3a68c4069685..ff9189e79a90c03c375198ff3b2b2e99ce3f3ee1 100644
--- a/libraries/AP_AnalogSource/AP_AnalogSource_Arduino.cpp
+++ b/libraries/AP_AnalogSource/AP_AnalogSource_Arduino.cpp
@@ -1,6 +1,10 @@
 /// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
 
-#include "wiring.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "wiring.h"
+#endif
 #include "AP_AnalogSource_Arduino.h"
 
 float AP_AnalogSource_Arduino::read(void)
diff --git a/libraries/AP_Baro/AP_Baro_BMP085.cpp b/libraries/AP_Baro/AP_Baro_BMP085.cpp
index eefd9c5dad49ec4144213b6e8e78a3b9ad993df5..cf2b1bd52774469c826257852d0da660981522c1 100644
--- a/libraries/AP_Baro/AP_Baro_BMP085.cpp
+++ b/libraries/AP_Baro/AP_Baro_BMP085.cpp
@@ -39,8 +39,12 @@ extern "C" {
   // AVR LibC Includes
   #include <inttypes.h>
   #include <avr/interrupt.h>
-  #include "WConstants.h"
 }
+#if defined(ARDUINO) && ARDUINO >= 100
+  #include "Arduino.h"
+#else
+  #include "WConstants.h"
+#endif
 
 #include <AP_Common.h>
 #include <AP_Math.h>		// ArduPilot Mega Vector/Matrix math Library
diff --git a/libraries/AP_Baro/AP_Baro_BMP085_hil.cpp b/libraries/AP_Baro/AP_Baro_BMP085_hil.cpp
index 795326cb4fa1bf92abece0ac7a26c2a457c75beb..71577b8d4a868c43dee511d28e881d3fdeb4c3ba 100644
--- a/libraries/AP_Baro/AP_Baro_BMP085_hil.cpp
+++ b/libraries/AP_Baro/AP_Baro_BMP085_hil.cpp
@@ -4,8 +4,12 @@ extern "C" {
   // AVR LibC Includes
   #include <inttypes.h>
   #include <avr/interrupt.h>
-  #include "WConstants.h"
 }
+#if defined(ARDUINO) && ARDUINO >= 100
+  #include "Arduino.h"
+#else
+  #include "WConstants.h"
+#endif
 
 #include "AP_Baro_BMP085_hil.h"
 
diff --git a/libraries/AP_Common/AP_Common.h b/libraries/AP_Common/AP_Common.h
index 0ffe4aea36ed7145e7697c3537add3a6fb7bfc44..64ff287f15f767c6fa4cc3a25f6b0bf6086131d4 100644
--- a/libraries/AP_Common/AP_Common.h
+++ b/libraries/AP_Common/AP_Common.h
@@ -16,7 +16,11 @@
 #define _AP_COMMON_H
 
 // Get the common arduino functions
-#include "wiring.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "wiring.h"
+#endif
 // ... and remove some of their stupid macros
 #undef round
 #undef abs
diff --git a/libraries/AP_Common/AP_Vector.h b/libraries/AP_Common/AP_Vector.h
index a82018c388cc46707b4490bb864b48b444eebeb4..bcd081a4d35b4ee92f67cc1f7dcc82d4676458a5 100644
--- a/libraries/AP_Common/AP_Vector.h
+++ b/libraries/AP_Common/AP_Vector.h
@@ -22,7 +22,11 @@
 #include "../FastSerial/BetterStream.h"
 #include <stdlib.h>
 #include <inttypes.h>
-#include <WProgram.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include <WProgram.h>
+#endif
 
 #ifdef ASSERT
 const static char vectorSource[] ="Vector.hpp";
diff --git a/libraries/AP_Common/c++.cpp b/libraries/AP_Common/c++.cpp
index a11b97ff9b7c0d6ee28fe423199d268543591181..8ea4bc4f41a88487bebd67b7c40cd4777c6634ae 100644
--- a/libraries/AP_Common/c++.cpp
+++ b/libraries/AP_Common/c++.cpp
@@ -9,7 +9,11 @@
 
 #include <stdlib.h>
 #include "c++.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 void * operator new(size_t size)
 {
diff --git a/libraries/AP_Compass/AP_Compass_HMC5843.cpp b/libraries/AP_Compass/AP_Compass_HMC5843.cpp
index 2f6b9e72cc4b40c1f8b2b970d760020c4e4c378c..6a160230bdad83e126a0b931f662fa8a748c6963 100644
--- a/libraries/AP_Compass/AP_Compass_HMC5843.cpp
+++ b/libraries/AP_Compass/AP_Compass_HMC5843.cpp
@@ -15,8 +15,12 @@
 
 // AVR LibC Includes
 #include <math.h>
-#include "WConstants.h"
 #include <FastSerial.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 
 #include <I2C.h>
 #include "AP_Compass_HMC5843.h"
diff --git a/libraries/AP_DCM/AP_DCM.h b/libraries/AP_DCM/AP_DCM.h
index e3a6a89950982bb4dfb98db0397186fc74e2bf1d..bf1a539479f06a40b6dab8399eea9785b723d686 100644
--- a/libraries/AP_DCM/AP_DCM.h
+++ b/libraries/AP_DCM/AP_DCM.h
@@ -10,12 +10,15 @@
 #include "../FastSerial/FastSerial.h"
 #include "../AP_Math/AP_Math.h"
 #include <inttypes.h>
-#include "WProgram.h"
 #include "../AP_Compass/AP_Compass.h"
 #include "../AP_ADC/AP_ADC.h"
 #include "../AP_GPS/AP_GPS.h"
 #include "../AP_IMU/AP_IMU.h"
-
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 class AP_DCM
 {
diff --git a/libraries/AP_DCM/AP_DCM_HIL.h b/libraries/AP_DCM/AP_DCM_HIL.h
index a8266fcb0900496328b79a89edeaff5efa6beff6..ad59081f615e974359676089b1e055e6c8927768 100644
--- a/libraries/AP_DCM/AP_DCM_HIL.h
+++ b/libraries/AP_DCM/AP_DCM_HIL.h
@@ -4,11 +4,15 @@
 #include "../FastSerial/FastSerial.h"
 #include "../AP_Math/AP_Math.h"
 #include <inttypes.h>
-#include "WProgram.h"
 #include "../AP_Compass/AP_Compass.h"
 #include "../AP_ADC/AP_ADC.h"
 #include "../AP_GPS/AP_GPS.h"
 #include "../AP_IMU/AP_IMU.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 
 class AP_DCM_HIL
diff --git a/libraries/AP_EEPROMB/AP_EEPROMB.h b/libraries/AP_EEPROMB/AP_EEPROMB.h
index 38b4d5019fc9cba67fe016a513df2e11b7f9e8a4..f9378bc802cdd6efc6161fc42ae3abbd8bb315eb 100644
--- a/libraries/AP_EEPROMB/AP_EEPROMB.h
+++ b/libraries/AP_EEPROMB/AP_EEPROMB.h
@@ -6,8 +6,11 @@
 #ifndef AP_EEPROMB_h
 #define AP_EEPROMB_h
 
-//#include <stdint.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 /// @class	AP_EEPROMB
 /// @brief	Object for reading and writing to the EEPROM
diff --git a/libraries/AP_GPS/AP_GPS_406.cpp b/libraries/AP_GPS/AP_GPS_406.cpp
index 30ca72a62c0a6345cdb207217a89786686d8aac3..2dbc6139bbf80987143f77dca561933d5c00661b 100644
--- a/libraries/AP_GPS/AP_GPS_406.cpp
+++ b/libraries/AP_GPS/AP_GPS_406.cpp
@@ -11,7 +11,11 @@
 
 #include "../FastSerial/FastSerial.h"	// because we need to change baud rates... ugh.
 #include "AP_GPS_406.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 static const char init_str[] = "$PSRF100,0,57600,8,1,0*37";
 
diff --git a/libraries/AP_GPS/AP_GPS_HIL.cpp b/libraries/AP_GPS/AP_GPS_HIL.cpp
index 38db02ba0535a1effb673bc7572e402ffec60e1b..31fa562155c1291ef9993994e161df382470f791 100644
--- a/libraries/AP_GPS/AP_GPS_HIL.cpp
+++ b/libraries/AP_GPS/AP_GPS_HIL.cpp
@@ -12,7 +12,11 @@
 //
 
 #include "AP_GPS_HIL.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 // Constructors ////////////////////////////////////////////////////////////////
 AP_GPS_HIL::AP_GPS_HIL(Stream *s) : GPS(s)
diff --git a/libraries/AP_GPS/AP_GPS_IMU.cpp b/libraries/AP_GPS/AP_GPS_IMU.cpp
index 8e5da67ae9e8384d7bd80321dbc2b869b05340cb..9695fd6aae0c9a048c6b7713e0faf12505281371 100644
--- a/libraries/AP_GPS/AP_GPS_IMU.cpp
+++ b/libraries/AP_GPS/AP_GPS_IMU.cpp
@@ -28,7 +28,11 @@
 
 */
 #include "AP_GPS_IMU.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 
 // Constructors ////////////////////////////////////////////////////////////////
diff --git a/libraries/AP_GPS/AP_GPS_MTK16.cpp b/libraries/AP_GPS/AP_GPS_MTK16.cpp
index 9b4f9a95b81546e914e755580b94b69f12768ec6..7531917d0bfda365e91d835be3b25f8dea50f050 100644
--- a/libraries/AP_GPS/AP_GPS_MTK16.cpp
+++ b/libraries/AP_GPS/AP_GPS_MTK16.cpp
@@ -13,7 +13,11 @@
 
 #include "AP_GPS_MTK16.h"
 #include <stdint.h>
-#include <wiring.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include <wiring.h>
+#endif
 
 // Constructors ////////////////////////////////////////////////////////////////
 AP_GPS_MTK16::AP_GPS_MTK16(Stream *s) : GPS(s)
diff --git a/libraries/AP_GPS/GPS.cpp b/libraries/AP_GPS/GPS.cpp
index db5ef00d6d521ffe8d5369a8e882e2dc0413c3cc..87c4c8f2e339ed9eee61a479236786deb5445c4a 100644
--- a/libraries/AP_GPS/GPS.cpp
+++ b/libraries/AP_GPS/GPS.cpp
@@ -1,7 +1,11 @@
 // -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: t -*-
 
 #include "GPS.h"
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 void
 GPS::update(void)
diff --git a/libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp b/libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp
index ccd6a67c41fa6a636b9201044f01d300ea5b4a86..3cfd3aefeb27ffe845d0d68efb6cb17eaf28f2d0 100644
--- a/libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp
+++ b/libraries/AP_InertialSensor/AP_InertialSensor_MPU6000.cpp
@@ -3,8 +3,12 @@
 
 #include "AP_InertialSensor_MPU6000.h"
 
-#include <wiring.h>
 #include <SPI.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include <wiring.h>
+#endif
 
 // MPU 6000 registers
 #define MPUREG_WHOAMI 0x75 //
diff --git a/libraries/AP_Navigation/Navigation.h b/libraries/AP_Navigation/Navigation.h
index 4fce19da6399bd0bba0c2be3cb9cc520221cc8d0..b0919854b8d083c9da509aa24baeb26d9e7a2759 100644
--- a/libraries/AP_Navigation/Navigation.h
+++ b/libraries/AP_Navigation/Navigation.h
@@ -6,7 +6,11 @@
 #define XTRACK_ENTRY_ANGLE 3000			// Max angle used to correct for track following	degrees*100
 #include <GPS.h>						// ArduPilot GPS Library
 #include "Waypoints.h"					// ArduPilot Waypoints Library
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #define T7 10000000
 
diff --git a/libraries/AP_OpticalFlow/AP_OpticalFlow_ADNS3080.cpp b/libraries/AP_OpticalFlow/AP_OpticalFlow_ADNS3080.cpp
index 85c6251b089db2b1a0362a22cf5ed6bbca4de062..dc24db1392257c9bfe08b3f7c50c0ee64c4f255f 100644
--- a/libraries/AP_OpticalFlow/AP_OpticalFlow_ADNS3080.cpp
+++ b/libraries/AP_OpticalFlow/AP_OpticalFlow_ADNS3080.cpp
@@ -24,8 +24,12 @@
 */
 
 #include "AP_OpticalFlow_ADNS3080.h"
-#include "WProgram.h"
 #include "SPI.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #define AP_SPI_TIMEOUT 1000
 
diff --git a/libraries/AP_PeriodicProcess/AP_TimerProcess.cpp b/libraries/AP_PeriodicProcess/AP_TimerProcess.cpp
index 5ba103de2fd46a3906a2bc75da220c0de9f5c709..767efacfb164ef03a6e2ac022d9b1924f4ef891e 100644
--- a/libraries/AP_PeriodicProcess/AP_TimerProcess.cpp
+++ b/libraries/AP_PeriodicProcess/AP_TimerProcess.cpp
@@ -5,9 +5,13 @@
 extern "C" {
 #include <inttypes.h>
 #include <stdint.h>
-#include "WConstants.h"
 #include <avr/interrupt.h>
 }
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 
 uint8_t AP_TimerProcess::_period;
 ap_procedure AP_TimerProcess::_proc[AP_TIMERPROCESS_MAX_PROCS];
diff --git a/libraries/AP_RC/AP_RC.cpp b/libraries/AP_RC/AP_RC.cpp
index 8c2db835cf3d76eb5c87f517ef31b98e8de8bfd3..ee20c5f1e07360aefeeede0d6b4ebe7d21f095d6 100644
--- a/libraries/AP_RC/AP_RC.cpp
+++ b/libraries/AP_RC/AP_RC.cpp
@@ -10,8 +10,12 @@
 */
 
 #include "AP_RC.h"
-#include "WProgram.h"
 #include <avr/interrupt.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 // Variable definition for interrupt
 volatile uint16_t timer1count   = 0;
diff --git a/libraries/AP_RC_Channel/AP_RC_Channel.cpp b/libraries/AP_RC_Channel/AP_RC_Channel.cpp
index 9c8c8a6ca460e9c630a3b1cb54974c71e6da50b1..eea2e91b338e25a16767aef487711e6d68d0ad76 100644
--- a/libraries/AP_RC_Channel/AP_RC_Channel.cpp
+++ b/libraries/AP_RC_Channel/AP_RC_Channel.cpp
@@ -11,7 +11,11 @@
 
 #include <math.h>
 #include <avr/eeprom.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 #include "AP_RC_Channel.h"
 
 #define ANGLE 0
diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp b/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp
index 3e8b6019f11c5001f8728c7106ae38136a6a6000..20915092d600b928c4ce4d2bca5b67ee2ce0be6e 100644
--- a/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp
+++ b/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp
@@ -26,7 +26,11 @@
 */
 
 // AVR LibC Includes
-#include "WConstants.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 #include "AP_RangeFinder_MaxsonarXL.h"
 
 // Constructor //////////////////////////////////////////////////////////////
diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp b/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp
index bb8a20c896912ed693d8c7c97b02bf48f60b9fa8..3f08bb7dc722f1158ca1bc44d8f907481726c9de 100644
--- a/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp
+++ b/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp
@@ -26,7 +26,11 @@
 */
 
 // AVR LibC Includes
-#include "WConstants.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 #include "AP_RangeFinder_SharpGP2Y.h"
 
 // Constructor //////////////////////////////////////////////////////////////
diff --git a/libraries/AP_RangeFinder/RangeFinder.cpp b/libraries/AP_RangeFinder/RangeFinder.cpp
index 582e072d60f150bffc79d4dece59371d1167db82..63945e5ab7e31119b1f5b75b2b8559fa73c17337 100644
--- a/libraries/AP_RangeFinder/RangeFinder.cpp
+++ b/libraries/AP_RangeFinder/RangeFinder.cpp
@@ -13,7 +13,11 @@
 */
 
 // AVR LibC Includes
-#include "WConstants.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 #include "RangeFinder.h"
 
 
diff --git a/libraries/AP_Relay/AP_Relay.cpp b/libraries/AP_Relay/AP_Relay.cpp
index 0c62abb44950992884ae7ba85cfbcbe8ada6bb98..800e35ea7105fe722c5db5a0c8ea92d0806365c8 100644
--- a/libraries/AP_Relay/AP_Relay.cpp
+++ b/libraries/AP_Relay/AP_Relay.cpp
@@ -8,7 +8,11 @@
  */
 
 #include <avr/io.h>
-#include "wiring.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "wiring.h"
+#endif
 
 #include "AP_Relay.h"
 
diff --git a/libraries/DataFlash/DataFlash_APM2.cpp b/libraries/DataFlash/DataFlash_APM2.cpp
index 72e336e2eea8337bbbd06197440b185e7cb638a3..a1a2897fc3bdd353efc9dac7ef235a6496fd6932 100644
--- a/libraries/DataFlash/DataFlash_APM2.cpp
+++ b/libraries/DataFlash/DataFlash_APM2.cpp
@@ -36,8 +36,12 @@ extern "C" {
   // AVR LibC Includes
   #include <inttypes.h>
   #include <avr/interrupt.h>
-  #include "WConstants.h"
 }
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WConstants.h"
+#endif
 
 #include "DataFlash_APM2.h"
 
diff --git a/libraries/FastSerial/FastSerial.cpp b/libraries/FastSerial/FastSerial.cpp
index 75c8e850f0ebb45829cb88d9776d3b0dad392ea9..efc8c896e6d14d66113e7083fe396c572540221f 100644
--- a/libraries/FastSerial/FastSerial.cpp
+++ b/libraries/FastSerial/FastSerial.cpp
@@ -31,7 +31,12 @@
 
 //#include "../AP_Common/AP_Common.h"
 #include "FastSerial.h"
-#include "WProgram.h"
+
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #if   defined(UDR3)
 # define FS_MAX_PORTS   4
@@ -197,6 +202,30 @@ void FastSerial::flush(void)
 	_txBuffer->tail = _txBuffer->head;
 }
 
+#if defined(ARDUINO) && ARDUINO >= 100
+size_t FastSerial::write(uint8_t c)
+{
+	uint16_t i;
+
+	if (!_open) // drop bytes if not open
+		return 0;
+
+	// wait for room in the tx buffer
+	i = (_txBuffer->head + 1) & _txBuffer->mask;
+	while (i == _txBuffer->tail)
+		;
+
+	// add byte to the buffer
+	_txBuffer->bytes[_txBuffer->head] = c;
+	_txBuffer->head = i;
+
+	// enable the data-ready interrupt, as it may be off if the buffer is empty
+	*_ucsrb |= _portTxBits;
+
+	// return number of bytes written (always 1)
+	return 1;
+}
+#else
 void FastSerial::write(uint8_t c)
 {
 	uint16_t i;
@@ -216,6 +245,7 @@ void FastSerial::write(uint8_t c)
 	// enable the data-ready interrupt, as it may be off if the buffer is empty
 	*_ucsrb |= _portTxBits;
 }
+#endif
 
 // Buffer management ///////////////////////////////////////////////////////////
 
diff --git a/libraries/FastSerial/FastSerial.h b/libraries/FastSerial/FastSerial.h
index bc0417a7c04ab59d42441abe4811caf7cab08e69..5fcaa95c751a2acf50b30e34fd4682ea06479ec1 100644
--- a/libraries/FastSerial/FastSerial.h
+++ b/libraries/FastSerial/FastSerial.h
@@ -116,7 +116,11 @@ public:
 	virtual int read(void);
 	virtual int peek(void);
 	virtual void flush(void);
+#if defined(ARDUINO) && ARDUINO >= 100
+	virtual size_t write(uint8_t c);
+#else
 	virtual void write(uint8_t c);
+#endif
 	using BetterStream::write;
 	//@}
 
diff --git a/libraries/I2C/I2C.cpp b/libraries/I2C/I2C.cpp
index 52fb607f8769405973b22e6f022fb93282385048..2b699b8cc84c1437788c34bfd51d01c5503e44e5 100644
--- a/libraries/I2C/I2C.cpp
+++ b/libraries/I2C/I2C.cpp
@@ -31,9 +31,13 @@
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#include "WProgram.h"
 #include <inttypes.h>
 #include "I2C.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 
 
diff --git a/libraries/I2C/I2C.h b/libraries/I2C/I2C.h
index 32737173da72ce002e0899683f4e4ca6b816a20b..ca957312ad10460ef46c45ab65083b2da0186d01 100644
--- a/libraries/I2C/I2C.h
+++ b/libraries/I2C/I2C.h
@@ -31,8 +31,12 @@
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#include "WProgram.h"
 #include <inttypes.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 #ifndef I2C_h
 #define I2C_h
diff --git a/libraries/ModeFilter/ModeFilter.cpp b/libraries/ModeFilter/ModeFilter.cpp
index b7f4d3c768481b0b5f652229192332f27c3229a0..cf282d56f0889072d71cc90ba000f4c21ac34114 100644
--- a/libraries/ModeFilter/ModeFilter.cpp
+++ b/libraries/ModeFilter/ModeFilter.cpp
@@ -14,7 +14,11 @@
 #include "ModeFilter.h"
 
 #include <avr/interrupt.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 
 // Constructors ////////////////////////////////////////////////////////////////
diff --git a/libraries/RC_Channel/RC_Channel.cpp b/libraries/RC_Channel/RC_Channel.cpp
index 37f90e0cdc9f31477c6651b925e2fbe1e233635b..bd94992ab1b62f0cce396a6ab4b49606e1c89906 100644
--- a/libraries/RC_Channel/RC_Channel.cpp
+++ b/libraries/RC_Channel/RC_Channel.cpp
@@ -11,7 +11,11 @@
 
 #include <math.h>
 #include <avr/eeprom.h>
-#include "WProgram.h"
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 #include "RC_Channel.h"
 
 #define RC_CHANNEL_ANGLE 0
diff --git a/libraries/Waypoints/Waypoints.h b/libraries/Waypoints/Waypoints.h
index ddf03378a4c17bd77b38fb3dcb331098ad833bc6..2830da3bec7d59bf6f12ff585b9229035c9cfd29 100644
--- a/libraries/Waypoints/Waypoints.h
+++ b/libraries/Waypoints/Waypoints.h
@@ -2,8 +2,12 @@
 #define Waypoints_h
 
 #include <inttypes.h>
-#include "WProgram.h"
 #include <avr/eeprom.h>
+#if defined(ARDUINO) && ARDUINO >= 100
+	#include "Arduino.h"
+#else
+	#include "WProgram.h"
+#endif
 
 class Waypoints
 {