diff --git a/PlayWall/assets/de/tobias/playpad/assets/dialog/newProfileDialog.fxml b/PlayWall/assets/de/tobias/playpad/assets/dialog/newProfileDialog.fxml
index 4825083a71d4ace4249e86fe5788d1d5321a5423..bdb58adea1840e7ab71b4e3a44c8b946eb79c243 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/dialog/newProfileDialog.fxml
+++ b/PlayWall/assets/de/tobias/playpad/assets/dialog/newProfileDialog.fxml
@@ -32,7 +32,7 @@
                                     </HBox>
                                     <HBox alignment="CENTER_LEFT" spacing="14.0">
                                        <children>
-                                          <Label alignment="CENTER_RIGHT" prefWidth="100.0" text="%settings.midi.label.device" />
+                                          <Label alignment="CENTER_RIGHT" prefWidth="100.0" text="%settings.midi.label.midiDeviceImpl" />
                                           <ComboBox fx:id="midiDeviceComboBox" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS" />
                                        </children>
                                     </HBox>
diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
index 119bd5e46bfcef6e27dda8cd2a5614588dd356ea..43587b86cfd54a3da7381c623befbe127bc3045c 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
+++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
@@ -54,7 +54,7 @@ settings.gen.cache.label.info=Wenn Sie als Audioausgabetyp "Java Audiostream" ge
 settings.mapping.label.mapping=Mapping:
 settings.mapping.button.edit=Bearbeiten...
 
-settings.midi.label.device=Midi-Ger\u00E4te:
+settings.midi.label.midiDeviceImpl=Midi-Ger\u00E4te:
 
 settings.layout.label.type=Layout Type:
 
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/midiTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/midiTab.fxml
index c65c10d53e6eac505cc56160ada1d49e3a428287..8816e719ec37e1b51adf0723ed26ad3308d2d6df 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/midiTab.fxml
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/midiTab.fxml
@@ -10,7 +10,7 @@
    <children>
       <HBox spacing="14.0">
          <children>
-            <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%settings.midi.label.device">
+            <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%settings.midi.label.midiDeviceImpl">
                <HBox.margin>
                   <Insets top="4.0" />
                </HBox.margin>
diff --git a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java
index a9f22a3ecbc2c3a7d73722b0f54fcf3e6655c6e0..0e787f8e836a1d6c9ef0ca43c37786d97130d84e 100644
--- a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java
+++ b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java
@@ -18,11 +18,7 @@ import java.util.Set;
 
 import de.tobias.playpad.audio.JavaFXHandlerFactory;
 import de.tobias.playpad.design.modern.ModernDesignFactory;
-import org.dom4j.DocumentException;
 
-import de.tobias.playpad.action.mapper.MapperRegistry;
-import de.tobias.playpad.audio.JavaFXAudioHandler;
-import de.tobias.playpad.design.modern.ModernGlobalDesign;
 import de.tobias.playpad.midi.device.DeviceRegistry;
 import de.tobias.playpad.midi.device.PD12;
 import de.tobias.playpad.pad.Pad;
@@ -32,9 +28,9 @@ import de.tobias.playpad.plugin.PadListener;
 import de.tobias.playpad.plugin.SettingsListener;
 import de.tobias.playpad.plugin.WindowListener;
 import de.tobias.playpad.project.Project;
-import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.settings.GlobalSettings;
 import de.tobias.playpad.view.MapperOverviewViewController;
+import de.tobias.playpad.viewcontroller.BaseMapperOverviewViewController;
 import de.tobias.playpad.viewcontroller.IPadSettingsViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.playpad.viewcontroller.main.MainViewController;
