diff --git a/chocofi/README.org b/chocofi/README.org
index c16324b..e147edf 100644
--- a/chocofi/README.org
+++ b/chocofi/README.org
@@ -29,6 +29,8 @@ Most other microcontrollers want to be directly connected and flashed via USB.
 2. link this directory into =qmk_firmware/keyboards/crkbd/rev1/keymaps/choc_colemak_36=
 3. compile and flash
    assumes usb-c of the right-hand half is connected
+4. both sides need to be flashed separately with =config.h= set to
+   =MASTER_LEFT= and =MASTER_RIGHT= respectively
 
 #+begin_src bash
   cd ~/src/qmk_firmware/ && source env/bin/activate
diff --git a/chocofi/config.h b/chocofi/config.h
index 77292d5..46244c9 100644
--- a/chocofi/config.h
+++ b/chocofi/config.h
@@ -24,26 +24,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /* Select hand configuration */
 
-//#define MASTER_LEFT
-// #define MASTER_RIGHT
-#define EE_HANDS
+#define MASTER_LEFT
+/* #define MASTER_RIGHT */
+// #define EE_HANDS
 
 //#define QUICK_TAP_TERM 0
-#define TAPPING_TERM 170
+// #define TAPPING_TERM 170
 
-#ifdef RGBLIGHT_ENABLE
-    #define RGBLIGHT_EFFECT_BREATHING
-    #define RGBLIGHT_EFFECT_RAINBOW_MOOD
-    #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-    #define RGBLIGHT_EFFECT_SNAKE
-    #define RGBLIGHT_EFFECT_KNIGHT
-    #define RGBLIGHT_EFFECT_CHRISTMAS
-    #define RGBLIGHT_EFFECT_STATIC_GRADIENT
-    #define RGBLIGHT_EFFECT_RGB_TEST
-    #define RGBLIGHT_EFFECT_ALTERNATING
-    #define RGBLIGHT_EFFECT_TWINKLE
-    #define RGBLIGHT_LIMIT_VAL 120
-    #define RGBLIGHT_HUE_STEP 10
-    #define RGBLIGHT_SAT_STEP 17
-    #define RGBLIGHT_VAL_STEP 17
-#endif
+//#define QUICK_TAP_TERM 0
+#define TAPPING_TERM 130
+
+// https://docs.qmk.fm/features/caps_word#caps-word
+#define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD
+#define COMBO_TERM 50
diff --git a/chocofi/keymap.c b/chocofi/keymap.c
index aa3946c..0aa36b1 100644
--- a/chocofi/keymap.c
+++ b/chocofi/keymap.c
@@ -33,8 +33,19 @@ enum {
   NUM_LAYERS
 };
 
+// Left-hand thumb keys
+#define THUMB1 LSFT_T(KC_DEL)
+#define THUMB2 LT(NAV_FUN, KC_ESC)
+#define THUMB3 LGUI_T(KC_TAB) // TODO: think about removing hold-mod, but where to put LGUI
+
+// right-hand thumb keys
+#define THUMB4 LT(NUM_SYM, KC_SPC) 
+#define THUMB5 KC_ENT
+/* #define THUMB5 LT(NUM_SYM, KC_ENT) // TODO: think about removing hold-mod */
+#define THUMB6 LT(NAV_FUN, KC_DEL)
+
 // Left-hand home row mods
-#define HGUI_A LGUI_T(KC_A)
+/* #define HGUI_A LGUI_T(KC_A) */
 #define HALT_R LALT_T(KC_R)
 #define HSFT_S LSFT_T(KC_S)
 #define HCTL_T LCTL_T(KC_T)
