diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java
index 5b21ad95d7c702cfe498a7d722be1db3826460f7..882aa5c0f6fb3da0e81e180dd2eff5a45cb11f7b 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java
@@ -28,9 +28,9 @@ public class PadStatusControlListener implements ChangeListener<PadStatus> {
 		PadSettings padSettings = pad.getPadSettings();
 		ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
 
+		PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onStatusChange(pad, newValue));
 		if (newValue == PadStatus.PLAY) {
 			if (pad.getContent() != null) {
-				PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onPlay(pad));
 
 				pad.getProject().updateActivePlayerProperty();
 
@@ -45,9 +45,7 @@ public class PadStatusControlListener implements ChangeListener<PadStatus> {
 				}
 
 				if (pad.getContent() instanceof Fadeable) {
-					if (oldValue == PadStatus.PAUSE && padSettings.getFade().isFadeInPause()) {
-						((Fadeable) pad.getContent()).fadeIn();
-					} else if (padSettings.getFade().isFadeInStart()) {
+					if (padSettings.getFade().isFadeInStart() || (oldValue == PadStatus.PAUSE && padSettings.getFade().isFadeInPause())) {
 						((Fadeable) pad.getContent()).fadeIn();
 					}
 				}
@@ -56,17 +54,13 @@ public class PadStatusControlListener implements ChangeListener<PadStatus> {
 		} else if (newValue == PadStatus.PAUSE) {
 			if (pad.getContent() instanceof Pauseable) {
 				if (pad.getContent() instanceof Fadeable && padSettings.getFade().isFadeOutPause()) {
-					((Fadeable) pad.getContent()).fadeOut(() ->
-					{
-						((Pauseable) pad.getContent()).pause();
-					});
+					((Fadeable) pad.getContent()).fadeOut(() -> ((Pauseable) pad.getContent()).pause());
 				} else {
 					((Pauseable) pad.getContent()).pause();
 				}
 			}
 		} else if (newValue == PadStatus.STOP) {
 			if (pad.getContent() != null) {
-				PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onStop(pad));
 				pad.getProject().updateActivePlayerProperty();
 
 				if (pad.getContent() instanceof Fadeable && !pad.isEof() && padSettings.getFade().isFadeOutStop()) { // Fade nur wenn Pad
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java
index ec4388da4c5f31ceb8dcd6c91c1a823d04451d1b..4123e2747cfd1befcfbdd424fef4a4f6d30f26b4 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java
@@ -1,6 +1,7 @@
 package de.tobias.playpad.plugin;
 
 import de.tobias.playpad.pad.Pad;
+import de.tobias.playpad.pad.PadStatus;
 
 /**
  * Listener für ein Pad.
@@ -11,17 +12,10 @@ import de.tobias.playpad.pad.Pad;
 public interface PadListener {
 
 	/**
-	 * Wird aufgerufen, sobald ein Pad wiedergegeben wird.
-	 *
-	 * @param pad Pad
+	 * Call then ever the status of a pad will be changed
+	 * @param pad corresponding pad
+	 * @param newValue new status value
 	 */
-	void onPlay(Pad pad);
-
-	/**
-	 * Wird aufgerufen, sobald ein Pad gestoppt wird.
-	 *
-	 * @param pad Pad
-	 */
-	void onStop(Pad pad);
+	void onStatusChange(Pad pad, PadStatus newValue);
 
 }
\ No newline at end of file
diff --git a/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java b/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java
index 9e8016037682598e64b0a919a43bed915d49194a..95863b33ae8b771ecf677e9230a870ed52157911 100644
--- a/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java
+++ b/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java
@@ -9,6 +9,7 @@ import de.thecodelabs.utils.ui.NVCStage;
 import de.thecodelabs.utils.util.Localization;
 import de.tobias.playpad.equalizerplugin.Equalizer;
 import de.tobias.playpad.pad.Pad;
+import de.tobias.playpad.pad.PadStatus;
 import de.tobias.playpad.pad.content.PadContent;
 import de.tobias.playpad.pad.content.play.Equalizeable;
 import de.tobias.playpad.plugin.Module;
@@ -73,7 +74,15 @@ public class EqualizerPluginImpl implements PlayPadPluginStub, PluginArtifact, W
 	}
 
 	@Override
-	public void onPlay(Pad pad) {
+	public void onStatusChange(Pad pad, PadStatus newValue) {
+		if (newValue == PadStatus.PLAY) {
+			onPlay(pad);
+		} else if (newValue == PadStatus.STOP) {
+			onStop(pad);
+		}
+	}
+
+	private void onPlay(Pad pad) {
 		PadContent content = pad.getContent();
 		if (content instanceof Equalizeable) {
 
@@ -89,8 +98,7 @@ public class EqualizerPluginImpl implements PlayPadPluginStub, PluginArtifact, W
 		}
 	}
 
-	@Override
-	public void onStop(Pad pad) {
+	private void onStop(Pad pad) {
 		PadContent content = pad.getContent();
 		if (content instanceof Equalizeable) {
 
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala
index a971e03651a2f00a875051a94c15195ec74b1714..051a6c3052182340ad692e1e0db8aeb94e59987f 100644
--- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala
@@ -2,15 +2,19 @@ package de.tobias.playpad.plugin.api
 
 import de.thecodelabs.logger.Logger
 import de.thecodelabs.plugins.{Plugin, PluginDescriptor}
+import de.tobias.playpad.PlayPadPlugin
 import de.tobias.playpad.plugin.api.websocket.WebSocketHandler
+import de.tobias.playpad.plugin.api.websocket.listener.PadStatusListener
 import spark.Spark
 
 class WebApiPlugin extends Plugin {
 	override def startup(pluginDescriptor: PluginDescriptor): Unit = {
+		PlayPadPlugin.getInstance().addPadListener(new PadStatusListener)
+
 		Logger.debug("Enable Web API Plugin")
 
 		Spark.port(9876)
-		Spark.webSocket("/api", classOf[WebSocketHandler])
+		Spark.webSocket("/api", WebSocketHandler.instance)
 		Spark.get("/", (_, _) => "PlayWall API")
 	}
 
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 08bc4686781602768c665754a6cadb441be946e3..69b48550f1f043cf02bfea30e3116b3d79c11727 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
@@ -45,9 +45,21 @@ class WebSocketHandler {
 	@OnWebSocketError def onError(session: Session, error: Throwable): Unit = {
 		Logger.error(error)
 	}
+
+	def sendUpdate(message: String, jsonObject: JsonObject): Unit = {
+		jsonObject.addProperty("updateType", message)
+		val payload = WebSocketHandler.gson.toJson(jsonObject)
+
+		sessions.stream()
+			.filter(session => session.isOpen)
+			.forEach(session => session.getRemote.sendString(payload))
+	}
 }
 
 object WebSocketHandler {
+
+	lazy val instance: WebSocketHandler = new WebSocketHandler
+
 	private val gson = new Gson()
 
 	def sendResponse(session: Session, message: Message, response: JsonObject) = {
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadStatusListener.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadStatusListener.scala
new file mode 100644
index 0000000000000000000000000000000000000000..ffd31cb462573fa1630bcf9448d4f4eda0b7a387
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadStatusListener.scala
@@ -0,0 +1,18 @@
+package de.tobias.playpad.plugin.api.websocket.listener
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.pad.{Pad, PadStatus}
+import de.tobias.playpad.plugin.PadListener
+import de.tobias.playpad.plugin.api.websocket.WebSocketHandler
+
+class PadStatusListener extends PadListener {
+
+	override def onStatusChange(pad: Pad, newValue: PadStatus): Unit = {
+		val payload = new JsonObject
+
+		payload.addProperty("pad", pad.getUuid.toString)
+		payload.addProperty("status", newValue.name())
+
+		WebSocketHandler.instance.sendUpdate("pad-status-changed", payload)
+	}
+}