diff --git a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_Driver.h b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_Driver.h
index 07a8585..c527efc 100644
--- a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_Driver.h
+++ b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_Driver.h
@@ -85,8 +85,8 @@ typedef struct {
     uint16_t sumOfCellMeasurements;
     uint16_t refVoltage;
 
-    uint32_t overVoltage;
-    uint32_t underVoltage;
+    uint32_t overVoltage;  // Bitfield of overvoltage flags
+    uint32_t underVoltage; //      "      undervoltage  "
 
 } Cell_Module;
 
diff --git a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Src/ADBMS_Abstraction.c b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Src/ADBMS_Abstraction.c
index 33142a8..944642d 100644
--- a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Src/ADBMS_Abstraction.c
+++ b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Src/ADBMS_Abstraction.c
@@ -79,7 +79,7 @@ HAL_StatusTypeDef amsReset() {
     CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, flagsbuffer, 0)); //start continuous cell voltage measurement with redundancy
     CHECK_RETURN(writeCMD(ADAX | ADAX_CONV_ALL, flagsbuffer, 0)); //start aux measurement
 
-    return 0;
+    return HAL_OK;
 }
 
 HAL_StatusTypeDef initAMS(SPI_HandleTypeDef* hspi) {
diff --git a/AMS_Master_Code/Core/Src/battery.c b/AMS_Master_Code/Core/Src/battery.c
index 52be721..51692cc 100644
--- a/AMS_Master_Code/Core/Src/battery.c
+++ b/AMS_Master_Code/Core/Src/battery.c
@@ -68,6 +68,28 @@ HAL_StatusTypeDef battery_update() {
     if (ret.bms_id != -1) {
       debug_log_cont(LOG_LEVEL_ERROR, " (on BMS ID: %hd)", ret.bms_id);
     }
+
+    if (ret.status == ADBMS_OVERVOLT || ret.status == ADBMS_UNDERVOLT) {
+      if (ret.bms_id != -1 && ret.bms_id < N_BMS) {
+        const char* error_type = (ret.status == ADBMS_OVERVOLT) ? "overvoltage" : "undervoltage";
+        uint32_t voltage_flags = (ret.status == ADBMS_OVERVOLT) ? 
+                                modules[ret.bms_id].overVoltage : 
+                                modules[ret.bms_id].underVoltage;
+        
+        debug_log(LOG_LEVEL_ERROR, "Cell %s detected on module %d, affected cells: ", 
+                  error_type, ret.bms_id);
+        
+        for (size_t cell = 0; cell < N_CELLS; cell++) {
+          if (voltage_flags & (1UL << cell)) {
+            debug_log_cont(LOG_LEVEL_ERROR, "%zu (%d mV) ", cell, modules[ret.bms_id].cellVoltages[cell]);
+          }
+        }
+
+        if (!voltage_flags) {
+          debug_log_cont(LOG_LEVEL_ERROR, "none (something went wrong?)");
+        }
+      }
+    }
     
     update_error_window(true, ret.bms_id);
     return HAL_ERROR;
@@ -137,7 +159,7 @@ HAL_StatusTypeDef battery_update() {
       }
 
       if (cellTemps[i][j] > (MAX_TEMP * (uint16_t)(TEMP_CONV))) {
-        debug_log(LOG_LEVEL_ERROR, "Cell %zu on BMS %zu overtemp: %d C", j, i, cellTemps[i][j]);
+        debug_log(LOG_LEVEL_ERROR, "Cell %zu on BMS %zu overtemp: %d0 mC", j, i, cellTemps[i][j]);
         can_send_error(TS_ERRORKIND_CELL_OVERTEMP, i);
         ts_sm_set_error_source(TS_ERROR_SOURCE_SLAVES, TS_ERRORKIND_CELL_OVERTEMP, true);
       } else {
diff --git a/AMS_Master_Code/Core/Src/can.c b/AMS_Master_Code/Core/Src/can.c
index 63561dd..849fef5 100644
--- a/AMS_Master_Code/Core/Src/can.c
+++ b/AMS_Master_Code/Core/Src/can.c
@@ -15,7 +15,7 @@
 void can_init(FDCAN_HandleTypeDef *handle) {
   ftcan_init(handle);
   ftcan_add_filter(CAN_ID_SHUNT_BASE, 0xFF0);
-  // ftcan_add_filter(CAN_ID_AMS_IN, 0xFFF);
+  ftcan_add_filter(CAN_ID_AMS_IN, 0xFFF);
   // ftcan_add_filter(CAN_ID_SLAVE_PANIC, 0xFFF);
   // ftcan_add_filter(CAN_ID_SLAVE_STATUS_BASE, 0xFF0);
   // ftcan_add_filter(CAN_ID_SLAVE_LOG, 0xFFF);
diff --git a/AMS_Master_Code/Core/Src/shunt_monitoring.c b/AMS_Master_Code/Core/Src/shunt_monitoring.c
index 3655fa0..a938c45 100644
--- a/AMS_Master_Code/Core/Src/shunt_monitoring.c
+++ b/AMS_Master_Code/Core/Src/shunt_monitoring.c
@@ -9,16 +9,7 @@
 ShuntData shunt_data;
 
 void shunt_init() {
-  shunt_data.current = 0;
-  shunt_data.voltage_veh = 0;
-  shunt_data.voltage_bat = 0;
-  shunt_data.voltage3 = 0;
-  shunt_data.busbartemp = 0;
-  shunt_data.power = 0;
-  shunt_data.energy = 0;
-  shunt_data.current_counter = 0;
-  shunt_data.last_message = 0;
-  shunt_data.last_current_message = 0;
+  shunt_data = (ShuntData){};
 }
 
 void shunt_check() {