@@ -76,7 +72,7 @@ public class PlayPadImpl implements PlayPad {
 
 	private Set<Module> modules;
 
-	public PlayPadImpl(GlobalSettings globalSettings) {
+	PlayPadImpl(GlobalSettings globalSettings) {
 		App app = ApplicationUtils.getApplication();
 		module = new Module(app.getInfo().getName(), app.getInfo().getIdentifier());
 
@@ -252,7 +248,7 @@ public class PlayPadImpl implements PlayPad {
 		return currentProject;
 	}
 
-	public void startup(ResourceBundle resourceBundle) {
+	void startup(ResourceBundle resourceBundle) {
 		registerComponents(resourceBundle);
 	}
 
@@ -286,7 +282,7 @@ public class PlayPadImpl implements PlayPad {
 		Pad.getVolumeManager().addFilter(new PadVolume());
 
 		// Mapper
-		MapperRegistry.setOverviewViewController(new MapperOverviewViewController());
+		BaseMapperOverviewViewController.setInstance(new MapperOverviewViewController());
 
 	}
 
diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java
index 2893dd123598aae235ac5345f0f4819c0717ed42..8a9c9e24d0f0edadc22e78d898be16d60256bd9c 100644
--- a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java
+++ b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java
@@ -1,7 +1,6 @@
 package de.tobias.playpad.action.mapper;
 
-import java.util.Optional;
-
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import org.dom4j.Element;
 
 import de.tobias.playpad.Strings;
@@ -13,7 +12,6 @@ import de.tobias.playpad.action.feedback.FeedbackMessage;
 import de.tobias.playpad.action.feedback.FeedbackType;
 import de.tobias.playpad.action.mapper.feedback.DoubleMidiFeedback;
 import de.tobias.playpad.action.mapper.feedback.SingleMidiFeedback;
-import de.tobias.playpad.action.mididevice.Device;
 import de.tobias.playpad.action.mididevice.DeviceColorAssociatorConnector;
 import de.tobias.playpad.midi.Midi;
 import de.tobias.playpad.viewcontroller.mapper.MidiMapperViewController;
@@ -33,11 +31,11 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 	private Feedback feedback;
 	private FeedbackType feedbackType;
 
-	public MidiMapper(String type) {
+	MidiMapper(String type) {
 		this(type, 0, 0);
 	}
 
-	public MidiMapper(String type, int command, int key) {
+	MidiMapper(String type, int command, int key) {
 		this.type = type;
 		this.command = command;
 		this.key = key;
@@ -84,10 +82,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 	}
 
 	@Override
-	public void handleFeedback(FeedbackMessage type) {
-		Device device = Midi.getInstance().getMidiDevice();
-		if (device != null) {
-			device.handleFeedback(type, key, feedback);
+	public void handleFeedback(FeedbackMessage message) {
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		if (midiDeviceImpl != null) {
+			midiDeviceImpl.handleFeedback(message, key, feedback);
 		}
 	}
 
@@ -96,12 +94,12 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 		return type;
 	}
 
-	// Feedback, abhängig vom Device
+	// Feedback, depends on MidiDeviceImpl
 	@Override
 	public boolean supportFeedback() {
-		Device midiDevice = Midi.getInstance().getMidiDevice();
-		if (midiDevice != null) {
-			return midiDevice.supportFeedback();
+		MidiDeviceImpl midiMidiDeviceImpl = Midi.getInstance().getMidiDevice();
+		if (midiMidiDeviceImpl != null) {
+			return midiMidiDeviceImpl.supportFeedback();
 		}
 		return false;
 	}
@@ -117,10 +115,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 
 	@Override
 	public DisplayableFeedbackColor[] getColors() {
-		Device device = Midi.getInstance().getMidiDevice();
-		if (device != null) {
-			if (device instanceof DeviceColorAssociatorConnector) {
-				return ((DeviceColorAssociatorConnector) device).getColors();
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		if (midiDeviceImpl != null) {
+			if (midiDeviceImpl instanceof DeviceColorAssociatorConnector) {
+				return ((DeviceColorAssociatorConnector) midiDeviceImpl).getColors();
 			}
 		}
 		return null;
@@ -128,10 +126,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 
 	@Override
 	public DisplayableFeedbackColor getDefaultEventColor() {
-		Device device = Midi.getInstance().getMidiDevice();
-		if (device != null) {
-			if (device instanceof DeviceColorAssociatorConnector) {
-				return ((DeviceColorAssociatorConnector) device).getDefaultEventColor();
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		if (midiDeviceImpl != null) {
+			if (midiDeviceImpl instanceof DeviceColorAssociatorConnector) {
+				return ((DeviceColorAssociatorConnector) midiDeviceImpl).getDefaultEventColor();
 			}
 		}
 		return null;
@@ -139,10 +137,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 
 	@Override
 	public DisplayableFeedbackColor getDefaultStandardColor() {
-		Device device = Midi.getInstance().getMidiDevice();
-		if (device != null) {
-			if (device instanceof DeviceColorAssociatorConnector) {
-				return ((DeviceColorAssociatorConnector) device).getDefaultStandardColor();
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		if (midiDeviceImpl != null) {
+			if (midiDeviceImpl instanceof DeviceColorAssociatorConnector) {
+				return ((DeviceColorAssociatorConnector) midiDeviceImpl).getDefaultStandardColor();
 			}
 		}
 		return null;
@@ -150,10 +148,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 	
 	@Override
 	public DisplayableFeedbackColor map(Color color) {
-		Device device = Midi.getInstance().getMidiDevice();
-		if (device != null) {
-			if (device instanceof DeviceColorAssociatorConnector) {
-				return ((DeviceColorAssociatorConnector) device).map(color);
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		if (midiDeviceImpl != null) {
+			if (midiDeviceImpl instanceof DeviceColorAssociatorConnector) {
+				return ((DeviceColorAssociatorConnector) midiDeviceImpl).map(color);
 			}
 		}
 		return null;
diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java
index 27e14b3e0fa297cc775151dc5a9ca6972904d039..3d6166845bc94ae06abdea212c583b80cb550343 100644
--- a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java
+++ b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java
@@ -1,9 +1,8 @@
 package de.tobias.playpad.action.mapper;
 
 import de.tobias.playpad.Strings;
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.midi.Midi;
-import de.tobias.utils.ui.icon.FontIconType;
 import de.tobias.utils.util.Localization;
 
 public class MidiMapperFactory extends MapperFactory implements MapperConnectFeedbackable {
@@ -24,14 +23,14 @@ public class MidiMapperFactory extends MapperFactory implements MapperConnectFee
 
 	@Override
 	public void initFeedbackType() {
-		Device device = Midi.getInstance().getMidiDevice();
-		device.initDevice();
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		midiDeviceImpl.initDevice();
 	}
 
 	@Override
 	public void clearFeedbackType() {
-		Device device = Midi.getInstance().getMidiDevice();
-		device.clearFeedback();
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		midiDeviceImpl.clearFeedback();
 	}
 
 	// TODO Remove
diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java b/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java
index 85f6ec285db2564fe25d3f0875761c063553413c..906c204db64472f5635ea5585cddbcbb1bdf4459 100644
--- a/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java
+++ b/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java
@@ -7,7 +7,7 @@ import javax.sound.midi.MidiMessage;
 import de.tobias.playpad.action.Action;
 import de.tobias.playpad.action.InputType;
 import de.tobias.playpad.action.MappingUtils;
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.midi.Midi;
 import de.tobias.playpad.midi.MidiListener;
 import de.tobias.playpad.project.Project;
@@ -43,8 +43,8 @@ public class MidiHandler implements MidiListener {
 		int key = message.getMessage()[1];
 
 		// Custom Midi Listener
-		Device device = midi.getMidiDevice();
-		device.onMidiMessage(message);
+		MidiDeviceImpl midiDeviceImpl = midi.getMidiDevice();
+		midiDeviceImpl.onMidiMessage(message);
 
 		InputType type;
 		if (message.getMessage()[2] != 0) {
diff --git a/PlayWall/src/de/tobias/playpad/midi/device/PD12.java b/PlayWall/src/de/tobias/playpad/midi/device/PD12.java
index 40c050e4f26906dac9be42609b06c028bc418835..2a214f22b8ef7cab0ff4ff9cab3bfbedfc9cf275 100644
--- a/PlayWall/src/de/tobias/playpad/midi/device/PD12.java
+++ b/PlayWall/src/de/tobias/playpad/midi/device/PD12.java
@@ -6,11 +6,11 @@ import javax.sound.midi.SysexMessage;
 import de.tobias.playpad.action.feedback.DisplayableFeedbackColor;
 import de.tobias.playpad.action.feedback.Feedback;
 import de.tobias.playpad.action.feedback.FeedbackMessage;
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.settings.Profile;
 import javafx.application.Platform;
 
-public class PD12 extends Device {
+public class PD12 extends MidiDeviceImpl {
 
 	public static final String NAME = "PD 12";
 
diff --git a/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java b/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java
index 7b86020d48338a34354f0b0ecb63e50aea218aa3..786e783410f226e0b45c9caf82ca51c348b1abca 100644
--- a/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java
+++ b/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java
@@ -1,9 +1,5 @@
 package de.tobias.playpad.view;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
 import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.action.Action;
@@ -12,7 +8,7 @@ import de.tobias.playpad.action.mapper.MapperFactory;
 import de.tobias.playpad.action.mapper.MapperViewController;
 import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.registry.Registry;
-import de.tobias.playpad.viewcontroller.IMapperOverviewViewController;
+import de.tobias.playpad.viewcontroller.BaseMapperOverviewViewController;
 import de.tobias.utils.ui.icon.FontAwesomeType;
 import de.tobias.utils.ui.icon.FontIcon;
 import javafx.scene.Parent;
@@ -24,8 +20,12 @@ import javafx.scene.layout.HBox;
 import javafx.scene.layout.Pane;
 import javafx.scene.layout.VBox;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
 // Diese Klasse zeigt die Mapper zu einer Action an
-public class MapperOverviewViewController implements IMapperOverviewViewController {
+public class MapperOverviewViewController extends BaseMapperOverviewViewController {
 
 	private VBox root;
 	private VBox mappingView;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java
index 020656123627b651bbaab676ba9bb2f41cecc0c5..c53586b9b554c74ea028cac160640739c3fe97d7 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java
@@ -4,9 +4,8 @@ import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.Strings;
 import de.tobias.playpad.action.cartaction.CartAction;
 import de.tobias.playpad.action.cartaction.CartAction.ControlMode;
-import de.tobias.playpad.action.mapper.MapperRegistry;
 import de.tobias.playpad.action.mapper.MapperViewController;
-import de.tobias.playpad.viewcontroller.IMapperOverviewViewController;
+import de.tobias.playpad.viewcontroller.BaseMapperOverviewViewController;
 import de.tobias.playpad.viewcontroller.cell.EnumCell;
 import de.tobias.utils.ui.ContentViewController;
 import javafx.fxml.FXML;
@@ -21,7 +20,7 @@ public class CartActionViewController extends ContentViewController {
 	@FXML private CheckBox autoColorCheckbox;
 
 	@FXML private VBox rootContainer;
-	private IMapperOverviewViewController mapperOverviewViewController;
+	private BaseMapperOverviewViewController baseMapperOverviewViewController;
 
 	private CartAction action;
 
@@ -43,8 +42,8 @@ public class CartActionViewController extends ContentViewController {
 		{
 			action.setAutoFeedbackColors(c);
 			// Disable Feedback Controls bei Automatischen Feedback für VORHANDENE MAPPER
-			if (mapperOverviewViewController != null) {
-				mapperOverviewViewController.getControllers().forEach(controller ->
+			if (baseMapperOverviewViewController != null) {
+				baseMapperOverviewViewController.getControllers().forEach(controller ->
 				{
 					toggleFeedbackVisablity(action, controller);
 				});
@@ -52,8 +51,8 @@ public class CartActionViewController extends ContentViewController {
 		});
 		VBox.setVgrow(rootContainer, Priority.ALWAYS);
 
-		mapperOverviewViewController = MapperRegistry.getOverviewViewControllerInstance();
-		mapperOverviewViewController.addMapperAddListener((mapper, controller) ->
+		baseMapperOverviewViewController = BaseMapperOverviewViewController.getInstance();
+		baseMapperOverviewViewController.addMapperAddListener((mapper, controller) ->
 		{
 			// Disable Feedback Controls bei Automatischen Feedback für NEUE MAPPER die erstellt werden
 			toggleFeedbackVisablity(action, controller);
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
index 0381d8ee1e7095379b96c6518df7fdff32e165f2..a641fcf2a7b39f18b478f98d86f6af39aebbdec1 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
@@ -547,7 +547,7 @@ public class MainViewController extends ViewController implements IMainViewContr
 
 		// MIDI
 		if (profileSettings.isMidiActive() && profileSettings.getMidiDevice() != null) {
-			// Load known MIDI Device
+			// Load known MIDI MidiDeviceImpl
 			Worker.runLater(() ->
 			{
 				loadMidiDevice(profileSettings.getMidiDevice());
@@ -688,10 +688,10 @@ public class MainViewController extends ViewController implements IMainViewContr
 	}
 
 	/**
-	 * Init MIDI Device by using the Midi Class and show some feedback the user.
+	 * Init MIDI MidiDeviceImpl by using the Midi Class and show some feedback the user.
 	 * 
 	 * @param name
-	 *            Device Name
+	 *            MidiDeviceImpl Name
 	 * 
 	 * @see Midi#lookupMidiDevice(String)
 	 */
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java
index aabd426b60650b0bbfe87f0603e65af054ea5599..4dc94293821a836ae8823a5d9f369b6f6540fb35 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java
@@ -10,7 +10,7 @@ import de.tobias.playpad.action.mapper.MapperViewController;
 import de.tobias.playpad.action.mapper.MidiMapper;
 import de.tobias.playpad.action.mapper.feedback.DoubleMidiFeedback;
 import de.tobias.playpad.action.mapper.feedback.SingleMidiFeedback;
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.midi.Midi;
 import de.tobias.playpad.midi.MidiListener;
 import de.tobias.playpad.viewcontroller.option.feedback.DoubleFeedbackViewController;
@@ -133,18 +133,18 @@ public class MidiMapperViewController extends MapperViewController implements Mi
 
 		midiInputKeyLabel.setText(String.valueOf(mapper.getKey()));
 
-		Device device = Midi.getInstance().getMidiDevice();
-		if (device != null) {
-			if (device.supportFeedback()) {
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		if (midiDeviceImpl != null) {
+			if (midiDeviceImpl.supportFeedback()) {
 				// remove old Elements
 				if (feedbackController != null) {
 					root.getChildren().remove(feedbackController.getParent());
 				}
 				// add new Elements
 				if (mapper.getFeedbackType() == FeedbackType.SINGLE) {
-					feedbackController = new SingleFeedbackViewController((SingleMidiFeedback) mapper.getFeedback(), device.getColors());
+					feedbackController = new SingleFeedbackViewController((SingleMidiFeedback) mapper.getFeedback(), midiDeviceImpl.getColors());
 				} else if (mapper.getFeedbackType() == FeedbackType.DOUBLE) {
-					feedbackController = new DoubleFeedbackViewController((DoubleMidiFeedback) mapper.getFeedback(), device.getColors());
+					feedbackController = new DoubleFeedbackViewController((DoubleMidiFeedback) mapper.getFeedback(), midiDeviceImpl.getColors());
 				}
 				showFeedback();
 			}
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java
index a88ef435f74964545185c0beafc8511a630a063e..0403153031e5ab76a098bd319e77f6200d59999a 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java
@@ -1,7 +1,5 @@
 package de.tobias.playpad.viewcontroller.option.feedback;
 
-import java.util.Optional;
-
 import org.controlsfx.control.PopOver;
 import org.controlsfx.control.PopOver.ArrowLocation;
 
@@ -9,7 +7,7 @@ import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.action.feedback.DisplayableFeedbackColor;
 import de.tobias.playpad.action.feedback.FeedbackMessage;
 import de.tobias.playpad.action.mapper.feedback.DoubleMidiFeedback;
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.midi.Midi;
 import de.tobias.playpad.view.ColorPickerView;
 import de.tobias.utils.ui.ContentViewController;
@@ -42,14 +40,14 @@ public class DoubleFeedbackViewController extends ContentViewController {
 		super("doubleFeedback", "de/tobias/playpad/assets/view/option/feedback/", PlayPadMain.getUiResourceBundle());
 		this.feedback = feedback;
 
-		Device device = Midi.getInstance().getMidiDevice();
-		if (device != null) {
-			DisplayableFeedbackColor colorDefault = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		if (midiDeviceImpl != null) {
+			DisplayableFeedbackColor colorDefault = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 			if (colorDefault != null) {
 				colorPreviewDefault.setFill(colorDefault.getPaint());
 				setColorChooseButtonColor(colorDefault.getPaint(), colorChooseDefaultButton);
 			}
-			DisplayableFeedbackColor colorPlay = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.EVENT));
+			DisplayableFeedbackColor colorPlay = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.EVENT));
 			if (colorPlay != null) {
 				colorPreviewEvent.setFill(colorPlay.getPaint());
 				setColorChooseButtonColor(colorPlay.getPaint(), colorChooseEventButton);
@@ -74,16 +72,16 @@ public class DoubleFeedbackViewController extends ContentViewController {
 	private void colorChooseButtonHandler(ActionEvent event) {
 		if (colorChooser == null) {
 			colorChooser = new PopOver();
-			Device device = Midi.getInstance().getMidiDevice();
-			if (device != null) {
-				DisplayableFeedbackColor color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
+			MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+			if (midiDeviceImpl != null) {
+				DisplayableFeedbackColor color = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 				if (event.getSource() == colorChooseDefaultButton) {
-					color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
+					color = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 				} else if (event.getSource() == colorChooseEventButton) {
-					color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.EVENT));
+					color = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.EVENT));
 				}
 				
-				ColorPickerView colorView = new ColorPickerView(color, device.getColors(), item ->
+				ColorPickerView colorView = new ColorPickerView(color, midiDeviceImpl.getColors(), item ->
 				{
 					colorChooser.hide();
 					if (item instanceof DisplayableFeedbackColor) {
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java
index ab0d032051d5d8424a34e9327cd4a4b11bc506e4..11cd760afac86e4503cd7ddfda6d69e5a75f670a 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java
@@ -1,7 +1,6 @@
 package de.tobias.playpad.viewcontroller.option.feedback;
 
-import java.util.Optional;
-
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import org.controlsfx.control.PopOver;
 import org.controlsfx.control.PopOver.ArrowLocation;
 
@@ -9,7 +8,6 @@ import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.action.feedback.DisplayableFeedbackColor;
 import de.tobias.playpad.action.feedback.FeedbackMessage;
 import de.tobias.playpad.action.mapper.feedback.SingleMidiFeedback;
-import de.tobias.playpad.action.mididevice.Device;
 import de.tobias.playpad.midi.Midi;
 import de.tobias.playpad.view.ColorPickerView;
 import de.tobias.utils.ui.ContentViewController;
@@ -38,9 +36,9 @@ public class SingleFeedbackViewController extends ContentViewController {
 		super("singleFeedback", "de/tobias/playpad/assets/view/option/feedback/", PlayPadMain.getUiResourceBundle());
 		this.feedback = feedback;
 
-		Device device = Midi.getInstance().getMidiDevice();
-		if (device != null) {
-			DisplayableFeedbackColor colorDefault = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
+		MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+		if (midiDeviceImpl != null) {
+			DisplayableFeedbackColor colorDefault = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 			if (colorDefault != null) {
 				colorPreviewDefault.setFill(colorDefault.getPaint());
 				setColorChooseButtonColor(colorDefault.getPaint(), colorChooseDefaultButton);
@@ -60,11 +58,11 @@ public class SingleFeedbackViewController extends ContentViewController {
 	private void colorChooseButtonHandler(ActionEvent event) {
 		if (colorChooser == null) {
 			colorChooser = new PopOver();
-			Device device = Midi.getInstance().getMidiDevice();
-			if (device != null) {
-				DisplayableFeedbackColor color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
+			MidiDeviceImpl midiDeviceImpl = Midi.getInstance().getMidiDevice();
+			if (midiDeviceImpl != null) {
+				DisplayableFeedbackColor color = midiDeviceImpl.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 
-				ColorPickerView colorView = new ColorPickerView(color, device.getColors(), item ->
+				ColorPickerView colorView = new ColorPickerView(color, midiDeviceImpl.getColors(), item ->
 				{
 					colorChooser.hide();
 					if (item instanceof DisplayableFeedbackColor) {
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java
index e177b8f69150ab60c38cc41180595cb5f454439d..ba73394ac013acf6446967f50eb2e38445982dd3 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java
@@ -2,7 +2,6 @@ package de.tobias.playpad.viewcontroller.option.profile;
 
 import java.util.Collection;
 import java.util.List;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 import de.tobias.playpad.PlayPadMain;
@@ -13,12 +12,10 @@ import de.tobias.playpad.action.ActionFactory;
 import de.tobias.playpad.action.ActionDisplayable;
 import de.tobias.playpad.action.ActionType;
 import de.tobias.playpad.action.Mapping;
-import de.tobias.playpad.action.mapper.MapperRegistry;
 import de.tobias.playpad.project.Project;
-import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileSettings;
-import de.tobias.playpad.viewcontroller.IMapperOverviewViewController;
+import de.tobias.playpad.viewcontroller.BaseMapperOverviewViewController;
 import de.tobias.playpad.viewcontroller.IMappingTabViewController;
 import de.tobias.playpad.viewcontroller.cell.DisplayableCell;
 import de.tobias.playpad.viewcontroller.cell.DisplayableTreeCell;
@@ -49,7 +46,7 @@ public class MappingTabViewController extends ProfileSettingsTabViewController i
 
 	@FXML
 	private VBox detailView;
-	private IMapperOverviewViewController mapperOverviewViewController;
+	private BaseMapperOverviewViewController baseMapperOverviewViewController;
 
 	private Mapping oldMapping;
 	private Mapping mapping;
@@ -136,10 +133,10 @@ public class MappingTabViewController extends ProfileSettingsTabViewController i
 	public void showMapperFor(Action action) {
 		try {
 			if (action != null) {
-				mapperOverviewViewController = MapperRegistry.getOverviewViewControllerInstance();
-				mapperOverviewViewController.showAction(action, detailView);
+				baseMapperOverviewViewController = BaseMapperOverviewViewController.getInstance();
+				baseMapperOverviewViewController.showAction(action, detailView);
 			} else {
-				detailView.getChildren().remove(mapperOverviewViewController.getParent());
+				detailView.getChildren().remove(baseMapperOverviewViewController.getParent());
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java
index 72c74016cedbc502c0cc82188bbf68b18cfd252e..0eb1711869763258d1cfb1370cb7c4da375857e4 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java
@@ -49,7 +49,7 @@ public class MidiTabViewController extends ProfileSettingsTabViewController {
 		});
 	}
 
-	// Midi Device und Presets Choose
+	// Midi MidiDeviceImpl und Presets Choose
 	@FXML
 	private void deviceHandler(ActionEvent event) {
 		ProfileSettings profilSettings = Profile.currentProfile().getProfileSettings();
diff --git a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperFeedbackable.java b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperFeedbackable.java
index 9e3a607afc5354e3ec87bac62880a5cdf1d88d43..ae78ea90077bda31b947585210c128c329fda5a7 100644
--- a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperFeedbackable.java
+++ b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperFeedbackable.java
@@ -2,10 +2,15 @@ package de.tobias.playpad.action.mapper;
 
 import de.tobias.playpad.action.feedback.FeedbackMessage;
 
+/**
+ * Implement this interface to enable a mapper to receive feedback from an action
+ *
+ * @author tobias
+ */
 public interface MapperFeedbackable {
 
-	public abstract boolean supportFeedback();
+	boolean supportFeedback();
 
-	public abstract void handleFeedback(FeedbackMessage type);
+	void handleFeedback(FeedbackMessage message);
 
 }
\ No newline at end of file
diff --git a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperRegistry.java b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperRegistry.java
deleted file mode 100644
index ea795f46ebab8df397805d40be37c6a54a737ca2..0000000000000000000000000000000000000000
--- a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperRegistry.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package de.tobias.playpad.action.mapper;
-
-import de.tobias.playpad.viewcontroller.IMapperOverviewViewController;
-
-@Deprecated
-public class MapperRegistry {
-
-	// TODO New Implementation
-	private static IMapperOverviewViewController controllerInstance;
-
-	public static void setOverviewViewController(IMapperOverviewViewController controller) {
-		MapperRegistry.controllerInstance = controller;
-	}
-
-	public static IMapperOverviewViewController getOverviewViewControllerInstance() {
-		return controllerInstance;
-	}
-}
diff --git a/PlayWallCore/src/de/tobias/playpad/action/mididevice/Device.java b/PlayWallCore/src/de/tobias/playpad/action/mididevice/MidiDeviceImpl.java
similarity index 89%
rename from PlayWallCore/src/de/tobias/playpad/action/mididevice/Device.java
rename to PlayWallCore/src/de/tobias/playpad/action/mididevice/MidiDeviceImpl.java
index 8a55c904fdb5b4d32c5b0dc7c7bbd82f61fd3dcd..19163d64a6ba7a21e52aaac0b42dc528807cfe7c 100644
--- a/PlayWallCore/src/de/tobias/playpad/action/mididevice/Device.java
+++ b/PlayWallCore/src/de/tobias/playpad/action/mididevice/MidiDeviceImpl.java
@@ -20,9 +20,9 @@ import de.tobias.playpad.midi.device.DeviceRegistry;
  * 
  * @since 5.0.0
  */
-public abstract class Device extends EventDispatcher implements Listener {
+public abstract class MidiDeviceImpl extends EventDispatcher implements Listener {
 
-	public Device() {
+	public MidiDeviceImpl() {
 		registerEventListener(this);
 	}
 
@@ -50,7 +50,7 @@ public abstract class Device extends EventDispatcher implements Listener {
 		if (listeners != null) {
 			for (ListenerHandler handler : listeners) {
 				handler.execute(event);
-				System.out.println("Dispatched Device Event: " + event);
+				System.out.println("Dispatched MidiDeviceImpl Event: " + event);
 			}
 		}
 		DeviceRegistry.getFactoryInstance().dispatchEvent(event);
diff --git a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java
index 2b81812afbba0a69cb375178e4f561503a6606e3..470a7d1f1f2167a119445cdce8b421c4a3cd99b4 100644
--- a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java
+++ b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java
@@ -1,6 +1,6 @@
 package de.tobias.playpad.midi;
 
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.midi.device.DeviceRegistry;
 
 import javax.sound.midi.*;
@@ -10,7 +10,7 @@ public class Midi implements AutoCloseable {
 
 	private MidiDevice inputDevice;
 	private MidiDevice outputDevice;
-	private Device midiDeviceImpl;
+	private MidiDeviceImpl midiMidiDeviceImplImpl;
 
 	private MidiListener listener;
 
@@ -46,8 +46,8 @@ public class Midi implements AutoCloseable {
 		return outputDevice;
 	}
 
-	public Device getMidiDevice() {
-		return midiDeviceImpl;
+	public MidiDeviceImpl getMidiDevice() {
+		return midiMidiDeviceImplImpl;
 	}
 
 	public void lookupMidiDevice(String name) throws IllegalArgumentException, MidiUnavailableException, NullPointerException {
@@ -91,7 +91,7 @@ public class Midi implements AutoCloseable {
 
 		// Hier wird die DeviceImpl aufgerufen
 		try {
-			this.midiDeviceImpl = DeviceRegistry.getFactoryInstance().getDevice(input.getName());
+			this.midiMidiDeviceImplImpl = DeviceRegistry.getFactoryInstance().getDevice(input.getName());
 		} catch (InstantiationException | IllegalAccessException e) {
 			e.printStackTrace();
 		}
@@ -159,8 +159,8 @@ public class Midi implements AutoCloseable {
 	}
 
 	public void sendClearCommand() throws InvalidMidiDataException, MidiUnavailableException {
-		if (midiDeviceImpl != null) {
-			midiDeviceImpl.clearFeedback();
+		if (midiMidiDeviceImplImpl != null) {
+			midiMidiDeviceImplImpl.clearFeedback();
 		}
 	}
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/midi/device/DefaultDevice.java b/PlayWallCore/src/de/tobias/playpad/midi/device/DefaultMidiDeviceImpl.java
similarity index 85%
rename from PlayWallCore/src/de/tobias/playpad/midi/device/DefaultDevice.java
rename to PlayWallCore/src/de/tobias/playpad/midi/device/DefaultMidiDeviceImpl.java
index af8a3460898abbd3c1238f6e1839dadcb9d3980a..dd0fdbb5dfcb2863134e5ba8cfb0d91df68d57f6 100644
--- a/PlayWallCore/src/de/tobias/playpad/midi/device/DefaultDevice.java
+++ b/PlayWallCore/src/de/tobias/playpad/midi/device/DefaultMidiDeviceImpl.java
@@ -3,9 +3,9 @@ package de.tobias.playpad.midi.device;
 import de.tobias.playpad.action.feedback.DisplayableFeedbackColor;
 import de.tobias.playpad.action.feedback.Feedback;
 import de.tobias.playpad.action.feedback.FeedbackMessage;
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 
-public class DefaultDevice extends Device {
+public class DefaultMidiDeviceImpl extends MidiDeviceImpl {
 
 	@Override
 	public String getName() {
diff --git a/PlayWallCore/src/de/tobias/playpad/midi/device/DeviceRegistry.java b/PlayWallCore/src/de/tobias/playpad/midi/device/DeviceRegistry.java
index 67b9b8a796939c1cf497bdc173440baf10e932c6..32c023b34f416b5417eb1c3eba4517263441d797 100644
--- a/PlayWallCore/src/de/tobias/playpad/midi/device/DeviceRegistry.java
+++ b/PlayWallCore/src/de/tobias/playpad/midi/device/DeviceRegistry.java
@@ -3,7 +3,7 @@ package de.tobias.playpad.midi.device;
 import java.util.HashMap;
 import java.util.List;
 
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.event.Event;
 import de.tobias.playpad.event.EventDispatcher;
 
@@ -25,7 +25,7 @@ public class DeviceRegistry extends EventDispatcher {
 	/**
 	 * Speicher für alle Geräte Implementierungen [Produktname, Implementierung]
 	 */
-	private HashMap<String, Class<? extends Device>> devices = new HashMap<>();
+	private HashMap<String, Class<? extends MidiDeviceImpl>> devices = new HashMap<>();
 
 	/**
 	 * Registriert eine neue Implementierung für ein Midi Gerät
@@ -35,9 +35,9 @@ public class DeviceRegistry extends EventDispatcher {
 	 * @param device
 	 *            Implementierung als Klasse, Instanz erstellt das Programm bei bei bedarf
 	 */
-	public void registerDevice(String id, Class<? extends Device> device) {
+	public void registerDevice(String id, Class<? extends MidiDeviceImpl> device) {
 		devices.put(id, device);
-		System.out.println("Register MIDI Device Impl: " + id);
+		System.out.println("Register MIDI MidiDeviceImpl Impl: " + id);
 	}
 
 	/**
@@ -45,26 +45,26 @@ public class DeviceRegistry extends EventDispatcher {
 	 * 
 	 * @param id
 	 *            Name des Geräts
-	 * @return Implementierung, DefaultDevice wenn keine vorhanden oder registriert über register
+	 * @return Implementierung, DefaultMidiDeviceImpl wenn keine vorhanden oder registriert über register
 	 * @throws InstantiationException
 	 *             Fehler beim instanzieren
 	 * @throws IllegalAccessException
 	 *             Fehler beim instanzieren
 	 * @see DeviceRegistry#registerDevice(String, Class)
-	 * @see DefaultDevice
+	 * @see DefaultMidiDeviceImpl
 	 */
-	public Device getDevice(String id) throws InstantiationException, IllegalAccessException {
+	public MidiDeviceImpl getDevice(String id) throws InstantiationException, IllegalAccessException {
 		if (devices.containsKey(id)) {
 			System.out.println("Recognize known MIDI device: " + id);
 			return devices.get(id).newInstance();
 		} else {
 			System.out.println("Use Default MIDI device");
-			return new DefaultDevice();
+			return new DefaultMidiDeviceImpl();
 		}
 	}
 
 	/**
-	 * Instanz der Device Component
+	 * Instanz der MidiDeviceImpl Component
 	 * 
 	 * @return instance
 	 */
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/BaseMapperOverviewViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/BaseMapperOverviewViewController.java
new file mode 100644
index 0000000000000000000000000000000000000000..189bbad09970693c22901ae9b628eb1fcf0050de
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/BaseMapperOverviewViewController.java
@@ -0,0 +1,41 @@
+package de.tobias.playpad.viewcontroller;
+
+import java.util.List;
+import java.util.ResourceBundle;
+
+import de.tobias.playpad.action.Action;
+import de.tobias.playpad.action.mapper.Mapper;
+import de.tobias.playpad.action.mapper.MapperViewController;
+import de.tobias.utils.ui.ContentViewController;
+import javafx.scene.Parent;
+import javafx.scene.control.ScrollPane;
+import javafx.scene.layout.Pane;
+
+public abstract class BaseMapperOverviewViewController {
+
+	private static BaseMapperOverviewViewController instance;
+
+	public static BaseMapperOverviewViewController getInstance() {
+		return instance;
+	}
+
+	public static void setInstance(BaseMapperOverviewViewController instance) {
+		BaseMapperOverviewViewController.instance = instance;
+	}
+
+	public interface MapperAddListener {
+
+		void onAdd(Mapper mapper, MapperViewController controller);
+	}
+
+	public abstract List<MapperViewController> getControllers();
+
+	public abstract void addMapperAddListener(MapperAddListener addListener);
+
+	public abstract void showAction(Action action, Pane parent);
+
+	public abstract void showAction(Action action, ScrollPane parent);
+
+	public abstract Parent getParent();
+
+}
\ No newline at end of file
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/IMapperOverviewViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/IMapperOverviewViewController.java
deleted file mode 100644
index b548e8ab44a701ecc330d07e7f198d57aaaec9ad..0000000000000000000000000000000000000000
--- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/IMapperOverviewViewController.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package de.tobias.playpad.viewcontroller;
-
-import java.util.List;
-
-import de.tobias.playpad.action.Action;
-import de.tobias.playpad.action.mapper.Mapper;
-import de.tobias.playpad.action.mapper.MapperViewController;
-import javafx.scene.Parent;
-import javafx.scene.control.ScrollPane;
-import javafx.scene.layout.Pane;
-
-public interface IMapperOverviewViewController {
-
-	public static interface MapperAddListener {
-
-		public void onAdd(Mapper mapper, MapperViewController controller);
-	}
-
-	public List<MapperViewController> getControllers();
-
-	public void addMapperAddListener(MapperAddListener addListener);
-
-	public void showAction(Action action, Pane parent);
-
-	public void showAction(Action action, ScrollPane parent);
-
-	public Parent getParent();
-
-}
\ No newline at end of file
diff --git a/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/mk2/LaunchPadMK2.java b/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/mk2/LaunchPadMK2.java
index 389b2ab772f3d47d0d62e3f20cf0ba05cfead83e..7d8f920ed542b5b981e6c69e0ab88646c1494328 100644
--- a/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/mk2/LaunchPadMK2.java
+++ b/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/mk2/LaunchPadMK2.java
@@ -10,13 +10,13 @@ import javax.sound.midi.ShortMessage;
 import de.tobias.playpad.action.feedback.DisplayableFeedbackColor;
 import de.tobias.playpad.action.feedback.Feedback;
 import de.tobias.playpad.action.feedback.FeedbackMessage;
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.action.mididevice.DeviceColorAssociatorConnector;
 import de.tobias.playpad.launchpadplugin.impl.MapParser;
 import de.tobias.playpad.midi.Midi;
 import javafx.scene.paint.Color;
 
-public class LaunchPadMK2 extends Device implements DeviceColorAssociatorConnector {
+public class LaunchPadMK2 extends MidiDeviceImpl implements DeviceColorAssociatorConnector {
 
 	public static final String NAME = "Launchpad MK2";
 
diff --git a/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/s/LaunchPadS.java b/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/s/LaunchPadS.java
index 693d49e063b5beac6f5b8565ffbbc1e19875d03f..fa6ced16276e828f4787fb6c38b0dd7559eed62d 100644
--- a/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/s/LaunchPadS.java
+++ b/PluginLaunchpad/src/de/tobias/playpad/launchpadplugin/midi/device/s/LaunchPadS.java
@@ -6,12 +6,12 @@ import javax.sound.midi.MidiUnavailableException;
 import de.tobias.playpad.action.feedback.DisplayableFeedbackColor;
 import de.tobias.playpad.action.feedback.Feedback;
 import de.tobias.playpad.action.feedback.FeedbackMessage;
-import de.tobias.playpad.action.mididevice.Device;
+import de.tobias.playpad.action.mididevice.MidiDeviceImpl;
 import de.tobias.playpad.action.mididevice.DeviceColorAssociatorConnector;
 import de.tobias.playpad.midi.Midi;
 import javafx.scene.paint.Color;
 
-public class LaunchPadS extends Device implements DeviceColorAssociatorConnector {
+public class LaunchPadS extends MidiDeviceImpl implements DeviceColorAssociatorConnector {
 
 	public static final String NAME = "Launchpad S";