diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index fbce0eef260972fabd5fb50e7673b26c381c8d28..54435f646099a82ebf76cf3e46477c134dd20fc5 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -296,8 +296,13 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th
 //#define ULTIMAKERCONTROLLER //as available from the ultimaker online store.
 //#define ULTIPANEL  //the ultipanel as on thingiverse
 
+// The RepRapDiscount Smart Controller
+// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
+//#define REPRAP_DISCOUNT_SMART_CONTROLLER
 
-#ifdef ULTIMAKERCONTROLLER    //automatic expansion
+
+//automatic expansion
+#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER)
  #define ULTIPANEL
  #define NEWPANEL
 #endif 
diff --git a/Marlin/Makefile b/Marlin/Makefile
index 275c9c08841c3285157edeb4c51737faba574aa2..ea8b7bde67c1047e4e2cbce0ce5c037cb1846f8b 100644
--- a/Marlin/Makefile
+++ b/Marlin/Makefile
@@ -89,10 +89,10 @@ SRC =  pins_arduino.c wiring.c \
 	wiring_analog.c wiring_digital.c \
 	wiring_pulse.c \
 	wiring_shift.c WInterrupts.c
-CXXSRC = WMath.cpp WString.cpp Print.cpp \
-	Marlin.cpp MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp \
-	SdFatUtil.cpp SdFile.cpp SdVolume.cpp motion_control.cpp \
-	planner.cpp stepper.cpp temperature.cpp cardreader.cpp
+CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin.cpp Marlin_main.cpp	\
+	MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp	\
+	SdFile.cpp SdVolume.cpp motion_control.cpp planner.cpp		\
+	stepper.cpp temperature.cpp cardreader.cpp
 #CXXSRC += LiquidCrystal.cpp ultralcd.cpp
 #CXXSRC += ultralcd.cpp
 FORMAT = ihex
diff --git a/Marlin/pins.h b/Marlin/pins.h
index fd79dc6e0e30835b43594e08819753e7b7cef7b0..9723e3623f0e3af733211f3258a26ce7132bf25e 100644
--- a/Marlin/pins.h
+++ b/Marlin/pins.h
@@ -360,7 +360,12 @@
 #define FAN_PIN            4 // IO pin. Buffer needed
 #endif
 #define PS_ON_PIN          12
+
+#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER
+#define KILL_PIN           41
+#else
 #define KILL_PIN           -1
+#endif
 
 #define HEATER_0_PIN       10   // EXTRUDER 1
 #if MOTHERBOARD == 33
@@ -378,8 +383,15 @@
 #ifdef ULTRA_LCD
 
   #ifdef NEWPANEL
-  //arduino pin which triggers an piezzo beeper
-    #define BEEPER 33			// Beeper on AUX-4
+     //encoder rotation values
+    #define encrot0 0
+    #define encrot1 2
+    #define encrot2 3
+    #define encrot3 1
+
+    #define BLEN_A 0
+    #define BLEN_B 1
+    #define BLEN_C 2
 
     #define LCD_PINS_RS 16 
     #define LCD_PINS_ENABLE 17
@@ -388,22 +400,25 @@
     #define LCD_PINS_D6 27
     #define LCD_PINS_D7 29
     
-    //buttons are directly attached using AUX-2
-    #define BTN_EN1 37
-    #define BTN_EN2 35
-    #define BTN_ENC 31  //the click
-    
-    #define BLEN_C 2
-    #define BLEN_B 1
-    #define BLEN_A 0
-    
-    #define SDCARDDETECT -1		// Ramps does not use this port
-    
-      //encoder rotation values
-    #define encrot0 0
-    #define encrot1 2
-    #define encrot2 3
-    #define encrot3 1
+    #ifdef REPRAP_DISCOUNT_SMART_CONTROLLER
+      #define BEEPER 37
+
+      #define BTN_EN1 31
+      #define BTN_EN2 33
+      #define BTN_ENC 35
+
+      #define SDCARDDETECT 49
+    #else
+      //arduino pin which triggers an piezzo beeper
+      #define BEEPER 33	 // Beeper on AUX-4
+
+      //buttons are directly attached using AUX-2
+      #define BTN_EN1 37
+      #define BTN_EN2 35
+      #define BTN_ENC 31  //the click
+
+      #define SDCARDDETECT -1  // Ramps does not use this port
+    #endif
 
   #else //old style panel with shift register
     //arduino pin witch triggers an piezzo beeper