diff --git a/eraser-base/src/main/jastadd/ExternalHost.jrag b/eraser-base/src/main/jastadd/ExternalHost.jrag
index 892a7dfbc2a86e1b8967272c035202f7a9008184..2b8e5a0d9f5efc9d93c05bed3c72d01c3cc5661a 100644
--- a/eraser-base/src/main/jastadd/ExternalHost.jrag
+++ b/eraser-base/src/main/jastadd/ExternalHost.jrag
@@ -9,4 +9,15 @@ aspect ExternalHost {
         }
         return this;
     }
+    public ExternalHost ExternalHost.setHostFromAddress(String line) {
+        String host = line;
+        if (line.contains(":")) {
+            String[] parts = line.split(":");
+            host = parts[0];
+            this.setPort(Integer.parseInt(parts[1]));
+        }
+        setHostName(host);
+
+        return this;
+    }
 }
\ No newline at end of file
diff --git a/eraser-base/src/main/jastadd/Util.jrag b/eraser-base/src/main/jastadd/Util.jrag
index 5dec6c937eb459ea7a5abbc0b26d395a8dd7ce44..b0d5bf094bc4de78f3af55e988ca5268463f7a17 100644
--- a/eraser-base/src/main/jastadd/Util.jrag
+++ b/eraser-base/src/main/jastadd/Util.jrag
@@ -11,16 +11,10 @@ aspect Util {
 
 
   public static ExternalHost ExternalHost.of(String hostName, int defaultPort, String username, String password) {
-    String host = hostName;
-    int port = defaultPort;
-    if (hostName.contains(":")) {
-      String[] parts = hostName.split(":");
-      host = parts[0];
-      port = Integer.parseInt(parts[1]);
-    }
     ExternalHost eh = new ExternalHost();
-    eh.setHostName(host);
-    eh.setPort(port);
+    eh.setPort(defaultPort);
+    eh.setHostFromAddress(hostName);
+
     if (username!=null)
       eh.setUserName(username);
     if (password!=null)
diff --git a/eraser-base/src/main/jastadd/eraser.parser b/eraser-base/src/main/jastadd/eraser.parser
index 456027b12235de42421b539218f7d82fca904871..e4b4eedcb279288a7ea6db74d4e72e3ecc660a9c 100644
--- a/eraser-base/src/main/jastadd/eraser.parser
+++ b/eraser-base/src/main/jastadd/eraser.parser
@@ -326,7 +326,7 @@ MqttRoot mqtt_root =
 MqttRoot mqtt_root_body =
      INCOMING EQUALS TEXT.n mqtt_root_body.mrb          {: mrb.setIncomingPrefix(ensureTrailingSlash(n)); return mrb; :}
   |  OUTGOING EQUALS TEXT.n mqtt_root_body.mrb          {: mrb.setOutgoingPrefix(ensureTrailingSlash(n)); return mrb; :}
-  |  HOST EQUALS TEXT.n mqtt_root_body.mrb              {: mrb.getHost().setHostName(n); return mrb; :}
+  |  HOST EQUALS TEXT.n mqtt_root_body.mrb              {: mrb.getHost().setHostFromAddress(n); return mrb; :}
   |  USER EQUALS TEXT.n mqtt_root_body.mrb              {: mrb.getHost().setUserName(n); return mrb; :}
   |  PASSWORD EQUALS TEXT.n mqtt_root_body.mrb          {: mrb.getHost().setPassword(n); return mrb; :}
   |                                                     {: return new MqttRoot(); :}