diff --git a/PlayWallCore/src/de/tobias/playpad/pad/Pad.java b/PlayWallCore/src/de/tobias/playpad/pad/Pad.java
index fc37a84959f38c155a973d0c0ba2d9ddaa9f77c5..ae4adf2d2df16e8188455b46ec81dc8f01df1aa1 100644
--- a/PlayWallCore/src/de/tobias/playpad/pad/Pad.java
+++ b/PlayWallCore/src/de/tobias/playpad/pad/Pad.java
@@ -3,14 +3,10 @@ package de.tobias.playpad.pad;
 import java.nio.file.Path;
 import java.util.HashMap;
 
-import org.dom4j.Element;
-
 import de.tobias.playpad.layout.CartLayout;
 import de.tobias.playpad.layout.LayoutRegistry;
 import de.tobias.playpad.pad.conntent.PadContent;
-import de.tobias.playpad.pad.conntent.PadContentRegistry;
 import de.tobias.playpad.pad.conntent.Pauseable;
-import de.tobias.playpad.pad.conntent.UnkownPadContentException;
 import de.tobias.playpad.pad.triggerlistener.PadTriggerContentListener;
 import de.tobias.playpad.pad.triggerlistener.PadTriggerDurationListener;
 import de.tobias.playpad.pad.triggerlistener.PadTriggerStatusListener;
@@ -21,7 +17,6 @@ import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.Warning;
 import de.tobias.playpad.tigger.Trigger;
 import de.tobias.playpad.tigger.TriggerPoint;
-import de.tobias.utils.settings.UserDefaults;
 import javafx.beans.binding.BooleanBinding;
 import javafx.beans.property.BooleanProperty;
 import javafx.beans.property.DoubleProperty;
