diff --git a/epicardium/modules/leds.c b/epicardium/modules/leds.c
index dd2c20cafd1019200592abe528266c6a0e54f46b..ffe5969e103c1e736d502a2c79d8933fc5e5cf6b 100644
--- a/epicardium/modules/leds.c
+++ b/epicardium/modules/leds.c
@@ -99,9 +99,7 @@ void epic_leds_dim_top(uint8_t value)
 {
 	leds_set_dim_top(value);
 	if (personal_state_enabled() == 0) {
-		hwlock_acquire(HWLOCK_I2C);
-		leds_update();
-		hwlock_release(HWLOCK_I2C);
+		do_update();
 	}
 }
 
@@ -109,9 +107,7 @@ void epic_leds_dim_bottom(uint8_t value)
 {
 	leds_set_dim_bottom(value);
 	if (personal_state_enabled() == 0) {
-		hwlock_acquire(HWLOCK_I2C);
-		leds_update();
-		hwlock_release(HWLOCK_I2C);
+		do_update();
 	}
 }
 
diff --git a/epicardium/modules/personal_state.c b/epicardium/modules/personal_state.c
index e9390bf82cef029e4210931818f102ff7e14bfdf..285cb872dd37315bf1bb5fd227e6cab3bd968f74 100644
--- a/epicardium/modules/personal_state.c
+++ b/epicardium/modules/personal_state.c
@@ -31,13 +31,8 @@ int epic_personal_state_set(uint8_t state, bool persistent)
 	personal_state_persistent = persistent;
 
 	if (was_enabled && !_personal_state_enabled) {
-		hwlock_acquire(HWLOCK_LED);
-
 		leds_prep(PERSONAL_STATE_LED, 0, 0, 0);
-		leds_update_power();
-		leds_update();
-
-		hwlock_release(HWLOCK_LED);
+		epic_leds_update();
 	}
 
 	return 0;
@@ -58,8 +53,6 @@ void vLedTask(void *pvParameters)
 	const int led_animation_rate = 1000 / 25; /* 25Hz -> 40ms*/
 	while (1) {
 		if (_personal_state_enabled) {
-			hwlock_acquire(HWLOCK_LED);
-
 			led_animation_ticks++;
 			if (personal_state == STATE_NO_CONTACT) {
 				leds_prep(PERSONAL_STATE_LED, 255, 0, 0);
@@ -126,13 +119,7 @@ void vLedTask(void *pvParameters)
 							led_animation_rate))));
 			}
 
-			hwlock_acquire(HWLOCK_I2C);
-
-			leds_update_power();
-			leds_update();
-
-			hwlock_release(HWLOCK_I2C);
-			hwlock_release(HWLOCK_LED);
+			epic_leds_update();
 		}
 
 		vTaskDelay(led_animation_rate / portTICK_PERIOD_MS);