diff --git a/main.go b/main.go
index 8f9ea9b0498ebd46b688f68101fbe4706151b9d0..a2fccbca2171e53e4e0b5c74f9674665993156fe 100644
--- a/main.go
+++ b/main.go
@@ -15,7 +15,7 @@ func main() {
 	// spew.Dump(cfg)
 
 	xaal.SetupLogger()
-	client := mqttSetup(cfg.brokerHost, cfg.brokerPort, cfg.topic)
+	client := mqttSetup(cfg, mqttPublishHander)
 
 	eng := xaal.NewEngine()
 	gw := NewGW(client, cfg)
diff --git a/mqtt.go b/mqtt.go
index 399ee2d7f233551841a97d824f0f488d7cb82a0f..05288f5784a3f6964a9c58e88f56ea25fc2ca8d1 100644
--- a/mqtt.go
+++ b/mqtt.go
@@ -11,19 +11,19 @@ import (
 )
 
 // mqttSetup creates a new MQTT client
-func mqttSetup(mqttBroker string, port int, topic string) MQTT.Client {
+func mqttSetup(cfg *Config, publishHandler MQTT.MessageHandler) MQTT.Client {
 	// This JS style of creating a client is awfully verbose
 	opts := MQTT.NewClientOptions().
-		AddBroker(fmt.Sprintf("tcp://%s:%d", mqttBroker, port)).
+		AddBroker(fmt.Sprintf("tcp://%s:%d", cfg.brokerHost, cfg.brokerPort)).
 		SetClientID(mqttClientID).
-		SetDefaultPublishHandler(mqttPublishHander).SetAutoReconnect(true)
+		SetDefaultPublishHandler(publishHandler).SetAutoReconnect(true)
 
 	client := MQTT.NewClient(opts)
 	if token := client.Connect(); token.Wait() && token.Error() != nil {
 		panic(token.Error())
 	}
-	slog.Debug("Connected to", "Broker", mqttBroker, "Port", port, "Client", mqttClientID)
-	if token := client.Subscribe(topic+"/#", 0, nil); token.Wait() && token.Error() != nil {
+	slog.Debug("Connected to", "Broker", cfg.brokerHost, "Port", cfg.brokerPort, "Client", mqttClientID)
+	if token := client.Subscribe(cfg.topic+"/#", 0, nil); token.Wait() && token.Error() != nil {
 		panic(token.Error())
 	}
 	return client