diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java
index 1f1dc56f3ffbb352ebe5c78f8989c3af4b8ed6eb..20756ec1df83ec7c0d199c8c7b3ee2003878e66b 100644
--- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java
@@ -1,6 +1,9 @@
 package de.tobias.playpad.plugin.api.client;
 
+import com.neovisionaries.ws.client.WebSocketException;
 import com.neovisionaries.ws.client.WebSocketState;
+import de.thecodelabs.logger.Logger;
+import de.thecodelabs.utils.threading.Worker;
 import de.thecodelabs.utils.ui.icon.FontAwesomeType;
 import de.thecodelabs.utils.ui.icon.FontIcon;
 import de.thecodelabs.utils.util.Localization;
@@ -8,13 +11,18 @@ import de.tobias.playpad.api.PlayPadClient;
 import de.tobias.playpad.plugin.MainWindowListener;
 import de.tobias.playpad.plugin.api.WebApiPlugin$;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
+import javafx.application.Platform;
 import javafx.beans.InvalidationListener;
 import javafx.beans.binding.Bindings;
 import javafx.beans.property.IntegerProperty;
 import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.SimpleIntegerProperty;
 import javafx.scene.control.Tooltip;
+import javafx.scene.input.MouseEvent;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.stream.Collectors;
 
 public class WebApiRemoteConnectionStateListener implements MainWindowListener {
@@ -28,22 +36,27 @@ public class WebApiRemoteConnectionStateListener implements MainWindowListener {
 
 		connectedProperty = new SimpleIntegerProperty(0);
 		connectedProperty.addListener((observable, oldValue, newValue) -> {
-			boolean allConnected = newValue.intValue() == 0;
-
-			connectionStateIcon.setIcons(allConnected ? FontAwesomeType.CLOUD : FontAwesomeType.EXCLAMATION_CIRCLE);
-			if (!allConnected) {
-				final String disconnectedServers = WebApiPlugin$.MODULE$.connections().entrySet().stream()
-						.filter(entry -> entry.getValue().getPlayPadConnectionState() != WebSocketState.OPEN)
-						.map(entry -> entry.getKey().getName()).collect(Collectors.joining(", "));
-				connectionStateIcon.setTooltip(new Tooltip(Localization.getString("webapi-settings.remote.state.tooltip", disconnectedServers)));
-				connectionStateIcon.setStyle("-fx-text-fill: red;");
-			} else {
-				connectionStateIcon.setTooltip(null);
-				connectionStateIcon.setStyle("");
-			}
+			Platform.runLater(() -> {
+				boolean allConnected = newValue.intValue() == 0;
+				connectionStateIcon.setIcons(allConnected ? FontAwesomeType.CLOUD : FontAwesomeType.EXCLAMATION_CIRCLE);
+				if (!allConnected) {
+					final String disconnectedServers = WebApiPlugin$.MODULE$.connections().entrySet().stream()
+							.filter(entry -> entry.getValue().getPlayPadConnectionState() != WebSocketState.OPEN)
+							.map(entry -> entry.getKey().getName()).collect(Collectors.joining(", "));
+					connectionStateIcon.setTooltip(new Tooltip(Localization.getString("webapi-settings.remote.state.tooltip", disconnectedServers)));
+					connectionStateIcon.setStyle("-fx-text-fill: red;");
+				} else {
+					connectionStateIcon.setTooltip(null);
+					connectionStateIcon.setStyle("");
+				}
+			});
 		});
 
-		WebApiPlugin$.MODULE$.connections().addListener((InvalidationListener) observable -> createConnectionStateBinding());
+		WebApiPlugin$.MODULE$.connections().addListener((InvalidationListener) observable -> {
+			createConnectionStateBinding();
+			connectionStateIcon.setVisible(!WebApiPlugin$.MODULE$.connections().isEmpty());
+		});
+		connectionStateIcon.setVisible(!WebApiPlugin$.MODULE$.connections().isEmpty());
 		createConnectionStateBinding();
 	}