diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index cb5d5a9c7ffd8c4b1c4a719bd795a74f6a72301b..7380b134e09085701d3bafd45dc7eb3eaffc0cdf 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -23,9 +23,13 @@
 // Serial port 0 is still used by the Arduino bootloader regardless of this setting.
 #define SERIAL_PORT 0
 
+// This determines the communication speed of the printer
 // This determines the communication speed of the printer
 #define BAUDRATE 250000
-//#define BAUDRATE 115200
+
+// This enables the serial port associated to the Bluetooth interface
+//#define BTENABLED              // Enable BT interface on AT90USB devices
+
 
 //// The following define selects which electronics board you have. Please choose the one that matches your setup
 // 10 = Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics"
@@ -54,6 +58,7 @@
 // 80 = Rumba
 // 81 = Printrboard (AT90USB1286)
 // 82 = Brainwave (AT90USB646)
+// 83 = SAV Mk-I (AT90USB1286)
 // 9  = Gen3+
 // 70 = Megatronics
 // 701= Megatronics v2.0
@@ -64,7 +69,7 @@
 // 21 = Elefu Ra Board (v3)
 
 #ifndef MOTHERBOARD
-#define MOTHERBOARD 7
+//#define MOTHERBOARD 7
 #endif
 
 // Define this to set a custom name for your generic Mendel,
@@ -514,6 +519,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
   #define ULTIPANEL
 #endif
 
+// Shift register panels
+// ---------------------
+// 2 wire Non-latching LCD SR from:
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection 
+//#define SR_LCD
+#ifdef SR_LCD
+   #define SR_LCD_2W_NL    // Non latching 2 wire shiftregister
+   //#define NEWPANEL
+#endif
+
+
 #ifdef ULTIPANEL
 //  #define NEWPANEL  //enable this if you have a click-encoder panel
   #define SDSUPPORT
diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index 06101f00c7cdd3278d307250cdf0c04f8a35cbf1..246eb3252e0139739778f74bbc759377679a42ee 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -163,7 +163,7 @@
 
 #ifdef Z_DUAL_STEPPER_DRIVERS && Y_DUAL_STEPPER_DRIVERS
   #error "You cannot have dual drivers for both Y and Z"
-#endif 
+#endif
 
 // Enable this for dual x-carriage printers. 
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index fe1e751d97dea64917402a2f8a872e1d1e9ca10c..ef59f3f3f44eb336ba53abfafdc45981e2ad6628 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -34,6 +34,10 @@
 # define analogInputToDigitalPin(p) ((p) + A0)
 #endif
 
+#ifdef AT90USB
+#include "HardwareSerial.h"
+#endif
+
 #include "MarlinSerial.h"
 
 #ifndef cbi
@@ -46,9 +50,11 @@
 #include "WString.h"
 
 #ifdef AT90USB
-  #define MYSERIAL Serial
-#else
-  #define MYSERIAL MSerial
+   #ifdef BTENABLED
+         #define MYSERIAL bt
+   #else
+         #define MYSERIAL Serial
+   #endif // BTENABLED
 #endif
 
 #define SERIAL_PROTOCOL(x) (MYSERIAL.print(x))
diff --git a/Marlin/MarlinSerial.cpp b/Marlin/MarlinSerial.cpp
index 1358f38590b8451f9d7a602e8d08323cbf76bcb5..0433df2d32170bf5b21b448efe610ac41d9fb93b 100644
--- a/Marlin/MarlinSerial.cpp
+++ b/Marlin/MarlinSerial.cpp
@@ -320,3 +320,9 @@ MarlinSerial MSerial;
 
 #endif // whole file
 #endif // !AT90USB
+
+// For AT90USB targets use the UART for BT interfacing
+#if defined(AT90USB) && defined (BTENABLED)
+   HardwareSerial bt;
+#endif
+
diff --git a/Marlin/MarlinSerial.h b/Marlin/MarlinSerial.h
index 9514730fa05e7dbff4b549db16a6964c3deb6c10..7ccdfd6a0eee6984206c687b4e4c531f12640fef 100644
--- a/Marlin/MarlinSerial.h
+++ b/Marlin/MarlinSerial.h
@@ -181,4 +181,9 @@ class MarlinSerial //: public Stream
 extern MarlinSerial MSerial;
 #endif // !AT90USB
 
