diff --git a/PlayWall/src/main/resources/lang/_de.properties b/PlayWall/src/main/resources/lang/_de.properties
index 33029a528b99644493e53bcd9b83e304ae7fd03d..9a34ee6fd50a2f8b0744d85818267e6cd852b17b 100755
--- a/PlayWall/src/main/resources/lang/_de.properties
+++ b/PlayWall/src/main/resources/lang/_de.properties
@@ -214,7 +214,6 @@ Trigger.Volume.Name=Lautst\u00E4rke
 TriggerPoint.START=Start
 TriggerPoint.STOP=Stop
 TriggerPoint.EOF=Ende
-TriggerPoint.EOF_STATE=Ende (EoF)
 
 # Drag and Drop Mode
 DnDMode.Replace=Ersetzen
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java
index 94459f05e67e68795cc885c73be904a798fced97..5f28296ac7c24a72a9ae24fc40c1305b6eb4e3df 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java
@@ -21,17 +21,17 @@ public class PadTriggerStatusListener implements ChangeListener<PadStatus> {
 	}
 
 	@Override
-	public void changed(ObservableValue<? extends PadStatus> observable, PadStatus oldValue, PadStatus newValue) {
+	public void changed(ObservableValue<? extends PadStatus> observable, PadStatus oldState, PadStatus newValue) {
 		if (!pad.isIgnoreTrigger()) {
 			PadSettings padSettings = pad.getPadSettings();
 
 			// Execute Trigger
 			if (newValue == PadStatus.PLAY) {
 				executeTrigger(padSettings.getTriggers().get(TriggerPoint.START));
-			} else if (newValue == PadStatus.STOP) {
+			} else if (newValue == PadStatus.STOP && !pad.isEof()) {
 				executeTrigger(padSettings.getTriggers().get(TriggerPoint.STOP));
-			} else if (oldValue == PadStatus.PLAY && newValue == PadStatus.READY && pad.isEof()) {
-				executeTrigger(padSettings.getTriggers().get(TriggerPoint.EOF_STATE));
+			} else if (oldState == PadStatus.STOP && newValue == PadStatus.READY && pad.isEof()){
+				executeTrigger(padSettings.getTriggers().get(TriggerPoint.EOF));
 			}
 		} else {
 			pad.setIgnoreTrigger(false);
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 ba284a16cccbe20166ac9c86c41fbb9a822dc5e5..f0516d5a7963b65c5b6f4009e81cba641f7e9dcd 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java
@@ -109,25 +109,17 @@ public class Trigger {
 			if (triggerPoint == TriggerPoint.START) {
 				handleStartPoint(pad, currentDuration, project, mainViewController, currentProfile, item);
 			} else if (triggerPoint == TriggerPoint.STOP) {
-				handleEndPoint(pad, currentDuration, project, mainViewController, currentProfile, item);
-			} else if (triggerPoint == TriggerPoint.EOF) {
-				handleEndPoint(pad, currentDuration, project, mainViewController, currentProfile, item);
-			} else if (triggerPoint == TriggerPoint.EOF_STATE) {
 				item.performAction(pad, project, mainViewController, currentProfile);
+			} else if (triggerPoint == TriggerPoint.EOF) {
+				if (item.getDurationFromPoint() == Duration.ZERO && pad.isEof()) {
+					item.performAction(pad, project, mainViewController, currentProfile);
+				} else {
+					handleEndPoint(pad, currentDuration, project, mainViewController, currentProfile, item);
+				}
 			}
 		}
 	}
 
-	private void handleEndPoint(Pad pad, Duration duration, Project project, IMainViewController mainViewController, Profile currentProfile, TriggerItem item) {
-		// Wenn Trigger noch nicht gespielt wurde (null) und Zeit größer ist als gesetzte Zeit (oder 0)
-		if (item.getPerformedAt() == null && (item.getDurationFromPoint().greaterThan(duration) || duration.equals(Duration.ZERO))) {
-			item.performAction(pad, project, mainViewController, currentProfile);
-			item.setPerformedAt(duration);
-		} else if (item.getDurationFromPoint().lessThan(duration)) {
-			item.setPerformedAt(null);
-		}
-	}
-
 	private void handleStartPoint(Pad pad, Duration duration, Project project, IMainViewController mainViewController, Profile currentProfile, TriggerItem item) {
 		if (pad.getStatus() == PadStatus.PLAY) {
 			// Mitten drin, wenn die Zeit die gespielt wurde größer ist als die gesetzte und noch der Trigger noch nicht ausgeführt
@@ -142,4 +134,14 @@ public class Trigger {
 			}
 		}
 	}
+
+	private void handleEndPoint(Pad pad, Duration duration, Project project, IMainViewController mainViewController, Profile currentProfile, TriggerItem item) {
+		// Wenn Trigger noch nicht gespielt wurde (null) und Zeit größer ist als gesetzte Zeit (oder 0)
+		if (item.getPerformedAt() == null && (item.getDurationFromPoint().greaterThan(duration) || duration.equals(Duration.ZERO))) {
+			item.performAction(pad, project, mainViewController, currentProfile);
+			item.setPerformedAt(duration);
+		} else if (item.getDurationFromPoint().lessThan(duration)) {
+			item.setPerformedAt(null);
+		}
+	}
 }
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java
index 4f1390d9e6ebda63f92fe7647d00ae0fe759df2c..ce08ec84067ac2b3cb2a89b44f7c17335558eba2 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java
@@ -4,8 +4,7 @@ public enum TriggerPoint {
 
 	START(true),
 	STOP(false),
-	EOF(true),
-	EOF_STATE(false);
+	EOF(true);
 
 	/**
 	 * Defines if a trigger can be run after, before a certain event.