diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index 2a237e09396b2893646ac808ddb7729ab18c3e76..78739af246512831bd858d63f51d6590c7b02470 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -21,19 +21,16 @@
 #include  <avr/interrupt.h>
 
 
-
-
-
-
-
-
-
 #include "fastio.h"
 #include "Configuration.h"
 #include "pins.h"
 
-#if ARDUINO >= 100
-  #include "Arduino.h"
+#if ARDUINO >= 100 
+  #if defined(__AVR_ATmega644P__)
+    #include "WProgram.h"
+  #else
+    #include "Arduino.h"
+  #endif
 #else
    #include "WProgram.h"
 #endif
diff --git a/Marlin/SdFile.cpp b/Marlin/SdFile.cpp
index 5781d10b468c69c6af0088c770e60f623a94a9a6..9c42c0074c57413ef9e18c250f95731d73246bf8 100644
--- a/Marlin/SdFile.cpp
+++ b/Marlin/SdFile.cpp
@@ -47,13 +47,14 @@ SdFile::SdFile(const char* path, uint8_t oflag) : SdBaseFile(path, oflag) {
 int16_t SdFile::write(const void* buf, uint16_t nbyte) {
   return SdBaseFile::write(buf, nbyte);
 }
+#warning F_CPU
 //------------------------------------------------------------------------------
 /** Write a byte to a file. Required by the Arduino Print class.
  * \param[in] b the byte to be written.
  * Use writeError to check for errors.
  */
 #if ARDUINO >= 100
-  size_t SdFile::write(uint8_t b)
+    size_t SdFile::write(uint8_t b)
 #else
   void SdFile::write(uint8_t b)
 #endif
diff --git a/Marlin/SdFile.h b/Marlin/SdFile.h
index 2fd5755921313564dcdb3b1abf9ef7183b7e7300..a9efebc684e6ab62c5179f067358f7a21e6d84ed 100644
--- a/Marlin/SdFile.h
+++ b/Marlin/SdFile.h
@@ -21,8 +21,8 @@
  * \file
  * \brief SdFile class
  */
-#include "SdBaseFile.h"
 #include "Marlin.h"
+#include "SdBaseFile.h"
 #include <Print.h>
 #ifndef SdFile_h
 #define SdFile_h
@@ -36,10 +36,10 @@ class SdFile : public SdBaseFile, public Print {
   SdFile() {}
   SdFile(const char* name, uint8_t oflag);
   #if ARDUINO >= 100
-  size_t write(uint8_t b);
-#else
+      size_t write(uint8_t b);
+  #else
    void write(uint8_t b);
-#endif
+  #endif
   
   int16_t write(const void* buf, uint16_t nbyte);
   void write(const char* str);