+// Use the UART for BT in AT90USB configurations
+#if defined(AT90USB) && defined (BTENABLED)
+   extern HardwareSerial bt;
+#endif
+
 #endif
diff --git a/Marlin/Sd2PinMap.h b/Marlin/Sd2PinMap.h
index a40729df2d4affd2f2f1317e4df361a6a5d07229..93ab943cef59294057422dce9c84b9f0f6fa3113 100644
--- a/Marlin/Sd2PinMap.h
+++ b/Marlin/Sd2PinMap.h
@@ -222,10 +222,10 @@ uint8_t const SDA_PIN = 1;  // D1
 uint8_t const SCL_PIN = 0;  // D0
 
 // SPI port
-uint8_t const SS_PIN = 20;    // B0
-uint8_t const MOSI_PIN = 22;  // B2
-uint8_t const MISO_PIN = 23;  // B3
-uint8_t const SCK_PIN = 21;   // B1
+uint8_t const SS_PIN    = 20;    // B0
+uint8_t const MOSI_PIN  = 22;    // B2
+uint8_t const MISO_PIN  = 23;    // B3
+uint8_t const SCK_PIN   = 21;    // B1
 
 static const pin_map_t digitalPinMap[] = {
   {&DDRD, &PIND, &PORTD, 0},  // D0  0
diff --git a/Marlin/pins.h b/Marlin/pins.h
index 9f9e76938b2912abbe632074f8202a1aa7b33621..ba73a3ccc2a3b4bc6cf1ab8631f287f8afbf7e6e 100644
--- a/Marlin/pins.h
+++ b/Marlin/pins.h
@@ -1549,6 +1549,92 @@
 
 #endif  // MOTHERBOARD == 82 (Brainwave)
 
+//
+// SAV Mk-I
+// -----------------------------------------------------------------------------------
+/****************************************************************************************
+* SAV MkI pin assignments (AT90USB1286)
+* Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE!
+  http://www.pjrc.com/teensy/teensyduino.html
+   RepRap Clone Wars project board.
+****************************************************************************************/
+#if MOTHERBOARD == 83  // SAV Mk-I
+#define KNOWN_BOARD 1
+#define AT90USB 1286  // Disable MarlinSerial etc.
+
+#ifndef __AVR_AT90USB1286__
+#error Oops!  Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu.
+#endif
+
+#define LARGE_FLASH        true
+
+
+#define X_STEP_PIN         0
+#define X_DIR_PIN          1
+#define X_ENABLE_PIN       39
+
+#define Y_STEP_PIN         2
+#define Y_DIR_PIN          3
+#define Y_ENABLE_PIN       38
+
+#define Z_STEP_PIN         4
+#define Z_DIR_PIN          5
+#define Z_ENABLE_PIN       23
+
+#define E0_STEP_PIN         6
+#define E0_DIR_PIN          7
+#define E0_ENABLE_PIN       19
+
+#define HEATER_0_PIN       21  // Extruder
+#define HEATER_1_PIN       -1
+#define HEATER_2_PIN       -1
+#define HEATER_BED_PIN     20  // Bed
+#define FAN_PIN            16  // Fan   -- from Teensyduino environment.
+                               // For the fan and Teensyduino uses a different pin mapping.
+
+  #define X_STOP_PIN         13
+  #define Y_STOP_PIN         14
+  #define Z_STOP_PIN         15
+  #define TEMP_0_PIN          7  // Extruder / Analog pin numbering
+  #define TEMP_BED_PIN        6  // Bed / Analog pin numbering
+
+#define TEMP_1_PIN         -1
+#define TEMP_2_PIN         -1
+
+#define SDPOWER            -1
+#define SDSS               20  // PB0 - 8 in marlin env.
+#define LED_PIN            -1
+#define PS_ON_PIN          -1
+#define KILL_PIN           -1
+#define ALARM_PIN          -1
+#define SDCARDDETECT       -1
+
+
+#ifndef SDSUPPORT
+   // these pins are defined in the SD library if building with SD support
+  #define SCK_PIN          9
+  #define MISO_PIN         11
+  #define MOSI_PIN         10
+#endif
+
+#define BEEPER             -1
+#define LCD_PINS_RS        -1
+#define LCD_PINS_ENABLE    -1
+#define LCD_PINS_D4        -1
+#define LCD_PINS_D5        -1
+#define LCD_PINS_D6        -1
+#define LCD_PINS_D7        -1
+#define BTN_EN1            -1
+#define BTN_EN2            -1
+#define BTN_ENC            -1
+
+// For LCD SHIFT register LCD
+#define SR_DATA_PIN         0
+#define SR_CLK_PIN          1
+
+#endif  // MOTHERBOARD == 83
+
+
 /****************************************************************************************
 * Gen3+ pin assignment
 *
diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index 895c3ed4e9d415f9f384883df743ff627e3308cd..e3e2556fab5f2f7d40502366b99c3cbc87e3e92e 100644
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -19,7 +19,10 @@ int absPreheatHotendTemp;
 int absPreheatHPBTemp;
 int absPreheatFanSpeed;
 
+#ifdef ULTIPANEL
 static float manual_feedrate[] = MANUAL_FEEDRATE;
+#endif // ULTIPANEL
+
 /* !Configuration settings */
 
 //Function pointer to menu functions.
@@ -992,14 +995,20 @@ void lcd_init()
     WRITE(SHIFT_LD,HIGH);
   #endif
 #else
-    pinMode(SHIFT_CLK,OUTPUT);
-    pinMode(SHIFT_LD,OUTPUT);
-    pinMode(SHIFT_EN,OUTPUT);
-    pinMode(SHIFT_OUT,INPUT);
-    WRITE(SHIFT_OUT,HIGH);
-    WRITE(SHIFT_LD,HIGH); 
-    WRITE(SHIFT_EN,LOW);
+  #ifdef SR_LCD_2W_NL
+     pinMode (SR_DATA_PIN, OUTPUT);
+     pinMode (SR_CLK_PIN, OUTPUT);
+  #else
+     pinMode(SHIFT_CLK,OUTPUT);
+     pinMode(SHIFT_LD,OUTPUT);
+     pinMode(SHIFT_EN,OUTPUT);
+     pinMode(SHIFT_OUT,INPUT);
+     WRITE(SHIFT_OUT,HIGH);
+     WRITE(SHIFT_LD,HIGH); 
+     WRITE(SHIFT_EN,LOW);
+   #endif // SR_LCD_2W_NL    
 #endif//!NEWPANEL
+
 #if (SDCARDDETECT > 0)
     WRITE(SDCARDDETECT, HIGH);
     lcd_oldcardstatus = IS_SD_INSERTED;
diff --git a/Marlin/ultralcd_implementation_hitachi_HD44780.h b/Marlin/ultralcd_implementation_hitachi_HD44780.h
index 36462d887209860583440a922684df76dbfdbfde..c0d4989c3b956f73d9a6fd13c4f74945cfb6e345 100644
--- a/Marlin/ultralcd_implementation_hitachi_HD44780.h
+++ b/Marlin/ultralcd_implementation_hitachi_HD44780.h
@@ -178,7 +178,16 @@ extern volatile uint16_t buttons;  //an extended version of the last checked but
     #include <LiquidCrystal_I2C.h>
     #define LCD_CLASS LiquidCrystal_I2C
     LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_WIDTH, LCD_HEIGHT);
-  
+    
+// 2 wire Non-latching LCD SR from:
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection 
+#elif defined(SR_LCD_2W_NL)
+   
+  #include <LCD.h>
+  #include <LiquidCrystal_SR.h>
+  #define LCD_CLASS LiquidCrystal_SR
+  LCD_CLASS lcd(SR_DATA_PIN, SR_CLK_PIN);
+
 #else
   // Standard directly connected LCD implementations
   #if LANGUAGE_CHOICE == 6