@@ -49,42 +60,77 @@ enum {
 #define HCTL_N RCTL_T(KC_N)
 #define HSFT_E RSFT_T(KC_E)
 #define HALT_I LALT_T(KC_I)
-#define HGUI_O RGUI_T(KC_O)
+/* #define HGUI_O RGUI_T(KC_O) */
 
 // MOUSEMO on right hand index M
 #define HMOU_M LT(MOUSEMO, KC_M)
 #define HMOU_LEFT LT(MOUSEMO, KC_LEFT)
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [COLEMAK] = LAYOUT_split_3x5_3
-  (
+  [COLEMAK] = LAYOUT_split_3x5_3 (
    KC_Q,       KC_W,    KC_F,    KC_P,    KC_B,       KC_J,    KC_L,     KC_U,    DE_Z, KC_BSPC,
-   HGUI_A,   HALT_R,  HSFT_S,  HCTL_T,    KC_G,     HMOU_M,  HCTL_N,   HSFT_E,  HALT_I,  HGUI_O,
+   KC_A,     HALT_R,  HSFT_S,  HCTL_T,    KC_G,     HMOU_M,  HCTL_N,   HSFT_E,  HALT_I,  KC_O,
    DE_Y,       KC_X,    KC_C,    KC_D,    KC_V,       KC_K,    KC_H,  DE_COMM,  DE_DOT, DE_SLSH,
-   LSFT_T(KC_DEL),  LT(NAV_FUN, KC_ESC),  LSFT_T(KC_TAB),    CTL_T(KC_SPC), LT(NUM_SYM, KC_ENT), TG(NAV_FUN)
+                      THUMB1,  THUMB2,  THUMB3,     THUMB4,  THUMB5,  THUMB6
+   // LSFT_T(KC_DEL),  LT(NAV_FUN, KC_ESC),  LSFT_T(KC_TAB),    CTL_T(KC_SPC), LT(NUM_SYM, KC_ENT), TG(NAV_FUN)
    ),
 
-  [NAV_FUN] = LAYOUT_split_3x5_3
-  (
-   DE_BSLS,   KC_F7,   KC_F8,   KC_F9,  KC_F10,    LCTL(KC_F), KC_HOME,  KC_END, RCS(KC_F),    KC_BSPC,
-   HGUI_AT, HALT_F4, HSFT_F5, HCTL_F6,  KC_F11,    HMOU_LEFT,  KC_DOWN,   KC_UP,  KC_RIGHT,     KC_DEL,
-   DE_AT,     KC_F1,   KC_F2,   KC_F3,  KC_F12,    LCTL(KC_H), KC_PGDN, KC_PGUP, RCS(KC_H), LCTL(KC_P),
-   _______, _______,  _______,                     _______, _______, _______
-   ),
-
-  [NUM_SYM] = LAYOUT_split_3x5_3
-  (
-   DE_EXLM, DE_DQUO, DE_QUES, DE_PERC,  DE_DLR,    DE_CIRC,    KC_7,     KC_8,    KC_9, DE_PLUS,
+  /*
+   * Improve: use https://docs.qmk.fm/features/layer_lock to quickly insert one key from this layer
+   * and have the option to lock into it, when inserting longer numbers/math expressions. This
+   * also makes two right thumb keys available.
+   *  !      "     §     $    %   ||     / (\)   7     8     9    +
+   *  <      {     (     [    '   ||     *       4     5     6    - (_)
+   *  >      }     )     ]    #   ||     0       1     2     3    =
+   *               |    ~     &   ||  LAYER      ,     .
+   */
+  // TODO: AT, CIRCumflex, Layer Lock (use a doubletap?)
+  [NUM_SYM] = LAYOUT_split_3x5_3 (
+   DE_EXLM, DE_DQUO, DE_QUES, DE_PERC,  DE_DLR,    DE_SLSH,    KC_7,     KC_8,    KC_9, DE_PLUS,
    DE_LABK, DE_LCBR, DE_LPRN, DE_LBRC, DE_QUOT,    DE_ASTR,    KC_4,     KC_5,    KC_6, DE_MINS,
    DE_RABK, DE_RCBR, DE_RPRN, DE_RBRC, DE_HASH,    KC_0,       KC_1,     KC_2,    KC_3,  DE_EQL,
-   DE_PIPE, DE_TILD, DE_AMPR,                      _______, _______, DE_DOT
+                     DE_PIPE, DE_TILD, DE_AMPR,    _______, DE_COMM,   DE_DOT
+   // DE_PIPE, DE_TILD, DE_AMPR,                      _______, _______, DE_DOT
    ),
 
-  [MOUSEMO] = LAYOUT_split_3x5_3
-  (
+  /*
+   * TODO: this is an idea and does NOT represent the implementation below
+   *   ´     F7    F8    F9   F10  || INS   HOME  UP  END  PgUp
+   *   `     F4    F5    F6   F11  || Left  Down  Up  Right PgDown
+   *         F1    F2    F3   F12  || Prev  Stop  Pause Play Next
+   *            XXXXX  _____ pause || VolDown Print XXXXX
+   */
+  [NAV_FUN] = LAYOUT_split_3x5_3 (
+   DE_BSLS,   KC_F7,   KC_F8,   KC_F9,  KC_F10,    LCTL(KC_F), KC_HOME,   KC_UP,  KC_END,     KC_PGUP,
+   HGUI_AT, HALT_F4, HSFT_F5, HCTL_F6,  KC_F11,    HMOU_LEFT,  KC_DOWN,   KC_UP,  KC_RIGHT,   KC_PGDN,
+   DE_AT,     KC_F1,   KC_F2,   KC_F3,  KC_F12,    LCTL(KC_H), KC_PGDN, KC_PGUP, RCS(KC_H), LCTL(KC_P),
+                    _______, _______,  _______,    _______, _______, _______
+   ),
+
+  [MOUSEMO] = LAYOUT_split_3x5_3 (
    XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX,  DE_UDIA, XXXXXXX, XXXXXXX,
    DE_ADIA, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN3,    _______, KC_VOLD,  KC_MUTE, KC_VOLU, DE_ODIA,
    XXXXXXX, KC_WH_L, XXXXXXX, KC_WH_R, XXXXXXX,    KC_MPRV, KC_MSTP,  KC_MPLY, KC_MNXT, XXXXXXX,
-   _______, KC_BTN1, KC_WH_D,                      KC_WH_U, KC_BTN2, _______
+                     _______, KC_BTN1, KC_WH_D,    KC_WH_U, KC_BTN2, _______
    )
 };
+
+// https://docs.qmk.fm/features/combo#combos
+/*  - Umlauts ä+ö+ü are combos with a near key */
+/*    - ä = w+a; ö = z+o; ü = z+u */
+/*    - ß = F+P;  € = H+,  */
+/*  - thumb1 is shift on hold, to ease typing acronyms */
+
+const uint16_t PROGMEM AUML_combo[] = {KC_W, KC_A, COMBO_END};
+const uint16_t PROGMEM OUML_combo[] = {KC_Y, KC_O, COMBO_END};
+const uint16_t PROGMEM UUML_combo[] = {KC_Y, KC_U, COMBO_END};
+const uint16_t PROGMEM EUR_combo[] = {KC_H, KC_COMM, COMBO_END};
+const uint16_t PROGMEM SS_combo[] = {KC_F, KC_P, COMBO_END};
+
+combo_t key_combos[] = {
+  COMBO(AUML_combo, DE_ADIA),
+  COMBO(OUML_combo, DE_ODIA),
+  COMBO(UUML_combo, DE_UDIA),
+  COMBO(SS_combo, DE_SS),
+  COMBO(EUR_combo, DE_EURO),
+};
diff --git a/chocofi/rules.mk b/chocofi/rules.mk
index 99de6f7..18c47e0 100644
--- a/chocofi/rules.mk
+++ b/chocofi/rules.mk
@@ -1,2 +1,14 @@
-
+SPLIT_KEYBOARD = yes
 MOUSEKEY_ENABLE = yes    # Mouse keys
+
+LAYER_LOCK_ENABLE = yes
+
+# https://docs.qmk.fm/features/key_overrides
+# KEY_OVERRIDE_ENABLE = yes
+
+# https://docs.qmk.fm/features/combo
+COMBO_ENABLE = yes
+
+# not enough space on the controller for caps-word feature :(
+# https://docs.qmk.fm/features/caps_word#caps-word
+CAPS_WORD_ENABLE = yes