diff --git a/keyboards/ymdk/bface/config.h b/keyboards/ymdk/bface/config.h
index e6006aeb40..3d9605b75a 100644
--- a/keyboards/ymdk/bface/config.h
+++ b/keyboards/ymdk/bface/config.h
@@ -17,8 +17,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #pragma once
 
-#define VENDOR_ID       0x20A0
-#define PRODUCT_ID      0x422D
+#define VENDOR_ID       0x594D // "YM"
+#define PRODUCT_ID      0x4266 // "Bf"
 #define DEVICE_VER      0x0200
 #define MANUFACTURER    YMDK
 #define PRODUCT         B.face
diff --git a/keyboards/ymdk/bface/keymaps/via/keymap.c b/keyboards/ymdk/bface/keymaps/via/keymap.c
new file mode 100644
index 0000000000..27280b7d1c
--- /dev/null
+++ b/keyboards/ymdk/bface/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2019 Ethan Durrant (emdarcher)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H 
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    //Base Layer
+    [0] = LAYOUT_all(
+        KC_GESC,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL, KC_NO, KC_BSPC,
+        KC_TAB,    KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,
+        KC_CAPS,     KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,KC_SCLN,KC_QUOT, KC_NO, KC_ENT,
+        KC_LSFT, KC_NO,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_NO,        KC_RSFT, KC_NO,
+        KC_LCTL,   KC_LGUI,KC_LALT, KC_NO,                KC_SPC,                  KC_NO,    KC_RALT,MO(1),KC_NO,KC_MENU,KC_RCTL
+    ),
+    //Layer 1
+    [1] = LAYOUT_all(
+        KC_GRV,   KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9, KC_F10, KC_F11, KC_F12,KC_NO,RESET,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_NO,KC_TRNS,
+        KC_TRNS,KC_NO,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_NO,        KC_TRNS, KC_NO,
+        KC_TRNS,KC_TRNS,KC_TRNS, KC_NO,               KC_TRNS,               KC_NO,         KC_TRNS,KC_TRNS,KC_NO,KC_TRNS,KC_TRNS
+    ),
+    //Layer 2
+    [2] = LAYOUT_all(
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_NO,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_NO,KC_TRNS,
+        KC_TRNS,KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_NO,       KC_TRNS, KC_NO,
+        KC_TRNS,KC_TRNS,KC_TRNS, KC_NO,               KC_TRNS,                 KC_NO,       KC_TRNS,KC_TRNS,KC_NO,KC_TRNS,KC_TRNS
+    ), 
+    //Layer 3
+    [3] = LAYOUT_all(
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_NO,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_NO,KC_TRNS,
+        KC_TRNS,KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_NO,       KC_TRNS, KC_NO,
+        KC_TRNS,KC_TRNS,KC_TRNS, KC_NO,               KC_TRNS,                 KC_NO,       KC_TRNS,KC_TRNS,KC_NO,KC_TRNS,KC_TRNS
+    ), 
+};
diff --git a/keyboards/ymdk/bface/keymaps/via/rules.mk b/keyboards/ymdk/bface/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/ymdk/bface/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes