diff --git a/gateway.go b/gateway.go
index b83418388836f76098bdb5189483c28a97666434..7341ac801b3327a8841e46dd97d77ab724e57a72 100644
--- a/gateway.go
+++ b/gateway.go
@@ -58,21 +58,21 @@ func (gw *Gateway) mqttPublishHander(client MQTT.Client, msg MQTT.Message) {
 	}
 	// Is it devices definitions ?
 	if msg.Topic() == gw.config.topic+"/bridge/devices" {
-		gw.jsonParseDevices(msg.Payload())
+		gw.jsonParseDevices(msg)
 	} else {
-		dev := gw.GetZDeviceByTopic(msg.Topic())
+		zDev := gw.GetZDeviceByTopic(msg.Topic())
 		// mqttDumpMsg(msg)
-		if dev != nil {
-			dev.HandleMessage(msg)
+		if zDev != nil {
+			zDev.HandleMessage(msg)
 		}
 	}
 }
 
 // jsonParseDevices parses the bridge/devices json and creates new xAAL devices
 // if they don't exist
-func (gw *Gateway) jsonParseDevices(jsonData []byte) {
+func (gw *Gateway) jsonParseDevices(msg MQTT.Message) {
 	var devices []Z2MDevice
-	err := json.Unmarshal([]byte(jsonData), &devices)
+	err := json.Unmarshal(msg.Payload(), &devices)
 	if err != nil {
 		slog.Error("Error decoding JSON", "err", err)
 	}