diff --git a/epicardium/modules/leds.c b/epicardium/modules/leds.c
index 3c474ebfb6081f30aae1a7724abda44d9aa3aa67..ffe5969e103c1e736d502a2c79d8933fc5e5cf6b 100644
--- a/epicardium/modules/leds.c
+++ b/epicardium/modules/leds.c
@@ -7,19 +7,22 @@
 
 #include <stdbool.h>
 
-//TODO: create smth like vTaskDelay(pdMS_TO_TICKS(//put ms here)) for us, remove blocking delay from /lib/leds.c to avoid process blocking
+/*
+ * TODO: create smth like vTaskDelay(pdMS_TO_TICKS(//put ms here)) for us,
+ *       remove blocking delay from /lib/leds.c to avoid process blocking
+ */
 
 #define NUM_LEDS 15 /* Take from lib/card10/leds.c */
 
-static void do_update()
+static void do_update(void)
 {
-	while (hwlock_acquire_timeout(HWLOCK_LED, portMAX_DELAY) < 0) {
-		vTaskDelay(pdMS_TO_TICKS(1));
-	}
+	hwlock_acquire(HWLOCK_LED);
+	hwlock_acquire(HWLOCK_I2C);
 
 	leds_update_power();
 	leds_update();
 
+	hwlock_release(HWLOCK_I2C);
 	hwlock_release(HWLOCK_LED);
 }
 
@@ -96,13 +99,7 @@ void epic_leds_dim_top(uint8_t value)
 {
 	leds_set_dim_top(value);
 	if (personal_state_enabled() == 0) {
-		while (hwlock_acquire_timeout(HWLOCK_I2C, portMAX_DELAY) < 0) {
-			vTaskDelay(pdMS_TO_TICKS(1));
-		}
-
-		leds_update();
-
-		hwlock_release(HWLOCK_I2C);
+		do_update();
 	}
 }
 
@@ -110,35 +107,22 @@ void epic_leds_dim_bottom(uint8_t value)
 {
 	leds_set_dim_bottom(value);
 	if (personal_state_enabled() == 0) {
-		while (hwlock_acquire_timeout(HWLOCK_I2C, portMAX_DELAY) < 0) {
-			vTaskDelay(pdMS_TO_TICKS(1));
-		}
-
-		leds_update();
-
-		hwlock_release(HWLOCK_I2C);
+		do_update();
 	}
 }
 
 void epic_leds_set_rocket(int led, uint8_t value)
 {
-	while (hwlock_acquire_timeout(HWLOCK_I2C, portMAX_DELAY) < 0) {
-		vTaskDelay(pdMS_TO_TICKS(1));
-	}
-
-	value = value > 31 ? 31 : value;
-	pmic_set_led(led, value);
-
+	hwlock_acquire(HWLOCK_I2C);
+	pmic_set_led(led, value > 31 ? 31 : value);
 	hwlock_release(HWLOCK_I2C);
 }
 
 int epic_leds_get_rocket(int led)
 {
 	int ret = 0;
-	while (hwlock_acquire_timeout(HWLOCK_I2C, portMAX_DELAY) < 0) {
-		vTaskDelay(pdMS_TO_TICKS(1));
-	}
 
+	hwlock_acquire(HWLOCK_I2C);
 	ret = pmic_get_led(led);
 	hwlock_release(HWLOCK_I2C);
 	return ret;
@@ -146,12 +130,8 @@ int epic_leds_get_rocket(int led)
 
 void epic_set_flashlight(bool power)
 {
-	while (hwlock_acquire_timeout(HWLOCK_I2C, portMAX_DELAY) < 0) {
-		vTaskDelay(pdMS_TO_TICKS(1));
-	}
-
+	hwlock_acquire(HWLOCK_I2C);
 	leds_flashlight(power);
-
 	hwlock_release(HWLOCK_I2C);
 }
 
@@ -162,12 +142,8 @@ void epic_leds_update(void)
 
 void epic_leds_set_powersave(bool eco)
 {
-	while (hwlock_acquire_timeout(HWLOCK_I2C, portMAX_DELAY) < 0) {
-		vTaskDelay(pdMS_TO_TICKS(1));
-	}
-
+	hwlock_acquire(HWLOCK_I2C);
 	leds_powersave(eco);
-
 	hwlock_release(HWLOCK_I2C);
 }
 
diff --git a/epicardium/modules/personal_state.c b/epicardium/modules/personal_state.c
index 08028b58b8c31acf98a3ae269018579ad43985f5..285cb872dd37315bf1bb5fd227e6cab3bd968f74 100644
--- a/epicardium/modules/personal_state.c
+++ b/epicardium/modules/personal_state.c
@@ -31,15 +31,8 @@ int epic_personal_state_set(uint8_t state, bool persistent)
 	personal_state_persistent = persistent;
 
 	if (was_enabled && !_personal_state_enabled) {
-		while (hwlock_acquire_timeout(HWLOCK_LED, portMAX_DELAY) < 0) {
-			vTaskDelay(pdMS_TO_TICKS(1));
-		}
-
 		leds_prep(PERSONAL_STATE_LED, 0, 0, 0);
-		leds_update_power();
-		leds_update();
-
-		hwlock_release(HWLOCK_LED);
+		epic_leds_update();
 	}
 
 	return 0;
@@ -60,11 +53,6 @@ void vLedTask(void *pvParameters)
 	const int led_animation_rate = 1000 / 25; /* 25Hz -> 40ms*/
 	while (1) {
 		if (_personal_state_enabled) {
-			while (hwlock_acquire_timeout(
-				       HWLOCK_LED, portMAX_DELAY) < 0) {
-				vTaskDelay(pdMS_TO_TICKS(1));
-			}
-
 			led_animation_ticks++;
 			if (personal_state == STATE_NO_CONTACT) {
 				leds_prep(PERSONAL_STATE_LED, 255, 0, 0);
@@ -130,10 +118,8 @@ void vLedTask(void *pvParameters)
 						(float)(1000 /
 							led_animation_rate))));
 			}
-			leds_update_power();
-			leds_update();
 
-			hwlock_release(HWLOCK_LED);
+			epic_leds_update();
 		}
 
 		vTaskDelay(led_animation_rate / portTICK_PERIOD_MS);