diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
index 67dfcc1425177a017202d444277022733bc6e987..86b126b0ab85bd7df370c4bbc36de56112877d8f 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
@@ -5,10 +5,11 @@ import de.tobias.playpad.layout.desktop.DesktopEditMode;
 import de.tobias.playpad.layout.desktop.DesktopMainLayoutFactory;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadStatus;
-import de.tobias.playpad.pad.content.PadContentFactory;
 import de.tobias.playpad.pad.content.PadContentRegistry;
 import de.tobias.playpad.pad.content.Playlistable;
+import de.tobias.playpad.pad.drag.ContentDragOption;
 import de.tobias.playpad.pad.drag.PadDragMode;
+import de.tobias.playpad.pad.drag.PlaylistDragOption;
 import de.tobias.playpad.pad.view.IPadView;
 import de.tobias.playpad.profile.Profile;
 import de.tobias.playpad.project.Project;
@@ -27,8 +28,9 @@ import javafx.scene.layout.Pane;
 import javafx.scene.paint.Color;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Set;
+import java.util.List;
 
 public class DesktopPadDragListener implements EventHandler<DragEvent> {
 
@@ -36,7 +38,7 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 	private static final DataFormat dataFormat = new DataFormat(PAD_INDEX_DATATYPE);
 
 	private final Pad currentPad;
-	private final Pane padView; // Node der PadView
+	private final Pane padViewNode; // Node der PadView
 
 	private final DesktopMainLayoutFactory connect;
 
@@ -47,21 +49,21 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 		this.currentPad = currentPad;
 		this.connect = connect;
 
-		this.padView = view.getRootNode();
+		this.padViewNode = view.getRootNode();
 	}
 
 	public void addListener() {
-		this.padView.setOnDragOver(this::dragOver);
-		this.padView.setOnDragExited(event -> dragExited());
-		this.padView.setOnDragDropped(this::dragDropped);
-		this.padView.setOnDragDetected(this::dragDetected);
+		this.padViewNode.setOnDragOver(this::dragOver);
+		this.padViewNode.setOnDragExited(event -> dragExited());
+		this.padViewNode.setOnDragDropped(this::dragDropped);
+		this.padViewNode.setOnDragDetected(this::dragDetected);
 	}
 
 	void removeListener() {
-		this.padView.setOnDragOver(null);
-		this.padView.setOnDragExited(null);
-		this.padView.setOnDragDropped(null);
-		this.padView.setOnDragDetected(null);
+		this.padViewNode.setOnDragOver(null);
+		this.padViewNode.setOnDragExited(null);
+		this.padViewNode.setOnDragDropped(null);
+		this.padViewNode.setOnDragDetected(null);
 	}
 
 	@Override
@@ -94,11 +96,15 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 
 			// built-in file support
 			PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents();