@@ -75,9 +70,8 @@ public class Pad {
 	private transient IPadViewController controller;
 	private transient Project project;
 
-	public Pad(Project project, Element element) {
+	public Pad(Project project) {
 		this.project = project;
-		load(element);
 
 		initPadListener();
 		// Update Trigger ist nicht notwendig, da es in load(Element) ausgerufen wird
@@ -375,7 +369,7 @@ public class Pad {
 		this.ignoreTrigger = ignoreTrigger;
 	}
 
-	private void updateTrigger() {
+	void updateTrigger() {
 		for (TriggerPoint point : TriggerPoint.values()) {
 			if (!triggers.containsKey(point)) {
 				Trigger trigger = new Trigger(point);
@@ -420,163 +414,6 @@ public class Pad {
 		}
 	}
 
-	// Storage
-	private static final String INDEX_ATTR = "index";
-	private static final String NAME_ATTR = "name";
-	private static final String STATUS_ATTR = "status";
-
-	private static final String SETTINGS_ELEMENT = "Settings";
-	private static final String VOLUME_ELEMENT = "Volume";
-	private static final String LOOP_ELEMENT = "Loop";
-	private static final String TIMEMODE_ELEMENT = "TimeMode";
-	private static final String FADE_ELEMENT = "Fade";
-	private static final String WARNING_ELEMENT = "Warning";
-
-	private static final String LAYOUTS_ELEMENT = "Layouts";
-	private static final String LAYOUT_ACTIVE_ATTR = "active";
-	private static final String LAYOUT_TYPE_ATTR = "type";
-	private static final String LAYOUT_ELEMENT = "Layout";
-
-	private static final String CUSTOM_SETTINGS_ITEM_ELEMENT = "Item";
-	private static final String CUSTOM_SETTINGS_TYPE_ATTR = "key";
-	private static final String CUSTOM_SETTINGS_ELEMENT = "CustomSettings";
-
-	public static final String CONTENT_ELEMENT = "Content";
-	private static final String CONTENT_TYPE_ATTR = "type";
-
-	public void load(Element element) {
-		indexProperty.set(Integer.valueOf(element.attributeValue(INDEX_ATTR)));
-		nameProperty.set(element.attributeValue(NAME_ATTR));
-		PadStatus status = PadStatus.valueOf(element.attributeValue(STATUS_ATTR));
-		if (status == PadStatus.EMPTY || status == PadStatus.READY)
-			statusProperty.set(status);
-
-		// Settings
-		Element settingsElement = element.element(SETTINGS_ELEMENT);
-		if (settingsElement.element(VOLUME_ELEMENT) != null)
-			volumeProperty.set(Double.valueOf(settingsElement.element(VOLUME_ELEMENT).getStringValue()));
-		if (settingsElement.element(LOOP_ELEMENT) != null)
-			loopProperty.set(Boolean.valueOf(settingsElement.element(LOOP_ELEMENT).getStringValue()));
-		if (settingsElement.element(TIMEMODE_ELEMENT) != null)
-			timeModeProperty.set(TimeMode.valueOf(settingsElement.element(TIMEMODE_ELEMENT).getStringValue()));
-		if (settingsElement.element(FADE_ELEMENT) != null)
-			fadeProperty.set(Fade.load(settingsElement.element(FADE_ELEMENT)));
-		if (settingsElement.element(WARNING_ELEMENT) != null)
-			warningProperty.set(Warning.load(settingsElement.element(WARNING_ELEMENT)));
-
-		// Laoyut
-		Element layoutsElement = settingsElement.element(LAYOUTS_ELEMENT);
-		if (layoutsElement != null) {
-			if (layoutsElement.attributeValue(LAYOUT_ACTIVE_ATTR) != null) {
-				customLayoutProperty.set(Boolean.valueOf(layoutsElement.attributeValue(LAYOUT_ACTIVE_ATTR)));
-			}
-
-			for (Object layoutObj : layoutsElement.elements(LAYOUT_ELEMENT)) {
-				if (layoutObj instanceof Element) {
-					Element layoutElement = (Element) layoutObj;
-					String type = layoutElement.attributeValue(LAYOUT_TYPE_ATTR);
-					CartLayout layout = LayoutRegistry.getLayout(type).newCartLayout();
-					layout.load(layoutElement);
-
-					layouts.put(type, layout);
-				}
-			}
-		}
-
-		Element userInfoElement = settingsElement.element(CUSTOM_SETTINGS_ELEMENT);
-		if (userInfoElement != null) {
-			for (Object object : userInfoElement.elements()) {
-				if (object instanceof Element) {
-					Element item = (Element) object;
-					String key = item.attributeValue(CUSTOM_SETTINGS_TYPE_ATTR);
-					Object data = UserDefaults.loadElement(item);
-					customSettings.put(key, data);
-				}
-			}
-		}
-
-		// Trigger
-		Element triggersElement = element.element("Triggers");			// TODO Externalize
-		if (triggersElement != null) {
-			for (Object triggerObj : triggersElement.elements("Trigger")) {
-				if (triggerObj instanceof Element) {
-					Element triggerElement = (Element) triggerObj;
-					Trigger trigger = new Trigger();
-					trigger.load(triggerElement);
-					triggers.put(trigger.getTriggerPoint(), trigger);
-				}
-			}
-		}
-		updateTrigger(); // Damit alle Points da sind
-
-		// Content
-		Element contentElement = element.element(CONTENT_ELEMENT);
-		if (contentElement != null) {
-			String contentType = contentElement.attributeValue(CONTENT_TYPE_ATTR);
-			try {
-				PadContent content = PadContentRegistry.getPadContentConnect(contentType).newInstance(this);
-				content.load(contentElement);
-				setContent(content);
-			} catch (UnkownPadContentException e) {
-				e.printStackTrace();
-				throwException(null, e);
-			}
-		}
-	}
-
-	public void save(Element element) {
-		element.addAttribute(INDEX_ATTR, String.valueOf(indexProperty.get()));
-		element.addAttribute(NAME_ATTR, nameProperty.get());
-		if (statusProperty.get() == PadStatus.EMPTY || statusProperty.get() == PadStatus.ERROR) {
-			element.addAttribute(STATUS_ATTR, PadStatus.EMPTY.name());
-		} else {
-			element.addAttribute(STATUS_ATTR, PadStatus.READY.name());
-		}
-
-		// Settings
-		Element settingsElement = element.addElement(SETTINGS_ELEMENT);
-		settingsElement.addElement(VOLUME_ELEMENT).addText(String.valueOf(volumeProperty.get()));
-		settingsElement.addElement(LOOP_ELEMENT).addText(String.valueOf(loopProperty.get()));
-		if (timeModeProperty.isNotNull().get())
-			settingsElement.addElement(TIMEMODE_ELEMENT).addText(String.valueOf(timeModeProperty.get()));
-		if (warningProperty.isNotNull().get())
-			warningProperty.get().save(settingsElement.addElement(WARNING_ELEMENT));
-		if (fadeProperty.isNotNull().get())
-			fadeProperty.get().save(settingsElement.addElement(FADE_ELEMENT));
-
-		// Layout
-		Element layoutsElement = settingsElement.addElement(LAYOUTS_ELEMENT);
-		layoutsElement.addAttribute(LAYOUT_ACTIVE_ATTR, String.valueOf(customLayoutProperty.get()));
-		for (String layoutType : layouts.keySet()) {
-			Element layoutElement = layoutsElement.addElement(LAYOUT_ELEMENT);
-			layoutElement.addAttribute(LAYOUT_TYPE_ATTR, layoutType);
-
-			CartLayout cartLayout = layouts.get(layoutType);
-			cartLayout.save(layoutElement);
-		}
-
-		Element userInfoElement = settingsElement.addElement(CUSTOM_SETTINGS_ELEMENT);
-		for (String key : customSettings.keySet()) {
-			Element itemElement = userInfoElement.addElement(CUSTOM_SETTINGS_ITEM_ELEMENT);
-			UserDefaults.save(itemElement, customSettings.get(key), key);
-		}
-
-		// Trigger
-		Element triggersElement = element.addElement("Triggers");
-		for (TriggerPoint point : triggers.keySet()) {
-			Trigger trigger = triggers.get(point);
-			Element triggerElement = triggersElement.addElement("Trigger");
-			trigger.save(triggerElement);
-		}
-
-		// Content
-		if (contentProperty.get() != null) {
-			Element contentElement = element.addElement(CONTENT_ELEMENT);
-			contentElement.addAttribute(CONTENT_TYPE_ATTR, contentProperty.get().getType());
-			contentProperty.get().save(contentElement);
-		}
-	}
-
 	@Override
 	public String toString() {
 		return "Pad: " + indexProperty.get() + " - " + nameProperty.get();
@@ -598,4 +435,8 @@ public class Pad {
 	public DoubleProperty customVolumeProperty() {
 		return customVolumeProperty;
 	}
+
+	HashMap<String, CartLayout> getLayouts() {
+		return layouts;
+	}
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/pad/PadSerializer.java b/PlayWallCore/src/de/tobias/playpad/pad/PadSerializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..298456087dcecb18d89aa53c655a4472979a247d
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/pad/PadSerializer.java
@@ -0,0 +1,191 @@
+package de.tobias.playpad.pad;
+
+import org.dom4j.Element;
+
+import de.tobias.playpad.layout.CartLayout;
+import de.tobias.playpad.layout.LayoutRegistry;
+import de.tobias.playpad.pad.conntent.PadContent;
+import de.tobias.playpad.pad.conntent.PadContentRegistry;
+import de.tobias.playpad.pad.conntent.UnkownPadContentException;
+import de.tobias.playpad.project.Project;
+import de.tobias.playpad.settings.Fade;
+import de.tobias.playpad.settings.Warning;
+import de.tobias.playpad.tigger.Trigger;
+import de.tobias.playpad.tigger.TriggerPoint;
+import de.tobias.playpad.xml.XMLDeserializer;
+import de.tobias.playpad.xml.XMLSerializer;
+import de.tobias.utils.settings.UserDefaults;
+
+public class PadSerializer implements XMLSerializer<Pad>, XMLDeserializer<Pad> {
+
+	private static final String INDEX_ATTR = "index";
+	private static final String NAME_ATTR = "name";
+	private static final String STATUS_ATTR = "status";
+
+	private static final String SETTINGS_ELEMENT = "Settings";
+	private static final String VOLUME_ELEMENT = "Volume";
+	private static final String LOOP_ELEMENT = "Loop";
+	private static final String TIMEMODE_ELEMENT = "TimeMode";
+	private static final String FADE_ELEMENT = "Fade";
+	private static final String WARNING_ELEMENT = "Warning";
+
+	private static final String LAYOUTS_ELEMENT = "Layouts";
+	private static final String LAYOUT_ACTIVE_ATTR = "active";
+	private static final String LAYOUT_TYPE_ATTR = "type";
+	private static final String LAYOUT_ELEMENT = "Layout";
+
+	private static final String CUSTOM_SETTINGS_ITEM_ELEMENT = "Item";
+	private static final String CUSTOM_SETTINGS_TYPE_ATTR = "key";
+	private static final String CUSTOM_SETTINGS_ELEMENT = "CustomSettings";
+
+	public static final String CONTENT_ELEMENT = "Content";
+	private static final String CONTENT_TYPE_ATTR = "type";
+
+	// TODO Remove project var
+	private Project project;
+
+	public PadSerializer(Project project) {
+		this.project = project;
+	}
+
+	public PadSerializer() {}
+
+	@Override
+	public Pad loadElement(Element element) {
+		Pad pad = new Pad(project);
+
+		pad.setIndex(Integer.valueOf(element.attributeValue(INDEX_ATTR)));
+		pad.setName(element.attributeValue(NAME_ATTR));
+		PadStatus status = PadStatus.valueOf(element.attributeValue(STATUS_ATTR));
+		if (status == PadStatus.EMPTY || status == PadStatus.READY)
+			pad.setStatus(status);
+
+		// Settings
+		Element settingsElement = element.element(SETTINGS_ELEMENT);
+		if (settingsElement.element(VOLUME_ELEMENT) != null)
+			pad.setVolume(Double.valueOf(settingsElement.element(VOLUME_ELEMENT).getStringValue()));
+		if (settingsElement.element(LOOP_ELEMENT) != null)
+			pad.setLoop(Boolean.valueOf(settingsElement.element(LOOP_ELEMENT).getStringValue()));
+		if (settingsElement.element(TIMEMODE_ELEMENT) != null)
+			pad.setTimeMode(TimeMode.valueOf(settingsElement.element(TIMEMODE_ELEMENT).getStringValue()));
+		if (settingsElement.element(FADE_ELEMENT) != null)
+			pad.setFade(Fade.load(settingsElement.element(FADE_ELEMENT)));
+		if (settingsElement.element(WARNING_ELEMENT) != null)
+			pad.setWarning(Warning.load(settingsElement.element(WARNING_ELEMENT)));
+
+		// Laoyut
+		Element layoutsElement = settingsElement.element(LAYOUTS_ELEMENT);
+		if (layoutsElement != null) {
+			if (layoutsElement.attributeValue(LAYOUT_ACTIVE_ATTR) != null) {
+				pad.setCustomLayout(Boolean.valueOf(layoutsElement.attributeValue(LAYOUT_ACTIVE_ATTR)));
+			}
+
+			for (Object layoutObj : layoutsElement.elements(LAYOUT_ELEMENT)) {
+				if (layoutObj instanceof Element) {
+					Element layoutElement = (Element) layoutObj;
+					String type = layoutElement.attributeValue(LAYOUT_TYPE_ATTR);
+					CartLayout layout = LayoutRegistry.getLayout(type).newCartLayout();
+					layout.load(layoutElement);
+
+					pad.setLayout(layout, type);
+				}
+			}
+		}
+
+		Element userInfoElement = settingsElement.element(CUSTOM_SETTINGS_ELEMENT);
+		if (userInfoElement != null) {
+			for (Object object : userInfoElement.elements()) {
+				if (object instanceof Element) {
+					Element item = (Element) object;
+					String key = item.attributeValue(CUSTOM_SETTINGS_TYPE_ATTR);
+					Object data = UserDefaults.loadElement(item);
+					pad.getCustomSettings().put(key, data);
+				}
+			}
+		}
+
+		// Trigger
+		Element triggersElement = element.element("Triggers"); // TODO Externalize
+		if (triggersElement != null) {
+			for (Object triggerObj : triggersElement.elements("Trigger")) {
+				if (triggerObj instanceof Element) {
+					Element triggerElement = (Element) triggerObj;
+					Trigger trigger = new Trigger();
+					trigger.load(triggerElement);
+					pad.getTriggers().put(trigger.getTriggerPoint(), trigger);
+				}
+			}
+		}
+		pad.updateTrigger(); // Damit alle Points da sind
+
+		// Content
+		Element contentElement = element.element(CONTENT_ELEMENT);
+		if (contentElement != null) {
+			String contentType = contentElement.attributeValue(CONTENT_TYPE_ATTR);
+			try {
+				PadContent content = PadContentRegistry.getPadContentConnect(contentType).newInstance(pad);
+				content.load(contentElement);
+				pad.setContent(content);
+			} catch (UnkownPadContentException e) {
+				e.printStackTrace();
+				pad.throwException(null, e);
+			}
+		}
+
+		return pad;
+	}
+
+	@Override
+	public void saveElement(Element element, Pad data) {
+		element.addAttribute(INDEX_ATTR, String.valueOf(data.getIndex()));
+		element.addAttribute(NAME_ATTR, data.getName());
+		if (data.getStatus() == PadStatus.EMPTY || data.getStatus() == PadStatus.ERROR) {
+			element.addAttribute(STATUS_ATTR, PadStatus.EMPTY.name());
+		} else {
+			element.addAttribute(STATUS_ATTR, PadStatus.READY.name());
+		}
+
+		// Settings
+		Element settingsElement = element.addElement(SETTINGS_ELEMENT);
+		settingsElement.addElement(VOLUME_ELEMENT).addText(String.valueOf(data.getVolume()));
+		settingsElement.addElement(LOOP_ELEMENT).addText(String.valueOf(data.isLoop()));
+		if (data.getTimeMode() != null)
+			settingsElement.addElement(TIMEMODE_ELEMENT).addText(String.valueOf(data.getTimeMode()));
+		if (data.isCustomWarning() != false)
+			data.getWarning().save(settingsElement.addElement(WARNING_ELEMENT));
+		if (data.getFade() != null)
+			data.getFade().save(settingsElement.addElement(FADE_ELEMENT));
+
+		// Layout
+		Element layoutsElement = settingsElement.addElement(LAYOUTS_ELEMENT);
+		layoutsElement.addAttribute(LAYOUT_ACTIVE_ATTR, String.valueOf(data.isCustomLayout()));
+		for (String layoutType : data.getLayouts().keySet()) {
+			Element layoutElement = layoutsElement.addElement(LAYOUT_ELEMENT);
+			layoutElement.addAttribute(LAYOUT_TYPE_ATTR, layoutType);
+
+			CartLayout cartLayout = data.getLayouts().get(layoutType);
+			cartLayout.save(layoutElement);
+		}
+
+		Element userInfoElement = settingsElement.addElement(CUSTOM_SETTINGS_ELEMENT);
+		for (String key : data.getCustomSettings().keySet()) {
+			Element itemElement = userInfoElement.addElement(CUSTOM_SETTINGS_ITEM_ELEMENT);
+			UserDefaults.save(itemElement, data.getCustomSettings().get(key), key);
+		}
+
+		// Trigger
+		Element triggersElement = element.addElement("Triggers");
+		for (TriggerPoint point : data.getTriggers().keySet()) {
+			Trigger trigger = data.getTriggers().get(point);
+			Element triggerElement = triggersElement.addElement("Trigger");
+			trigger.save(triggerElement);
+		}
+
+		// Content
+		if (data.getContent() != null) {
+			Element contentElement = element.addElement(CONTENT_ELEMENT);
+			contentElement.addAttribute(CONTENT_TYPE_ATTR, data.getContent().getType());
+			data.getContent().save(contentElement);
+		}
+	}
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/project/Project.java b/PlayWallCore/src/de/tobias/playpad/project/Project.java
index 39beedc9b363f351d99cd22a6d1f0acdca38f2ea..f166c6d300916a1308b6a757d67879d4f6284d77 100644
--- a/PlayWallCore/src/de/tobias/playpad/project/Project.java
+++ b/PlayWallCore/src/de/tobias/playpad/project/Project.java
@@ -5,20 +5,20 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.SAXReader;
-import org.dom4j.io.XMLWriter;
 
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadException;
+import de.tobias.playpad.pad.PadSerializer;
 import de.tobias.playpad.pad.PadStatus;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileNotFoundException;
+import de.tobias.playpad.xml.XMLHandler;
 import javafx.application.Platform;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
@@ -133,25 +133,13 @@ public class Project {
 
 			Project project = new Project(ref);
 
-			SAXReader reader = new SAXReader();
-			Document document = reader.read(Files.newInputStream(projectPath));
-			
-			Element rootElement = document.getRootElement();
+			XMLHandler<Pad> handler = new XMLHandler<>(projectPath);
+			List<Pad> pads = handler.loadElements(PAD_ELEMENT, new PadSerializer(project));
 
-			for (Object padObj : rootElement.elements(PAD_ELEMENT)) {
-				if (padObj instanceof Element) {
-					Element padElement = (Element) padObj;
-
-					// Load Pad Settings
-					Pad pad = new Pad(project, padElement);
-
-					// Load Media
-					if (loadMedia) {
-						pad.loadContent();
-					}
-
-					project.pads.put(pad.getIndex(), pad);
-				}
+			for (Pad pad : pads) {
+				if (loadMedia)
+					pad.loadContent();
+				project.pads.put(pad.getIndex(), pad);
 			}
 
 			return project;
@@ -165,21 +153,15 @@ public class Project {
 		Document document = DocumentHelper.createDocument();
 
 		Element rootElement = document.addElement(ROOT_ELEMENT);
-		for (int index : pads.keySet()) {
-			Pad pad = pads.get(index);
 
-			Element padElement = rootElement.addElement(PAD_ELEMENT);
-			pad.save(padElement);
-		}
+		XMLHandler<Pad> handler = new XMLHandler<>(rootElement);
+		handler.saveElements(PAD_ELEMENT, pads.values(), new PadSerializer());
 
 		if (Files.notExists(projectPath)) {
 			Files.createDirectories(projectPath.getParent());
 			Files.createFile(projectPath);
 		}
-
-		XMLWriter writer = new XMLWriter(Files.newOutputStream(projectPath), OutputFormat.createPrettyPrint());
-		writer.write(document);
-		writer.close();
+		XMLHandler.save(projectPath, document);
 	}
 
 	public HashMap<Integer, Pad> getPads() {
diff --git a/PlayWallCore/src/de/tobias/playpad/project/ProjectExporter.java b/PlayWallCore/src/de/tobias/playpad/project/ProjectExporter.java
index 01267080ca680f5b267373814cb8bf08cf02ebbf..756c508a2f5e922ea8609f02905b295ce50d2456 100644
--- a/PlayWallCore/src/de/tobias/playpad/project/ProjectExporter.java
+++ b/PlayWallCore/src/de/tobias/playpad/project/ProjectExporter.java
@@ -15,6 +15,7 @@ import org.dom4j.io.SAXReader;
 import org.dom4j.io.XMLWriter;
 
 import de.tobias.playpad.pad.Pad;
+import de.tobias.playpad.pad.PadSerializer;
 import de.tobias.playpad.settings.ProfileReference;
 import de.tobias.utils.application.App;
 import de.tobias.utils.application.ApplicationUtils;
@@ -115,9 +116,11 @@ public class ProjectExporter {
 			if (padObj instanceof Element) {
 				Element padElement = (Element) padObj;
 
-				Pad pad = new Pad(null, padElement); // Null für Project, da das pad nicht weiter verwendet wird
+				PadSerializer serializer = new PadSerializer();
+				Pad pad = serializer.loadElement(padElement);
+
 				if (pad.getContent() != null) {
-					pad.getContent().exportMedia(zip, padElement.element(Pad.CONTENT_ELEMENT));
+					pad.getContent().exportMedia(zip, padElement.element(PadSerializer.CONTENT_ELEMENT));
 				}
 			}
 
diff --git a/PlayWallCore/src/de/tobias/playpad/project/ProjectImporter.java b/PlayWallCore/src/de/tobias/playpad/project/ProjectImporter.java
index d7c075fcec6fbde1c463e28b655b5c03f975a8f9..57ebef70dc69976a9c3c1c20afd0c11549659e30 100644
--- a/PlayWallCore/src/de/tobias/playpad/project/ProjectImporter.java
+++ b/PlayWallCore/src/de/tobias/playpad/project/ProjectImporter.java
@@ -15,6 +15,7 @@ import org.dom4j.io.SAXReader;
 import org.dom4j.io.XMLWriter;
 
 import de.tobias.playpad.pad.Pad;
+import de.tobias.playpad.pad.PadSerializer;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileReference;
 import de.tobias.utils.application.App;
@@ -161,9 +162,11 @@ public class ProjectImporter {
 			if (padObj instanceof Element) {
 				Element padElement = (Element) padObj;
 
-				Pad pad = new Pad(null, padElement); // Null für Project, da das pad nicht weiter verwendet wird
+				PadSerializer serializer = new PadSerializer();
+				Pad pad = serializer.loadElement(padElement);
+
 				if (pad.getContent() != null) {
-					pad.getContent().importMedia(destination, zip, padElement.element(Pad.CONTENT_ELEMENT));
+					pad.getContent().importMedia(destination, zip, padElement.element(PadSerializer.CONTENT_ELEMENT));
 				}
 			}
 		}