diff --git a/keyboards/planck/keymaps/vaire/config.h b/keyboards/planck/keymaps/vaire/config.h
new file mode 100644
index 0000000000..96a13cc427
--- /dev/null
+++ b/keyboards/planck/keymaps/vaire/config.h
@@ -0,0 +1,37 @@
+#pragma
+
+
+
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+#define MOUSEKEY_INTERVAL 16
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 0
+       
+
+#define MIDI_BASIC
+
+#define BACKLIGHT_BREATHING
+
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
diff --git a/keyboards/planck/keymaps/vaire/keymap.c b/keyboards/planck/keymaps/vaire/keymap.c
new file mode 100644
index 0000000000..71cbcd8bd0
--- /dev/null
+++ b/keyboards/planck/keymaps/vaire/keymap.c
@@ -0,0 +1,150 @@
+#include QMK_KEYBOARD_H
+ #include "action_layer.h"
+
+
+extern keymap_config_t keymap_config;
+
+#define EXCEL_HOME LALT(KC_H)
+#define EXCEL_COL LCTL(KC_SPC)
+#define EXCEL_ROW LSFT(KC_SPC)
+#define DESK_LEFT LCTL(LGUI(KC_LEFT))
+#define WIN_LEFT LSFT(KC_TAB)
+#define WIN_CLOSE LALT(KC_F4)
+#define WIN_RIGHT KC_TAB
+#define DESK_RIGHT LCTL(LGUI(KC_RGHT))
+#define DOCS LGUI(KC_E)
+#define SNAP_RIGHT LGUI(KC_RGHT)
+#define SNAP_UP LGUI(KC_UP)
+#define SNAP_LEFT LGUI(KC_LEFT)
+#define SNAP_DOWN LGUI(KC_DOWN)
+#define COPY LCTL(KC_C)
+#define PASTE LCTL(KC_V)
+#define CUT LCTL(KC_X)
+#define UNDO LCTL(KC_Z)
+#define FIND LCTL(KC_F)
+
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+
+  LAYOUT_planck_grid(
+    KC_ESC, 	KC_Q,       	KC_W,           KC_E,           KC_R,           KC_T,           KC_Y,       	KC_U,       	KC_I,       	KC_O,   	KC_P,           KC_BSPC, 
+    KC_TAB,     KC_A,       	KC_S,           KC_D,           KC_F,           KC_G,           KC_H,       	KC_J,       	KC_K,       	KC_L,           KC_SCLN,        KC_QUOT, 
+    KC_LSFT,    KC_Z,       	KC_X,           KC_C,           KC_V,           KC_B,           KC_N,       	KC_M,       	KC_COMM,    	KC_DOT,         KC_UP,          SFT_T(KC_ENT), 
+    MO(1),      KC_LCTL,    	KC_LALT,        KC_LGUI,        MO(2),          LT(5,KC_ENT),   LT(4,KC_SPC), 	MO(3),      	KC_SLSH,    	KC_LEFT,        KC_DOWN,        CTL_T(KC_RGHT)),
+
+  LAYOUT_planck_grid(
+    KC_ESC,     KC_NLCK,    	LCTL(KC_SPC),   KC_UP,          LSFT(KC_SPC),   KC_DLR,         KC_EQL,     	KC_P7,      	KC_P8,      	KC_P9,          KC_PPLS,        LCTL(KC_BSPC), 
+    KC_TAB,     FIND,       	KC_LEFT,        KC_DOWN,        KC_RGHT,        KC_PERC,        KC_CIRC,    	KC_P4,      	KC_P5,      	KC_P6,          KC_PMNS,        KC_BSLS, 
+    KC_LSFT,    UNDO,       	CUT,            COPY,           PASTE,          EXCEL_HOME,     KC_PSCR,    	KC_P1,      	KC_P2,      	KC_P3,          KC_PSLS,        KC_LSFT, 
+    KC_TRNS, 	KC_LCTL,    	KC_LALT,        KC_LGUI,        TO(1),          KC_ENT,         KC_SPC,     	KC_PENT,    	KC_P0,      	KC_PDOT,        KC_PAST,        KC_LCTL),
+
+  LAYOUT_planck_grid(
+    KC_TILD,    KC_EXLM,    	KC_AT,          KC_HASH,        KC_DLR,         KC_PERC,        KC_CIRC,    	KC_AMPR,    	KC_ASTR,    	KC_LPRN,    	KC_RPRN,        KC_DEL, 
+    KC_CAPS,    KC_F1,      	KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_F6,      	KC_UNDS,    	KC_EQL,     	KC_LT,        	KC_GT,       	KC_LPRN, 
+    KC_LSFT,    KC_F7,      	KC_F8,          KC_F9,          KC_F10,         KC_F11,         KC_F12,     	KC_MUTE,    	KC_MPLY,    	KC_MNXT,       	KC_PGUP,       	SFT_T(KC_VOLU), 
+    TO(0),      KC_LCTL,    	KC_LALT,        KC_LGUI,        KC_TRNS,      	KC_ENT,         KC_SPC,     	MO(3),      	KC_PSCR,    	KC_MPRV,        KC_PGDOWN,    	CTL_T(KC_VOLD)),
+
+  LAYOUT_planck_grid(
+    KC_TILD,    DESK_LEFT,  	WIN_LEFT,       KC_F4,          WIN_RIGHT,      DESK_RIGHT,     DOCS,       	SNAP_LEFT, 	SNAP_UP,     	SNAP_RIGHT,     SNAP_DOWN,      KC_DEL, 
+    KC_CAPS,    KC_QUOT,    	KC_LBRC,        KC_LCBR,        KC_LPRN,        KC_BSLS,        KC_SLSH,    	KC_RPRN, 	KC_RCBR,     	KC_RBRC,    	KC_DQUO,        KC_QUOT, 
+    KC_PWR,     KC_SLEP,    	KC_WAKE,        KC_HOME,        BL_BRTG,        BL_STEP,        KC_TRNS,    	KC_CALC, 	KC_LT,     	    KC_GT,     	    KC_COLON,   	KC_LSFT, 
+    TO(0),      KC_LCTL,    	KC_LALT,        KC_LGUI,        KC_LALT,        KC_LCTL,        KC_TRNS,    	KC_TRNS, 	AU_TOG,      	MU_TOG,     	MU_MOD,     	LCTL(KC_RGHT)),
+
+  LAYOUT_planck_grid(
+    TO(0),      KC_LSCR,    	WIN_LEFT,       KC_MS_WH_UP,    WIN_RIGHT,  	KC_TRNS,        KC_TRNS,    	KC_MS_BTN1, 	KC_MS_U,    	KC_MS_BTN2,    	KC_TRNS,        KC_TRNS, 
+    KC_TRNS,    KC_INS,    	    KC_MS_WH_LEFT,  KC_MS_WH_DOWN,  KC_MS_WH_RIGHT, KC_TRNS,        KC_TRNS,    	KC_MS_L,    	KC_MS_D,    	KC_MS_R,        KC_TRNS,        KC_TRNS, 
+    RESET,      KC_APP,    	    KC_MS_ACCEL0,   KC_MS_ACCEL0,   KC_MS_ACCEL0,   KC_TRNS,        KC_TRNS,    	TO(0),      	TO(1),      	TO(2),          TO(3),          TO(4), 
+    TO(0),      KC_MENU,    	KC_TRNS,        KC_TRNS,        KC_LALT,        KC_LCTL,        KC_TRNS,     	KC_TRNS,    	KC_TRNS,    	KC_LEFT,        KC_DOWN,   	KC_RCTL),
+
+  LAYOUT_planck_grid(
+    KC_BSPC,    KC_P,       	KC_O,           KC_I,           KC_U,           KC_Y,           KC_T,       	KC_R,       	KC_E,       	KC_W,           KC_Q,            KC_BSPC, 
+    KC_TAB,     KC_SCLN,        KC_L,           KC_K,           KC_J,           KC_H,           KC_G,       	KC_F,       	KC_D,       	KC_S,           KC_A,            KC_QUOT, 
+    KC_LSFT,    KC_ENT,         KC_DOT,    	    KC_COMM,   	    KC_M,           KC_N,           KC_B,       	KC_V,       	KC_C,		   KC_X,         	KC_Z,            SFT_T(KC_ENT), 
+    TO(0),      KC_LCTL,        KC_LALT,        KC_LGUI,        MO(2),          KC_TRNS,   	    KC_TRNS,     	MO(3),      	KC_SLSH,    	KC_LEFT,        KC_DOWN,	     LCTL(KC_RGHT)),
+ 
+    
+
+};
+
+
+#ifdef AUDIO_ENABLE
+
+void matrix_init_user(void)
+{
+    set_voice(default_voice);
+    startup_user();
+    println("Matrix Init");
+}
+
+void led_set_user(uint8_t usb_led)
+{
+    static uint8_t old_usb_led = 0;
+
+    _delay_ms(10); // gets rid of tick
+
+    if (!is_playing_notes())
+    {
+        if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK)))
+        {
+                // If CAPS LK LED is turning on...
+                PLAY_SONG(tone_caps_on);
+        }
+        else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK)))
+        {
+                // If CAPS LK LED is turning off...
+                PLAY_SONG(tone_caps_off);
+        }
+        else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK)))
+        {
+                // If NUM LK LED is turning on...
+                PLAY_SONG(tone_numlk_on);
+        }
+        else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK)))
+        {
+                // If NUM LED is turning off...
+                PLAY_SONG(tone_numlk_off);
+        }
+        else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
+        {
+                // If SCROLL LK LED is turning on...
+                PLAY_SONG(tone_scroll_on);
+        }
+        else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
+        {
+                // If SCROLL LED is turning off...
+                PLAY_SONG(tone_scroll_off);
+        }
+    }
+
+    old_usb_led = usb_led;
+}
+
+
+void startup_user()
+{
+    _delay_ms(30); // gets rid of tick
+    PLAY_SONG(tone_my_startup);
+}
+
+void shutdown_user()
+{
+    PLAY_SONG(tone_my_goodbye);
+    _delay_ms(3000);
+    stop_all_notes();
+}
+
+void audio_on_user(void)
+{
+  PLAY_SONG(tone_audio_on);
+}
+
+void music_on_user(void)
+{
+  PLAY_SONG(tone_music_on);
+}
+
+#endif /* AUDIO_ENABLE */
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/vaire/readme.md b/keyboards/planck/keymaps/vaire/readme.md
new file mode 100644
index 0000000000..6ce39de95d
--- /dev/null
+++ b/keyboards/planck/keymaps/vaire/readme.md
@@ -0,0 +1,6 @@
+#The vaire planck layout
+
+- easy access numpad
+- mouse and wheel controls
+- flipped keyboard for one hand typing
+- sound on all num, scroll, and caps lock
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/vaire/rules.mk b/keyboards/planck/keymaps/vaire/rules.mk
new file mode 100644
index 0000000000..22e4bd9341
--- /dev/null
+++ b/keyboards/planck/keymaps/vaire/rules.mk
@@ -0,0 +1,82 @@
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Bootloader
+#     This definition is optional, and if your keyboard supports multiple bootloaders of
+#     different sizes, comment this out, and the correct address will be loaded
+#     automatically (+60). See bootloader.mk for all options.
+ifeq ($(strip $(KEYBOARD)), planck/rev3)
+    BOOTLOADER = atmel-dfu
+endif
+ifeq ($(strip $(KEYBOARD)), planck/rev4)
+    BOOTLOADER = atmel-dfu
+endif
+ifeq ($(strip $(KEYBOARD)), planck/rev5)
+    BOOTLOADER = qmk-dfu
+endif
+ifeq ($(strip $(KEYBOARD)), planck/light)
+    BOOTLOADER = qmk-dfu
+endif
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# Build Options
+#   change to "no" to disable the options, or define them in the Makefile in[]
+#   the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
+CONSOLE_ENABLE = no         # Console for debug(+400)
+COMMAND_ENABLE = no        # Commands for debug and configuration
+NKRO_ENABLE = yes            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
+MIDI_ENABLE = no            # MIDI controls
+AUDIO_ENABLE = yes           # Audio output on port C6
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
+API_SYSEX_ENABLE = no
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
+
+LAYOUTS = ortho_4x12 planck_mit planck_grid
+LAYOUTS_HAS_RGB = no
+
+DEFAULT_FOLDER = planck/rev5 
+