diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c
index 07d78c56d..4c7d15cd5 100644
--- a/tmk_core/common/action_layer.c
+++ b/tmk_core/common/action_layer.c
@@ -268,7 +268,7 @@ uint8_t layer_switch_get_layer(keypos_t key) {
/* fall back to layer 0 */
return 0;
#else
- return biton32(default_layer_state);
+ return get_highest_layer(default_layer_state);
#endif
}
diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h
index fee9b244d..b8562f5a4 100644
--- a/tmk_core/common/action_layer.h
+++ b/tmk_core/common/action_layer.h
@@ -23,7 +23,7 @@ along with this program. If not, see .
#if defined(LAYER_STATE_8BIT)
typedef uint8_t layer_state_t;
-# define get_highest_layer(state) biton8(state)
+# define get_highest_layer(state) biton(state)
#elif defined(LAYER_STATE_16BIT)
typedef uint16_t layer_state_t;
# define get_highest_layer(state) biton16(state)
diff --git a/tmk_core/common/eeconfig.c b/tmk_core/common/eeconfig.c
index 4cf4ca3ac..72f198d6c 100644
--- a/tmk_core/common/eeconfig.c
+++ b/tmk_core/common/eeconfig.c
@@ -2,13 +2,13 @@
#include
#include "eeprom.h"
#include "eeconfig.h"
+#include "action_layer.h"
#ifdef STM32_EEPROM_ENABLE
# include "hal.h"
# include "eeprom_stm32.h"
#endif
-extern uint32_t default_layer_state;
/** \brief eeconfig enable
*
* FIXME: needs doc