diff --git a/src/modules/sensors/voted_sensors_update.cpp b/src/modules/sensors/voted_sensors_update.cpp
index bc628bab86acf79e4e1c62d9ac50ea737b3ede51..597313ebbab423f6751d7de40c6c4967b4ac5ee5 100644
--- a/src/modules/sensors/voted_sensors_update.cpp
+++ b/src/modules/sensors/voted_sensors_update.cpp
@@ -41,6 +41,7 @@
 
 #include <systemlib/mavlink_log.h>
 
+#include <uORB/Subscription.hpp>
 #include <conversion/rotation.h>
 #include <ecl/geo/geo.h>
 
@@ -151,79 +152,68 @@ void VotedSensorsUpdate::parameters_update()
 	_temperature_compensation.parameters_update(_hil_enabled);
 
 	/* gyro */
-	for (int topic_instance = 0; topic_instance < GYRO_COUNT_MAX; ++topic_instance) {
+	for (int topic_instance = 0; topic_instance < _gyro.subscription_count; ++topic_instance) {
 
-		if (topic_instance < _gyro.subscription_count) {
-			// valid subscription, so get the driver id by getting the published sensor data
-			sensor_gyro_s report;
+		uORB::Subscription<sensor_gyro_s> report{ORB_ID(sensor_gyro), 0, (unsigned)topic_instance};
 
-			if (orb_copy(ORB_ID(sensor_gyro), _gyro.subscription[topic_instance], &report) == 0) {
-				int temp = _temperature_compensation.set_sensor_id_gyro(report.device_id, topic_instance);
+		int temp = _temperature_compensation.set_sensor_id_gyro(report.get().device_id, topic_instance);
 
-				if (temp < 0) {
-					PX4_ERR("%s temp compensation init: failed to find device ID %u for instance %i",
-						"gyro", report.device_id, topic_instance);
-					_corrections.gyro_mapping[topic_instance] = 0;
+		if (temp < 0) {
+			PX4_ERR("%s temp compensation init: failed to find device ID %u for instance %i", "gyro", report.get().device_id,
+				topic_instance);
 
-				} else {
-					_corrections.gyro_mapping[topic_instance] = temp;
+			_corrections.gyro_mapping[topic_instance] = 0;
+
+		} else {
+			_corrections.gyro_mapping[topic_instance] = temp;
 
-				}
-			}
 		}
 	}
 
 
 	/* accel */
-	for (int topic_instance = 0; topic_instance < ACCEL_COUNT_MAX; ++topic_instance) {
+	for (int topic_instance = 0; topic_instance < _accel.subscription_count; ++topic_instance) {
 
-		if (topic_instance < _accel.subscription_count) {
-			// valid subscription, so get the driver id by getting the published sensor data
-			sensor_accel_s report;
+		uORB::Subscription<sensor_accel_s> report{ORB_ID(sensor_accel), 0, (unsigned)topic_instance};
 
-			if (orb_copy(ORB_ID(sensor_accel), _accel.subscription[topic_instance], &report) == 0) {
-				int temp = _temperature_compensation.set_sensor_id_accel(report.device_id, topic_instance);
+		int temp = _temperature_compensation.set_sensor_id_accel(report.get().device_id, topic_instance);
 
-				if (temp < 0) {
-					PX4_ERR("%s temp compensation init: failed to find device ID %u for instance %i",
-						"accel", report.device_id, topic_instance);
-					_corrections.accel_mapping[topic_instance] = 0;
+		if (temp < 0) {
+			PX4_ERR("%s temp compensation init: failed to find device ID %u for instance %i", "accel", report.get().device_id,
+				topic_instance);
 
-				} else {
-					_corrections.accel_mapping[topic_instance] = temp;
+			_corrections.accel_mapping[topic_instance] = 0;
+
+		} else {
+			_corrections.accel_mapping[topic_instance] = temp;
 
-				}
-			}
 		}
 	}
 
+
 	/* baro */
-	for (int topic_instance = 0; topic_instance < BARO_COUNT_MAX; ++topic_instance) {
+	for (int topic_instance = 0; topic_instance < _baro.subscription_count; ++topic_instance) {
 
-		if (topic_instance < _baro.subscription_count) {
-			// valid subscription, so get the driver id by getting the published sensor data
-			sensor_baro_s report;
+		uORB::Subscription<sensor_baro_s> report{ORB_ID(sensor_baro), 0, (unsigned)topic_instance};
 
-			if (orb_copy(ORB_ID(sensor_baro), _baro.subscription[topic_instance], &report) == 0) {
-				int temp = _temperature_compensation.set_sensor_id_baro(report.device_id, topic_instance);
+		int temp = _temperature_compensation.set_sensor_id_baro(report.get().device_id, topic_instance);
 
-				if (temp < 0) {
-					PX4_ERR("%s temp compensation init: failed to find device ID %u for instance %i",
-						"baro", report.device_id, topic_instance);
-					_corrections.baro_mapping[topic_instance] = 0;
+		if (temp < 0) {
+			PX4_ERR("%s temp compensation init: failed to find device ID %u for instance %i", "baro", report.get().device_id,
+				topic_instance);
 
-				} else {
-					_corrections.baro_mapping[topic_instance] = temp;
+			_corrections.baro_mapping[topic_instance] = 0;
+
+		} else {
+			_corrections.baro_mapping[topic_instance] = temp;
 
-				}
-			}
 		}
 	}
 
 
 	/* set offset parameters to new values */
-	bool failed;
-	char str[30];
+	bool failed = false;
+	char str[30] {};
 	unsigned gyro_count = 0;
 	unsigned accel_count = 0;
 	unsigned gyro_cal_found_count = 0;