diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index af7a586ef4..90d644ff11 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -179,11 +179,20 @@ void setPwmFrequency(uint8_t pin, int val);
 
 extern float homing_feedrate[];
 extern bool axis_relative_modes[];
+extern int feedmultiply;
+extern int extrudemultiply; // Sets extrude multiply factor (in percent)
 extern float current_position[NUM_AXIS] ;
 extern float add_homeing[3];
 extern float min_pos[3];
 extern float max_pos[3];
-extern unsigned char FanSpeed;
+extern int fanSpeed;
+
+#ifdef FWRETRACT
+extern bool autoretract_enabled;
+extern bool retracted;
+extern float retract_length, retract_feedrate, retract_zlift;
+extern float retract_recover_length, retract_recover_feedrate;
+#endif
 
 extern unsigned long starttime;
 extern unsigned long stoptime;
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 14a5868daa..fd3fa9fdd3 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -146,16 +146,15 @@ CardReader card;
 #endif
 float homing_feedrate[] = HOMING_FEEDRATE;
 bool axis_relative_modes[] = AXIS_RELATIVE_MODES;
-volatile int feedmultiply=100; //100->1 200->2
+int feedmultiply=100; //100->1 200->2
 int saved_feedmultiply;
-volatile bool feedmultiplychanged=false;
-volatile int extrudemultiply=100; //100->1 200->2
+int extrudemultiply=100; //100->1 200->2
 float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 };
 float add_homeing[3]={0,0,0};
 float min_pos[3] = { X_MIN_POS, Y_MIN_POS, Z_MIN_POS };
 float max_pos[3] = { X_MAX_POS, Y_MAX_POS, Z_MAX_POS };
 uint8_t active_extruder = 0;
-unsigned char FanSpeed=0;
+int fanSpeed=0;
 
 #ifdef FWRETRACT
   bool autoretract_enabled=true;
@@ -1124,14 +1123,14 @@ void process_commands()
     #if FAN_PIN > -1
       case 106: //M106 Fan On
         if (code_seen('S')){
-           FanSpeed=constrain(code_value(),0,255);
+           fanSpeed=constrain(code_value(),0,255);
         }
         else {
-          FanSpeed=255;			
+          fanSpeed=255;			
         }
         break;
       case 107: //M107 Fan Off
-        FanSpeed = 0;
+        fanSpeed = 0;
         break;
     #endif //FAN_PIN
 
@@ -1372,7 +1371,6 @@ void process_commands()
       if(code_seen('S')) 
       {
         feedmultiply = code_value() ;
-        feedmultiplychanged=true;
       }
     }
     break;
diff --git a/Marlin/cardreader.h b/Marlin/cardreader.h
index 679cbbcd79..1c0c145ca5 100644
--- a/Marlin/cardreader.h
+++ b/Marlin/cardreader.h
@@ -66,6 +66,7 @@ private:
   char* diveDirName;
   void lsDive(const char *prepend,SdFile parent);
 };
+extern CardReader card;
 #define IS_SD_PRINTING (card.sdprinting)
 
 #else
diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp
index 161e1b4bf1..a5b4aed3ef 100644
--- a/Marlin/planner.cpp
+++ b/Marlin/planner.cpp
@@ -80,8 +80,6 @@ long position[4];   //rescaled from extern when axis_steps_per_unit are changed
 static float previous_speed[4]; // Speed of previous path line segment
 static float previous_nominal_speed; // Nominal speed of previous path line segment
 
-extern volatile int extrudemultiply; // Sets extrude multiply factor (in percent)
-
 #ifdef AUTOTEMP
 float autotemp_max=250;
 float autotemp_min=210;
@@ -462,8 +460,8 @@ void check_axes_activity()
   else
   {
     #if FAN_PIN > -1
-    if (FanSpeed != 0){
-      analogWrite(FAN_PIN,FanSpeed); // If buffer is empty use current fan speed
+    if (fanSpeed != 0){
+      analogWrite(FAN_PIN,fanSpeed); // If buffer is empty use current fan speed
     }
     #endif
   }
@@ -477,12 +475,12 @@ void check_axes_activity()
     disable_e2(); 
   }
 #if FAN_PIN > -1
-  if((FanSpeed == 0) && (fan_speed ==0))
+  if((fanSpeed == 0) && (fan_speed ==0))
   {
     analogWrite(FAN_PIN, 0);
   }
 
-  if (FanSpeed != 0 && tail_fan_speed !=0)
+  if (fanSpeed != 0 && tail_fan_speed !=0)
   {
     analogWrite(FAN_PIN,tail_fan_speed);
   }
@@ -562,7 +560,7 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa
     return; 
   }
 
-  block->fan_speed = FanSpeed;
+  block->fan_speed = fanSpeed;
 
   // Compute direction bits for this block 
   block->direction_bits = 0;
diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp
index 23eb47c363..3483fbd85b 100644
--- a/Marlin/stepper.cpp
+++ b/Marlin/stepper.cpp
@@ -78,7 +78,7 @@ static bool old_z_max_endstop=false;
 static bool check_endstops = true;
 
 volatile long count_position[NUM_AXIS] = { 0, 0, 0, 0};
-volatile char count_direction[NUM_AXIS] = { 1, 1, 1, 1};
+volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1};
 
 //===========================================================================
 //=============================functions         ============================
diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp
index bc46c9f7ff..318bbedc06 100644
--- a/Marlin/temperature.cpp
+++ b/Marlin/temperature.cpp
@@ -567,7 +567,7 @@ float analog2temp(int raw, uint8_t e) {
     }
   #endif
 
-  if(heater_ttbl_map[e] != 0)
+  if(heater_ttbl_map[e] != NULL)
   {
     float celsius = 0;
     byte i;