-			Set<PadContentFactory> connects = registry.getPadContentConnectsForFile(file.toPath());
+			List<ContentDragOption> connects = new ArrayList<>(registry.getPadContentConnectsForFile(file.toPath()));
+
+			if (currentPad.getContent() instanceof Playlistable) {
+				connects.add(new PlaylistDragOption());
+			}
 
 			if (!connects.isEmpty()) {
 				if (fileHud == null) {
-					fileHud = new FileDragOptionView(padView);
+					fileHud = new FileDragOptionView(padViewNode);
 				}
 				fileHud.showOptions(connects);
 
@@ -115,7 +121,7 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 
 			if (!connects.isEmpty()) {
 				if (padHud == null) {
-					padHud = new PadDragOptionView(padView);
+					padHud = new PadDragOptionView(padViewNode);
 				}
 				padHud.showDropOptions(connects);
 
@@ -142,52 +148,43 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 
 		// File Handling
 		if (dragboard.hasFiles()) {
-			handleFileDragDropped(dragboard);
+			success = handleFileDragDropped(dragboard);
 		}
 
 		// Pad DnD
 		if (dragboard.hasContent(dataFormat)) {
-			success = handlePadDragDropped(project, dragboard, success);
+			success = handlePadDragDropped(project, dragboard);
 		}
 		// Event Completion
 		event.setDropCompleted(success);
 		event.consume();
 	}
 
-	private void handleFileDragDropped(Dragboard dragboard) {
-		File file = dragboard.getFiles().get(0);
-
-		final PadContentFactory connect = fileHud.getSelectedConnect();
-		if (connect != null) {
+	private boolean handleFileDragDropped(Dragboard dragboard) {
+		final ContentDragOption dragOption = fileHud.getSelectedConnect();
+		if (dragOption != null) {
 			// stop pad if playing
 			if (currentPad.getContent() != null && currentPad.getStatus().equals(PadStatus.PLAY)) {
 				currentPad.getContent().stop();
 				currentPad.stop();
 			}
 
-			if (currentPad.getContent() == null || !currentPad.getContent().getType().equals(connect.getType())) {
-				currentPad.setContentType(connect.getType());
-			}
-
-			if (currentPad.isPadVisible()) {
-				currentPad.getController().getView().showBusyView(true);
-			}
-
-			if (currentPad.getContent() instanceof Playlistable) {
-				this.currentPad.addPath(file.toPath());
-			} else {
-				this.currentPad.setPath(file.toPath());
-			}
+			dragOption.handleDrop(currentPad, dragboard.getFiles());
 
 			if (currentPad.getController() != null) {
 				final IPadView padView = currentPad.getController().getView();
 				padView.setContentView(currentPad);
 				padView.addDefaultElements(currentPad);
 			}
+
+			return true;
 		}
+		return false;
 	}
 
-	private boolean handlePadDragDropped(Project project, Dragboard dragboard, boolean success) {
+	private boolean handlePadDragDropped(Project project, Dragboard dragboard) {
+		boolean success = false;
+
 		Object data = dragboard.getContent(dataFormat);
 		if (data instanceof PadIndex) {
 			PadIndex srcIndex = (PadIndex) data;
@@ -215,12 +212,12 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 				return;
 			}
 
-			Dragboard dragboard = padView.startDragAndDrop(TransferMode.MOVE);
+			Dragboard dragboard = padViewNode.startDragAndDrop(TransferMode.MOVE);
 
 			// Create Snapshot
 			SnapshotParameters parameters = new SnapshotParameters();
 			parameters.setFill(Color.TRANSPARENT);
-			WritableImage snapshot = padView.snapshot(parameters, null);
+			WritableImage snapshot = padViewNode.snapshot(parameters, null);
 			for (int x = 0; x < snapshot.getWidth(); x++) {
 				for (int y = 0; y < snapshot.getHeight(); y++) {
 					Color oldColor = snapshot.getPixelReader().getColor(x, y).darker().darker();
diff --git a/PlayWall/src/main/java/de/tobias/playpad/pad/drag/PlaylistDragOption.java b/PlayWall/src/main/java/de/tobias/playpad/pad/drag/PlaylistDragOption.java
new file mode 100644
index 0000000000000000000000000000000000000000..f1917de12494d27f6a8f40bee657ec233d0b86dd
--- /dev/null
+++ b/PlayWall/src/main/java/de/tobias/playpad/pad/drag/PlaylistDragOption.java
@@ -0,0 +1,38 @@
+package de.tobias.playpad.pad.drag;
+
+import de.thecodelabs.utils.ui.icon.FontAwesomeType;
+import de.thecodelabs.utils.ui.icon.FontIcon;
+import de.thecodelabs.utils.util.Localization;
+import de.tobias.playpad.pad.Pad;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.beans.property.StringProperty;
+import javafx.scene.Node;
+
+import java.io.File;
+import java.util.List;
+
+public class PlaylistDragOption implements ContentDragOption {
+
+	private final StringProperty displayProperty = new SimpleStringProperty(Localization.getString("DndMode.Playlist"));
+
+	@Override
+	public void handleDrop(Pad currentPad, List<File> files) {
+		if (currentPad.isPadVisible()) {
+			currentPad.getController().getView().showBusyView(true);
+		}
+
+		for (File file : files) {
+			currentPad.addPath(file.toPath());
+		}
+	}
+
+	@Override
+	public StringProperty displayProperty() {
+		return displayProperty;
+	}
+
+	@Override
+	public Node getGraphics() {
+		return new FontIcon(FontAwesomeType.PLUS_CIRCLE);
+	}
+}
diff --git a/PlayWall/src/main/java/de/tobias/playpad/view/FileDragOptionView.java b/PlayWall/src/main/java/de/tobias/playpad/view/FileDragOptionView.java
index 56510779c24c25d86b66f9872048e3173576364e..5c615be305f7c64ce3a0ad609ede7a39a25af899 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/view/FileDragOptionView.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/view/FileDragOptionView.java
@@ -1,6 +1,7 @@
 package de.tobias.playpad.view;
 
 import de.tobias.playpad.pad.content.PadContentFactory;
+import de.tobias.playpad.pad.drag.ContentDragOption;
 import javafx.animation.FadeTransition;
 import javafx.animation.ParallelTransition;
 import javafx.animation.ScaleTransition;
@@ -14,7 +15,7 @@ import javafx.scene.layout.*;
 import javafx.scene.paint.Color;
 import javafx.scene.text.TextAlignment;
 
-import java.util.Set;
+import java.util.Collection;
 import java.util.function.Consumer;
 
 public class FileDragOptionView implements PadContentFactory.PadContentTypeChooser {
@@ -76,9 +77,9 @@ public class FileDragOptionView implements PadContentFactory.PadContentTypeChoos
 		return parallelTransition;
 	}
 
-	private PadContentFactory selectedConnect;
+	private ContentDragOption selectedConnect;
 
-	public void showOptions(Set<PadContentFactory> options) {
+	public void showOptions(Collection<? extends ContentDragOption> options) {
 		if (!parent.getChildren().contains(optionPane)) {
 			selectedConnect = null;
 
@@ -125,7 +126,7 @@ public class FileDragOptionView implements PadContentFactory.PadContentTypeChoos
 
 	}
 
-	public void showOptions(Set<PadContentFactory> options, Consumer<PadContentFactory> onFinish) {
+	public void showOptions(Collection<PadContentFactory> options, Consumer<PadContentFactory> onFinish) {
 		showOptions(options);
 
 		for (Node node : optionPane.getChildren()) {
@@ -143,7 +144,7 @@ public class FileDragOptionView implements PadContentFactory.PadContentTypeChoos
 		}
 	}
 
-	public PadContentFactory getSelectedConnect() {
+	public ContentDragOption getSelectedConnect() {
 		return selectedConnect;
 	}
 
diff --git a/PlayWall/src/main/resources/lang/_de.properties b/PlayWall/src/main/resources/lang/_de.properties
index 8dfe844adf363aedb9ab10cb44f41d700e0d1f79..991f98556e44d2739c485e37972b88461cc2736a 100755
--- a/PlayWall/src/main/resources/lang/_de.properties
+++ b/PlayWall/src/main/resources/lang/_de.properties
@@ -217,6 +217,7 @@ TriggerPoint.EOF=Ende (EoF)
 DnDMode.Replace=Ersetzen
 DnDMode.Duplicate=Duplizieren
 DnDMode.Move=Tauschen
+DndMode.Playlist=Hinzuf\u00FCgen
 # Main Layout
 MainLayout.Desktop=Desktopmodus
 MainLayout.Touch=Touchmodus
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
index 945446b6ab10714fe683fc012070fa9de5f3927b..a8f1b91048dc0f0ef9aec9d3a21f2bd655a7f31f 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
@@ -323,6 +323,10 @@ public class Pad {
 			createMediaPath(path);
 		} else {
 			setPath(path, 0);
+
+			while (mediaPaths.size() > 1) {
+				mediaPaths.remove(mediaPaths.size() - 1);
+			}
 		}
 	}
 
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentFactory.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentFactory.java
index e300c5a8b8f5f2c5a2c711bbce42629a541d51ef..71c86385f9fd163beabaa07da6a76c3ffb1cb161 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentFactory.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentFactory.java
@@ -2,20 +2,23 @@ package de.tobias.playpad.pad.content;
 
 import de.thecodelabs.utils.io.PathUtils;
 import de.tobias.playpad.pad.Pad;
+import de.tobias.playpad.pad.drag.ContentDragOption;
 import de.tobias.playpad.pad.view.IPadContentView;
 import de.tobias.playpad.registry.Component;
 import de.tobias.playpad.viewcontroller.PadSettingsTabViewController;
 import de.tobias.playpad.viewcontroller.option.ProfileSettingsTabViewController;
 import javafx.scene.layout.Pane;
 
+import java.io.File;
 import java.nio.file.Path;
-import java.util.Set;
+import java.util.Collection;
+import java.util.List;
 import java.util.function.Consumer;
 
-public abstract class PadContentFactory extends Component implements Comparable<PadContentFactory> {
+public abstract class PadContentFactory extends Component implements ContentDragOption {
 
 	public interface PadContentTypeChooser {
-		void showOptions(Set<PadContentFactory> options, Consumer<PadContentFactory> onSelected);
+		void showOptions(Collection<PadContentFactory> options, Consumer<PadContentFactory> onSelected);
 	}
 
 	public PadContentFactory(String type) {
@@ -36,11 +39,6 @@ public abstract class PadContentFactory extends Component implements Comparable<
 
 	public abstract String[] getSupportedTypes();
 
-	@Override
-	public int compareTo(PadContentFactory o) {
-		return getType().compareTo(o.getType());
-	}
-
 	public static boolean isFileTypeSupported(Path path, PadContentFactory connect) {
 		String extension = PathUtils.getFileExtension(path);
 		for (String ex : connect.getSupportedTypes()) {
@@ -50,4 +48,19 @@ public abstract class PadContentFactory extends Component implements Comparable<
 		}
 		return false;
 	}
+
+	// Generic Drag Option for all content types
+
+	@Override
+	public void handleDrop(Pad currentPad, List<File> files) {
+		if (currentPad.getContent() == null || !currentPad.getContent().getType().equals(getType())) {
+			currentPad.setContentType(getType());
+		}
+
+		if (currentPad.isPadVisible()) {
+			currentPad.getController().getView().showBusyView(true);
+		}
+
+		currentPad.setPath(files.get(0).toPath());
+	}
 }
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/drag/ContentDragOption.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/drag/ContentDragOption.java
new file mode 100644
index 0000000000000000000000000000000000000000..8af2e6d82227376781157fc2f9bd46b9073ce53f
--- /dev/null
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/drag/ContentDragOption.java
@@ -0,0 +1,17 @@
+package de.tobias.playpad.pad.drag;
+
+import de.tobias.playpad.Displayable;
+import de.tobias.playpad.pad.Pad;
+
+import java.io.File;
+import java.util.List;
+
+public interface ContentDragOption extends Displayable, Comparable<ContentDragOption> {
+
+	void handleDrop(Pad currentPad, List<File> files);
+
+	@Override
+	default int compareTo(ContentDragOption o) {
+		return displayProperty().get().compareTo(o.displayProperty().get());
+	}
+}
diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContentFactory.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContentFactory.scala
index 797d1b145e046964f60e9d27ceda67c0fd019d7f..2842c0feb5cd602c273c88192c41c320578e6c33 100644
--- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContentFactory.scala
+++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContentFactory.scala
@@ -1,10 +1,12 @@
 package de.tobias.playpad.plugin.content.pad
 
+import de.thecodelabs.utils.ui.icon.{FontIcon, MaterialDesignIcon}
 import de.tobias.playpad.pad.Pad
 import de.tobias.playpad.pad.content.{PadContent, PadContentFactory}
 import de.tobias.playpad.pad.preview.PadTextPreview
 import de.tobias.playpad.pad.view.IPadContentView
 import de.tobias.playpad.viewcontroller.PadSettingsTabViewController
+import javafx.scene.Node
 import javafx.scene.layout.Pane
 
 class ContentPlayerPadContentFactory(val `type`: String) extends PadContentFactory(`type`) {
@@ -16,6 +18,8 @@ class ContentPlayerPadContentFactory(val `type`: String) extends PadContentFacto
 	override def getSettingsViewController(pad: Pad): PadSettingsTabViewController = new ContentPlayerPadContentSettingsViewController(pad)
 
 	override def getSupportedTypes: Array[String] = ContentPlayerPadContentFactory.FILE_EXTENSION
+
+	override def getGraphics: Node = new FontIcon(MaterialDesignIcon.FONT_FILE, MaterialDesignIcon.MONITOR_MULTIPLE)
 }
 
 object ContentPlayerPadContentFactory {