diff --git a/PlayWall/src/main/java/de/tobias/playpad/trigger/VolumeTriggerVolumeFilter.java b/PlayWall/src/main/java/de/tobias/playpad/trigger/VolumeTriggerVolumeFilter.java
index b8dad1b748745a1c7415029d505a191865be0e24..83a730951c8d0f0a5183237ecf19f8837f4d50b6 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/trigger/VolumeTriggerVolumeFilter.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/trigger/VolumeTriggerVolumeFilter.java
@@ -44,8 +44,8 @@ public class VolumeTriggerVolumeFilter implements VolumeFilter, PadListener {
 	}
 
 	@Override
-	public void onStatusChange(Pad pad, PadStatus newValue) {
-		if (newValue == PadStatus.READY) {
+	public void onStatusChange(Pad pad, PadStatus oldValue, PadStatus newValue) {
+		if (oldValue == PadStatus.READY && newValue == PadStatus.PLAY) {
 			volumes.remove(pad.getUuid());
 		}
 	}
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 28bb500fc1d03326ee532d9fbaa934b77554ba39..5a98a8d2665046b20a47526e40c1d032b343e225 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
@@ -32,7 +32,7 @@ public class PadStatusControlListener implements ChangeListener<PadStatus> {
 		ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
 
 		try {
-			PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onStatusChange(pad, newValue));
+			PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onStatusChange(pad, oldValue, newValue));
 		} catch (Exception e) {
 			Logger.error(e);
 		}
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 a81a3e134132d1819a51d3777dcee956d41ff245..40fda9dfc865a065c20d7340b0389557e9386593 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java
@@ -21,7 +21,7 @@ public interface PadListener {
 	 * @param pad      corresponding pad
 	 * @param newValue new status value
 	 */
-	void onStatusChange(Pad pad, PadStatus newValue);
+	void onStatusChange(Pad pad, PadStatus oldValue, PadStatus newValue);
 
 	default void onMediaPathChanged(Pad pad, ListChangeListener.Change<? extends MediaPath> value) {
 	}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java
index 127c8e007dd6e0f1251717e23ff16aabefcab795..ee4a738906f97998cc149e0d907de82c167fd44e 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java
@@ -115,8 +115,11 @@ public class Trigger {
 					break;
 				case EOF:
 					if (item.getDurationFromPoint() == Duration.ZERO) {
-						if (pad.isEof()) {
+						if (pad.isEof() && item.getPerformedAt() == null) {
+							item.setPerformedAt(currentDuration);
 							item.performAction(pad, project, mainViewController, currentProfile);
+						} else {
+							item.setPerformedAt(null);
 						}
 					} else {
 						handleEndPoint(pad, currentDuration, project, mainViewController, currentProfile, item);
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 03cacb671ab3a9c091bc8acbfce194b9ea826e2b..5561cb969e7e61fd3182e04268d8ffaf21632bd4 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
@@ -80,7 +80,7 @@ public class EqualizerPluginImpl implements PlayPadPluginStub, PluginArtifact, M
 	}
 
 	@Override
-	public void onStatusChange(Pad pad, PadStatus newValue) {
+	public void onStatusChange(Pad pad, PadStatus oldValue, PadStatus newValue) {
 		if (newValue == PadStatus.PLAY) {
 			onPlay(pad);
 		} else if (newValue == PadStatus.STOP) {
diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java
index 7548965da7c09447db3a47ca2a58de225bc7cd79..b8c29217b59ced49d503313a016b91992f461e67 100644
--- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java
+++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java
@@ -19,7 +19,7 @@ public class PadPlayLogListener implements PadListener {
 	}
 
 	@Override
-	public void onStatusChange(Pad pad, PadStatus newValue) {
+	public void onStatusChange(Pad pad, PadStatus oldValue, PadStatus newValue) {
 		if (newValue == PadStatus.PLAY) {
 			LogSeason instance = LogSeasons.getCurrentSession();
 			if (instance != null) {
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadApiListener.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadApiListener.scala
index efa8bfea00c6b5b123ea93200c9f9e41acac4c30..2efd7e127694e81ae1d90b06e742dd292bba8d26 100644
--- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadApiListener.scala
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadApiListener.scala
@@ -17,7 +17,7 @@ class PadApiListener extends PadListener {
 		WebSocketHandler.instance.sendUpdate("pad-name-changed", payload)
 	}
 
-	override def onStatusChange(pad: Pad, newValue: PadStatus): Unit = {
+	override def onStatusChange(pad: Pad, oldValue: PadStatus, newValue: PadStatus): Unit = {
 		val payload = new JsonObject
 
 		payload.addProperty("pad", pad.getUuid.toString)