diff --git a/keyboards/hazel/bad_wings/keymaps/default/config.h b/keyboards/hazel/bad_wings/keymaps/default/config.h
index bd395ec9e5..c572b4b011 100644
--- a/keyboards/hazel/bad_wings/keymaps/default/config.h
+++ b/keyboards/hazel/bad_wings/keymaps/default/config.h
@@ -12,5 +12,5 @@
 #define ONESHOT_TIMEOUT 500
 #define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD
 #define CIRQUE_PINNACLE_TAP_ENABLE
-#define CIRQUE_PINNACLE_POSITION_MODE  CIRQUE_PINNACLE_ABSOLUTE_MODE 
-#define CIRQUE_DEVICE_GESTURES_SCROLL_ENABLE 
\ No newline at end of file
+#define CIRQUE_PINNACLE_POSITION_MODE  CIRQUE_PINNACLE_ABSOLUTE_MODE
+#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE
\ No newline at end of file
diff --git a/keyboards/hazel/bad_wings/keymaps/default/keymap.c b/keyboards/hazel/bad_wings/keymaps/default/keymap.c
deleted file mode 100644
index e9adc7cc2e..0000000000
--- a/keyboards/hazel/bad_wings/keymaps/default/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2023 Jason Hazel (@jasonhazel)
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-#include QMK_KEYBOARD_H
-
-layer_state_t layer_state_set_user(layer_state_t state) {
-    return update_tri_layer_state(state, 1, 2, 3);
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [0] = LAYOUT_split_3x5_3(
-        KC_Q,       KC_W,           KC_E,           KC_R,           KC_T,           KC_Y,       KC_U,           KC_I,       KC_O,       KC_P,         \
-        KC_A,       KC_S,           KC_D,           KC_F,           KC_G,           KC_H,       KC_J,           KC_K,       KC_L,       KC_QUOT,      \
-        KC_Z,       LGUI_T(KC_X),   LALT_T(KC_C),   KC_V,           KC_B,           KC_N,       KC_M,           KC_COMM,    KC_DOT,     KC_SLSH,      \
-                                    KC_LCTL,        OSL(1),         OSM(MOD_LSFT),  KC_SPC,     LT(2, KC_BSPC), KC_ENT
-    ),
-    [1] = LAYOUT_split_3x5_3(
-        KC_NO,      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_RBRC,    KC_RCBR,        KC_RPRN,    KC_RABK,    KC_NO,        \
-        KC_GRV,     KC_TILD,        KC_UNDS,        KC_EQL,         KC_NO,          KC_LBRC,    KC_LCBR,        KC_LPRN,    KC_LABK,    KC_BACKSLASH, \
-        KC_NO,      KC_NO,          KC_PLUS,        KC_MINS,        KC_NO,          KC_NO,      KC_NO,          KC_COLN,    KC_DOT,     KC_SCLN,      \
-                                    KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,    KC_TRNS,        KC_TRNS
-    ),
-    [2] = LAYOUT_split_3x5_3(
-        KC_EXLM,    KC_AT,          KC_HASH,        KC_DLR,         KC_PERC,        KC_CIRC,    KC_AMPR,        KC_ASTR,    KC_PIPE,    KC_NO,        \
-        KC_1,       KC_2,           KC_3,           KC_4,           KC_5,           KC_6,       KC_7,           KC_8,       KC_9,       KC_0,         \
-        KC_NO,      KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,      KC_NO,          KC_NO,      KC_DOT,     KC_NO,        \
-                                    KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,    KC_TRNS,        KC_TRNS
-    ),
-    [3] = LAYOUT_split_3x5_3(
-        KC_ESC,     KC_F1,          KC_F4,          KC_F7,          KC_F10,         KC_NO,      KC_HOME,        KC_UP,      KC_END,     KC_BSPC,      \
-        KC_TAB,     KC_F2,          KC_F5,          KC_F8,          KC_F11,         KC_NO,      KC_LEFT,        KC_DOWN,    KC_RIGHT,   KC_ENT,       \
-        KC_NO,      KC_F3,          KC_F6,          KC_F9,          KC_F12,         KC_NO,      KC_MPRV,        KC_MPLY,    KC_MNXT,    KC_DEL,       \
-                                    KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,    KC_TRNS,        KC_TRNS
-    )
-};
\ No newline at end of file
diff --git a/keyboards/hazel/bad_wings/keymaps/default/keymap.json b/keyboards/hazel/bad_wings/keymaps/default/keymap.json
new file mode 100644
index 0000000000..670506eaf6
--- /dev/null
+++ b/keyboards/hazel/bad_wings/keymaps/default/keymap.json
@@ -0,0 +1,163 @@
+{
+  "version": 1,
+  "notes": "",
+  "documentation": "",
+  "keyboard": "hazel/bad_wings",
+  "keymap": "default",
+  "layout": "LAYOUT_split_3x5_3",
+  "layers": [
+    [
+      "KC_Q",
+      "KC_W",
+      "KC_E",
+      "KC_R",
+      "KC_T",
+      "KC_Y",
+      "KC_U",
+      "KC_I",
+      "KC_O",
+      "KC_P",
+      "KC_A",
+      "KC_S",
+      "KC_D",
+      "KC_F",
+      "KC_G",
+      "KC_H",
+      "KC_J",
+      "KC_K",
+      "KC_L",
+      "KC_QUOT",
+      "KC_Z",
+      "LGUI_T(KC_X)",
+      "LALT_T(KC_C)",
+      "KC_V",
+      "KC_B",
+      "KC_N",
+      "KC_M",
+      "KC_COMM",
+      "KC_DOT",
+      "KC_SLSH",
+      "KC_LCTL",
+      "OSL(1)",
+      "OSM(MOD_LSFT)",
+      "LT(3,KC_SPC)",
+      "LT(2,KC_BSPC)",
+      "KC_ENT"
+    ],
+    [
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_RBRC",
+      "KC_RCBR",
+      "KC_RPRN",
+      "KC_GT",
+      "KC_NO",
+      "KC_GRV",
+      "KC_TILD",
+      "KC_UNDS",
+      "KC_EQL",
+      "KC_NO",
+      "KC_LBRC",
+      "KC_LCBR",
+      "KC_LPRN",
+      "KC_LT",
+      "KC_BSLS",
+      "KC_NO",
+      "KC_NO",
+      "KC_PLUS",
+      "KC_MINS",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_COLN",
+      "KC_DOT",
+      "KC_SCLN",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS"
+    ],
+    [
+      "KC_EXLM",
+      "KC_AT",
+      "KC_HASH",
+      "KC_DLR",
+      "KC_PERC",
+      "KC_CIRC",
+      "KC_AMPR",
+      "KC_ASTR",
+      "KC_PIPE",
+      "KC_NO",
+      "KC_1",
+      "KC_2",
+      "KC_3",
+      "KC_4",
+      "KC_5",
+      "KC_6",
+      "KC_7",
+      "KC_8",
+      "KC_9",
+      "KC_0",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS"
+    ],
+    [
+      "KC_ESC",
+      "KC_F1",
+      "KC_F4",
+      "KC_F7",
+      "KC_F10",
+      "KC_NO",
+      "KC_HOME",
+      "KC_UP",
+      "KC_END",
+      "KC_NO",
+      "KC_TAB",
+      "KC_F2",
+      "KC_F5",
+      "KC_F8",
+      "KC_F11",
+      "KC_NO",
+      "KC_LEFT",
+      "KC_DOWN",
+      "KC_RGHT",
+      "KC_NO",
+      "KC_NO",
+      "KC_F3",
+      "KC_F6",
+      "KC_F9",
+      "KC_F12",
+      "KC_NO",
+      "KC_MRWD",
+      "KC_MPLY",
+      "KC_MFFD",
+      "KC_DEL",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS",
+      "KC_TRNS"
+    ]
+  ],
+  "author": "Jason Hazel"
+}
\ No newline at end of file
diff --git a/keyboards/hazel/bad_wings/keymaps/jasonhazel/config.h b/keyboards/hazel/bad_wings/keymaps/jasonhazel/config.h
new file mode 100644
index 0000000000..035419eee6
--- /dev/null
+++ b/keyboards/hazel/bad_wings/keymaps/jasonhazel/config.h
@@ -0,0 +1,17 @@
+// Copyright 2023 Jason Hazel (@jasonhazel)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#define TAPPING_TERM 200
+#define PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM_PER_KEY
+#define ONESHOT_TAP_TOGGLE 10
+#define ONESHOT_TIMEOUT 500
+#define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD
+#define CIRQUE_PINNACLE_TAP_ENABLE
+#define CIRQUE_PINNACLE_POSITION_MODE  CIRQUE_PINNACLE_ABSOLUTE_MODE
+
+#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE
\ No newline at end of file
diff --git a/keyboards/hazel/bad_wings/keymaps/jasonhazel/keymap.c b/keyboards/hazel/bad_wings/keymaps/jasonhazel/keymap.c
new file mode 100644
index 0000000000..0c3d9c70af
--- /dev/null
+++ b/keyboards/hazel/bad_wings/keymaps/jasonhazel/keymap.c
@@ -0,0 +1,118 @@
+// Copyright 2023 Jason Hazel (@jasonhazel)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+  _ALPHA,
+  _SYMBOL,
+  _NUMBER,
+  _NAVIGATION,
+  LAYER_LENGTH
+};
+
+
+enum tapdances {
+  TD_QESC,
+  TD_SBKT,
+  TD_CBKT,
+  TD_PARN,
+  TD_LTGT,
+  TD_ATAB,
+  TAPDANCE_LENGTH
+};
+
+enum combos {
+  COMBO_NAVIGATION,
+  COMBO_LENGTH
+};
+
+
+// begin tapdances
+#define KC_QESC     TD(TD_QESC)
+#define KC_SBKT     TD(TD_SBKT)
+#define KC_CBKT     TD(TD_CBKT)
+#define KC_PARN     TD(TD_PARN)
+#define KC_LTGT     TD(TD_LTGT)
+#define KC_ATAB     TD(TD_ATAB)
+
+#define KC_GUIX     LGUI_T(KC_X)
+#define KC_ALTC     LALT_T(KC_C)
+
+// oneshots
+#define KC_OSFT   OSM(MOD_LSFT)
+#define KC_OALT   OSM(MOD_LALT)
+
+// layer changing
+#define KC_OSYM   OSL(_SYMBOL)
+#define KC_ONUM   LT(_NUMBER, KC_BSPC)
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+    switch(keycode) {
+        case KC_GUIX:
+        case KC_ALTC:
+            return TAPPING_TERM * 2;
+        default:
+            return TAPPING_TERM;
+    }
+}
+
+// tapdances
+tap_dance_action_t tap_dance_actions[] = {
+    [TD_QESC]   = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC),
+    [TD_SBKT]   = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC),
+    [TD_CBKT]   = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR),
+    [TD_PARN]   = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN),
+    [TD_LTGT]   = ACTION_TAP_DANCE_DOUBLE(KC_LABK, KC_RABK),
+    [TD_ATAB]   = ACTION_TAP_DANCE_DOUBLE(KC_A, KC_TAB)
+};
+// end tapdances
+
+uint16_t COMBO_LEN = COMBO_LENGTH;
+
+const uint16_t PROGMEM combo_navigation[] = { KC_OSYM, KC_ONUM, COMBO_END };
+combo_t key_combos[] = {
+  [COMBO_NAVIGATION]        = COMBO(combo_navigation, OSL(_NAVIGATION)),
+};
+
+uint16_t get_combo_term(uint16_t index, combo_t *combo) {
+  switch(index) {
+    case COMBO_NAVIGATION: // extending the combo term here helps reduce sticky layers some more.
+      return 250;
+    default:
+      return COMBO_TERM;
+  }
+}
+// end combos
+
+
+// begin layers
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [_ALPHA] = LAYOUT_split_3x5_3(
+    KC_QESC,    KC_W,       KC_E,       KC_R,       KC_T,             KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,
+    KC_A,       KC_S,       KC_D,       KC_F,       KC_G,             KC_H,       KC_J,       KC_K,       KC_L,       KC_QUOT,
+    KC_Z,       KC_GUIX,    KC_ALTC,    KC_V,       KC_B,             KC_N,       KC_M,       KC_COMM,    KC_DOT,     KC_SLSH,
+                            KC_LCTL,    KC_OSYM,    KC_OSFT,          KC_SPC,     KC_ONUM,    KC_ENT
+  ),
+  [_SYMBOL] = LAYOUT_split_3x5_3(
+    KC_EXLM,    KC_AT,      KC_HASH,    KC_DLR,     KC_PERC,          KC_CIRC,     KC_AMPR,   KC_ASTR,    KC_PIPE,    KC_NO,
+    KC_GRV,     KC_TILD,      KC_UNDS,    KC_EQL,     KC_NO,          KC_SBKT,     KC_CBKT,   KC_PARN,    KC_LTGT,  KC_BACKSLASH,
+    KC_NO,      KC_NO,      KC_PLUS,    KC_MINS,    KC_NO,            KC_NO,       KC_NO,     KC_COLN,    KC_DOT,     KC_SCLN,
+                             KC_LCTL,    KC_OSYM,    KC_OSFT,          KC_SPC,     KC_ONUM,    KC_ENT
+  ),
+  [_NUMBER] = LAYOUT_split_3x5_3(
+    KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,            KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,
+    KC_1,       KC_2,       KC_3,       KC_4,       KC_5,             KC_6,       KC_7,       KC_8,       KC_9,       KC_0,
+    KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,            KC_NO,      KC_NO,      KC_NO,      KC_DOT,     KC_NO,
+                            KC_LCTL,    KC_OSYM,    KC_OSFT,          KC_SPC,     KC_ONUM,    KC_ENT
+  ),
+  [_NAVIGATION] = LAYOUT_split_3x5_3(
+    KC_NO,      KC_F2,      KC_NO,      KC_NO,      KC_NO,          KC_NO,      KC_HOME,    KC_UP,      KC_END,     KC_BSPC,
+    KC_TAB,     KC_NO,      KC_NO,      KC_NO,      KC_NO,          KC_NO,      KC_LEFT,    KC_DOWN,    KC_RIGHT,   KC_ENT,
+    KC_NO,      KC_NO,      KC_NO,      KC_NO,      KC_NO,          KC_NO,      KC_MPRV,    KC_MPLY,    KC_MNXT,    KC_DEL,
+                            KC_LCTL,    KC_OSYM,    KC_OSFT,        KC_SPC,     KC_ONUM,    KC_ENT 
+  )
+};
+
+
+
diff --git a/keyboards/hazel/bad_wings/keymaps/jasonhazel/rules.mk b/keyboards/hazel/bad_wings/keymaps/jasonhazel/rules.mk
new file mode 100644
index 0000000000..26d76a0df6
--- /dev/null
+++ b/keyboards/hazel/bad_wings/keymaps/jasonhazel/rules.mk
@@ -0,0 +1,4 @@
+MOUSEKEY_ENABLE			= yes
+EXTRAKEY_ENABLE			= yes
+COMBO_ENABLE				= yes
+TAP_DANCE_ENABLE		= yes
\ No newline at end of file