diff --git a/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
index ff295d8719c995b836447c65c15a1724bd97d9af..799316078c501ec56b18058a1a1640ee4ea8f968 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
@@ -159,6 +159,10 @@ public class PlayPadImpl implements PlayPad {
 		} else {
 			currentProject = project;
 			mainViewController.openProject(project);
+
+			if (onLoaded != null) {
+				onLoaded.accept(mainViewController);
+			}
 		}
 	}
 
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java
index e228382f23b592bde79fa186e88aa4631ace874f..028c1a91917ff8800ce82c2473af0832308cfe6b 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java
@@ -32,7 +32,6 @@ import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -252,35 +251,30 @@ public class PathMatchDialog extends NVC {
 		}
 	}
 
-	private Set<Path> searchHistory = new HashSet<>();
-
 	private void find(boolean subdirectories) {
 		// Check Project
 		Worker.runLater(() -> {
 			if (!missingMediaPaths.isEmpty()) {
 				Set<Path> searchFolders = calculateSearchPaths();
 
-				searchFolders.stream()
-						.filter(folder -> !searchHistory.contains(folder))
-						.forEach(folder -> {
-							searchHistory.add(folder);
-							Logger.info("Search in: " + folder);
-							this.missingMediaPaths.parallelStream()
-									.filter(entry -> !entry.isMatched())
-									.forEach(entry -> {
-										try {
-											Path result = MediaPool.find(entry.getMediaPath().getFileName(), folder, subdirectories);
-											if (result != null) {
-												Platform.runLater(() -> {
-													entry.setLocalPath(result);
-													entry.setSelected(true);
-												});
-											}
-										} catch (IOException e) {
-											Logger.error(e);
-										}
-									});
-						});
+				searchFolders.forEach(folder -> {
+					Logger.info("Search in: " + folder);
+					this.missingMediaPaths.parallelStream()
+							.filter(entry -> !entry.isMatched())
+							.forEach(entry -> {
+								try {
+									Path result = MediaPool.find(entry.getMediaPath().getFileName(), folder, subdirectories);
+									if (result != null) {
+										Platform.runLater(() -> {
+											entry.setLocalPath(result);
+											entry.setSelected(true);
+										});
+									}
+								} catch (IOException e) {
+									Logger.error(e);
+								}
+							});
+				});
 				Platform.runLater(() -> table.getItems().setAll(missingMediaPaths));
 			}
 		});
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala
index 4f665597bc174abfe38681858b4a1d40e5ff34c0..08bc4686781602768c665754a6cadb441be946e3 100644
--- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala
@@ -5,7 +5,7 @@ import java.util.concurrent.ConcurrentLinkedQueue
 import com.google.gson.{Gson, JsonObject}
 import de.thecodelabs.logger.Logger
 import de.tobias.playpad.plugin.api.websocket.message.Message
-import de.tobias.playpad.plugin.api.websocket.methods.{ProjectCurrentMethod, ProjectListMethod, ProjectOpenMethod}
+import de.tobias.playpad.plugin.api.websocket.methods.{PadStatusChangeMethod, ProjectCurrentMethod, ProjectListMethod, ProjectOpenMethod}
 import org.eclipse.jetty.websocket.api.Session
 import org.eclipse.jetty.websocket.api.annotations._
 
@@ -17,7 +17,8 @@ class WebSocketHandler {
 	private val methods: Map[String, MethodExecutable] = Map(
 		"project-list" -> new ProjectListMethod,
 		"project-current" -> new ProjectCurrentMethod,
-		"project-open" -> new ProjectOpenMethod
+		"project-open" -> new ProjectOpenMethod,
+		"pad-status-change" -> new PadStatusChangeMethod
 	)
 
 	@OnWebSocketConnect def connected(session: Session): Unit = {
@@ -42,7 +43,7 @@ class WebSocketHandler {
 	}
 
 	@OnWebSocketError def onError(session: Session, error: Throwable): Unit = {
-		Logger.warning(error.getMessage)
+		Logger.error(error)
 	}
 }
 
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PadStatusChangeMethod.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PadStatusChangeMethod.scala
new file mode 100644
index 0000000000000000000000000000000000000000..492583d000d44bdd997507e27fae325436c0b21c
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PadStatusChangeMethod.scala
@@ -0,0 +1,32 @@
+package de.tobias.playpad.plugin.api.websocket.methods
+
+import java.util.UUID
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.PlayPadPlugin
+import de.tobias.playpad.pad.PadStatus
+import de.tobias.playpad.plugin.api.websocket.MethodExecutable
+import de.tobias.playpad.plugin.api.websocket.message.Message
+import javafx.application.Platform
+import org.eclipse.jetty.websocket.api.Session
+
+class PadStatusChangeMethod extends MethodExecutable {
+	override def execute(session: Session, message: Message): JsonObject = {
+		val padId = UUID.fromString(message.payload.get("pad").getAsString)
+		val newStatus = PadStatus.valueOf(message.payload.get("status").getAsString)
+
+		val currentProject = PlayPadPlugin.getInstance().getCurrentProject
+		val pad = currentProject.getPad(padId)
+
+		Platform.runLater(() => {
+			newStatus match {
+				case PadStatus.PLAY => pad.play()
+				case PadStatus.PAUSE => pad.pause()
+				case PadStatus.STOP => pad.stop()
+				case _ =>
+			}
+		})
+
+		new JsonObject
+	}
+}