diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java
index 2e2544ad5372e6c6d4a5b0c97cf0ed43410aead9..2893dd123598aae235ac5345f0f4819c0717ed42 100644
--- a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java
+++ b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java
@@ -85,7 +85,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 
 	@Override
 	public void handleFeedback(FeedbackMessage type) {
-		Midi.getInstance().getMidiDevice().ifPresent(device -> device.handleFeedback(type, key, feedback));
+		Device device = Midi.getInstance().getMidiDevice();
+		if (device != null) {
+			device.handleFeedback(type, key, feedback);
+		}
 	}
 
 	@Override
@@ -96,9 +99,9 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 	// Feedback, abhängig vom Device
 	@Override
 	public boolean supportFeedback() {
-		Optional<Device> midiDevice = Midi.getInstance().getMidiDevice();
-		if (midiDevice.isPresent()) {
-			return midiDevice.get().supportFeedback();
+		Device midiDevice = Midi.getInstance().getMidiDevice();
+		if (midiDevice != null) {
+			return midiDevice.supportFeedback();
 		}
 		return false;
 	}
@@ -114,9 +117,8 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 
 	@Override
 	public DisplayableFeedbackColor[] getColors() {
-		Optional<Device> midiDevice = Midi.getInstance().getMidiDevice();
-		if (midiDevice.isPresent()) {
-			Device device = midiDevice.get();
+		Device device = Midi.getInstance().getMidiDevice();
+		if (device != null) {
 			if (device instanceof DeviceColorAssociatorConnector) {
 				return ((DeviceColorAssociatorConnector) device).getColors();
 			}
@@ -126,9 +128,8 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 
 	@Override
 	public DisplayableFeedbackColor getDefaultEventColor() {
-		Optional<Device> midiDevice = Midi.getInstance().getMidiDevice();
-		if (midiDevice.isPresent()) {
-			Device device = midiDevice.get();
+		Device device = Midi.getInstance().getMidiDevice();
+		if (device != null) {
 			if (device instanceof DeviceColorAssociatorConnector) {
 				return ((DeviceColorAssociatorConnector) device).getDefaultEventColor();
 			}
@@ -138,9 +139,8 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 
 	@Override
 	public DisplayableFeedbackColor getDefaultStandardColor() {
-		Optional<Device> midiDevice = Midi.getInstance().getMidiDevice();
-		if (midiDevice.isPresent()) {
-			Device device = midiDevice.get();
+		Device device = Midi.getInstance().getMidiDevice();
+		if (device != null) {
 			if (device instanceof DeviceColorAssociatorConnector) {
 				return ((DeviceColorAssociatorConnector) device).getDefaultStandardColor();
 			}
@@ -150,9 +150,8 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac
 	
 	@Override
 	public DisplayableFeedbackColor map(Color color) {
-		Optional<Device> midiDevice = Midi.getInstance().getMidiDevice();
-		if (midiDevice.isPresent()) {
-			Device device = midiDevice.get();
+		Device device = Midi.getInstance().getMidiDevice();
+		if (device != null) {
 			if (device instanceof DeviceColorAssociatorConnector) {
 				return ((DeviceColorAssociatorConnector) device).map(color);
 			}
diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java
index ffeb227ae4bf2a2c94e10bd041c4da96b41294bd..27e14b3e0fa297cc775151dc5a9ca6972904d039 100644
--- a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java
+++ b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java
@@ -24,12 +24,14 @@ public class MidiMapperFactory extends MapperFactory implements MapperConnectFee
 
 	@Override
 	public void initFeedbackType() {
-		Midi.getInstance().getMidiDevice().ifPresent(Device::initDevice);
+		Device device = Midi.getInstance().getMidiDevice();
+		device.initDevice();
 	}
 
 	@Override
 	public void clearFeedbackType() {
-		Midi.getInstance().getMidiDevice().ifPresent(Device::clearFeedback);
+		Device device = Midi.getInstance().getMidiDevice();
+		device.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 b63415aed4d0a04705785ab898cf57971ebb42de..85f6ec285db2564fe25d3f0875761c063553413c 100644
--- a/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java
+++ b/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java
@@ -7,6 +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.midi.Midi;
 import de.tobias.playpad.midi.MidiListener;
 import de.tobias.playpad.project.Project;
@@ -42,7 +43,8 @@ public class MidiHandler implements MidiListener {
 		int key = message.getMessage()[1];
 
 		// Custom Midi Listener
-		midi.getMidiDevice().ifPresent(device -> device.onMidiMessage(message));
+		Device device = midi.getMidiDevice();
+		device.onMidiMessage(message);
 
 		InputType type;
 		if (message.getMessage()[2] != 0) {
diff --git a/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java b/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java
index 02af656d2c50e2cb0a9a2701522f2f2aa36c6a7a..d363e7e52f470c96db11501207be287cc83ecbd8 100644
--- a/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java
+++ b/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java
@@ -1,22 +1,18 @@
 package de.tobias.playpad.audio;
 
-import java.nio.file.Path;
-
 import de.tobias.playpad.pad.PadStatus;
 import de.tobias.playpad.pad.conntent.PadContent;
 import de.tobias.playpad.pad.content.AudioContent;
 import javafx.application.Platform;
-import javafx.beans.property.BooleanProperty;
-import javafx.beans.property.ObjectProperty;
-import javafx.beans.property.ReadOnlyObjectProperty;
-import javafx.beans.property.SimpleBooleanProperty;
-import javafx.beans.property.SimpleObjectProperty;
+import javafx.beans.property.*;
 import javafx.scene.media.AudioEqualizer;
 import javafx.scene.media.Media;
 import javafx.scene.media.MediaPlayer;
 import javafx.util.Duration;
 
-public class JavaFXAudioHandler extends AudioHandler implements Equalizable {
+import java.nio.file.Path;
+
+public class JavaFXAudioHandler extends AudioHandler implements AudioEqualizeable {
 
 	private Media media;
 	private MediaPlayer player;
diff --git a/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java b/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java
index 8279b461a40c8bed0f8af391634019611ac4e005..ad1b9fd095c5c692cb63445710dd3c6be994e9d2 100644
--- a/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java
+++ b/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java
@@ -5,26 +5,26 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 
+import de.tobias.playpad.audio.AudioEqualizeable;
 import org.dom4j.Element;
 
 import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.audio.AudioHandler;
 import de.tobias.playpad.audio.AudioRegistry;
-import de.tobias.playpad.audio.Equalizable;
-import de.tobias.playpad.audio.fade.Fading;
+import de.tobias.playpad.pad.conntent.play.Equalizeable;
+import de.tobias.playpad.audio.Fade;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadStatus;
 import de.tobias.playpad.pad.conntent.PadContent;
 import de.tobias.playpad.pad.conntent.path.SinglePathContent;
 import de.tobias.playpad.pad.conntent.play.Durationable;
 import de.tobias.playpad.pad.conntent.play.Fadeable;
-import de.tobias.playpad.pad.conntent.play.IVolume;
+import de.tobias.playpad.pad.conntent.play.FadeHandler;
 import de.tobias.playpad.pad.conntent.play.Pauseable;
 import de.tobias.playpad.project.ProjectExporter;
 import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.volume.VolumeManager;
 import de.tobias.utils.util.ZipFile;
-import javafx.animation.Transition;
 import javafx.application.Platform;
 import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.ReadOnlyObjectProperty;
@@ -33,7 +33,7 @@ import javafx.beans.value.ChangeListener;
 import javafx.scene.media.AudioEqualizer;
 import javafx.util.Duration;
 
-public class AudioContent extends PadContent implements Pauseable, Durationable, Fadeable, Equalizable, SinglePathContent, IVolume {
+public class AudioContent extends PadContent implements Pauseable, Durationable, Fadeable, Equalizeable, SinglePathContent, FadeHandler {
 
 	private final String type;
 
@@ -45,12 +45,12 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 
 	private ChangeListener<Number> volumeListener;
 
-	private Fading fading;
+	private Fade fade;
 
-	public AudioContent(String type, Pad pad) {
+	AudioContent(String type, Pad pad) {
 		super(pad);
 		this.type = type;
-		fading = new Fading(this);
+		fade = new Fade(this);
 
 		// Pad Volume Listener
 		volumeListener = (a, b, c) -> updateVolume();
@@ -106,7 +106,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 
 		Duration fadeIn = pad.getPadSettings().getFade().getFadeIn();
 		if (fadeIn.toMillis() > 0) {
-			fading.fadeIn(fadeIn);
+			fade.fadeIn(fadeIn);
 		}
 	}
 
@@ -114,7 +114,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 	public void fadeOut(Runnable onFinish) {
 		Duration fadeOut = getPad().getPadSettings().getFade().getFadeOut();
 		if (fadeOut.toMillis() > 0) {
-			fading.fadeOut(fadeOut, () -> {
+			fade.fadeOut(fadeOut, () -> {
 				onFinish.run();
 				updateVolume();
 			});
@@ -123,9 +123,8 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 		}
 	}
 
-	@Override
-	public boolean isFading() {
-		return fading.isFading();
+	public boolean getFade() {
+		return fade.isFading();
 	}
 
 	@Override
@@ -138,8 +137,8 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 
 	@Override
 	public AudioEqualizer getAudioEqualizer() {
-		if (audioHandler instanceof Equalizable) {
-			return ((Equalizable) audioHandler).getAudioEqualizer();
+		if (audioHandler instanceof AudioEqualizeable) {
+			return ((AudioEqualizeable) audioHandler).getAudioEqualizer();
 		}
 		return null;
 	}
diff --git a/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java b/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java
index 0bc0126ec95f77ab1cff8dd8c2800574ad1a3e59..02e0d0525f5567264b6060bd0fa096cd96c18d22 100644
--- a/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java
+++ b/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java
@@ -39,7 +39,7 @@ public class PadPositionListener implements Runnable, IPadPositionListener {
 			PadContent content = pad.getContent();
 
 			// Zeit aktualiesieren bei Play und wenn Fade Out ist
-			boolean isFading = content instanceof Fadeable && ((Fadeable) content).isFading();
+			boolean isFading = content instanceof Fadeable && ((Fadeable) content).getFade();
 			boolean isPlaying = pad.getStatus() == PadStatus.PLAY;
 
 			if (content instanceof Durationable && (isPlaying || isFading)) {
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java
index 52d5caca51388b4f65b9ec92f0622ee4da70e479..aabd426b60650b0bbfe87f0603e65af054ea5599 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java
@@ -10,6 +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.midi.Midi;
 import de.tobias.playpad.midi.MidiListener;
 import de.tobias.playpad.viewcontroller.option.feedback.DoubleFeedbackViewController;
@@ -132,8 +133,8 @@ public class MidiMapperViewController extends MapperViewController implements Mi
 
 		midiInputKeyLabel.setText(String.valueOf(mapper.getKey()));
 
-		Midi.getInstance().getMidiDevice().ifPresent(device ->
-		{
+		Device device = Midi.getInstance().getMidiDevice();
+		if (device != null) {
 			if (device.supportFeedback()) {
 				// remove old Elements
 				if (feedbackController != null) {
@@ -147,6 +148,6 @@ public class MidiMapperViewController extends MapperViewController implements Mi
 				}
 				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 8a9fbce01763b5933bb0c16ae160f6e45e039f1d..a88ef435f74964545185c0beafc8511a630a063e 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java
@@ -42,9 +42,8 @@ public class DoubleFeedbackViewController extends ContentViewController {
 		super("doubleFeedback", "de/tobias/playpad/assets/view/option/feedback/", PlayPadMain.getUiResourceBundle());
 		this.feedback = feedback;
 
-		Optional<Device> deviceOptional = Midi.getInstance().getMidiDevice();
-		deviceOptional.ifPresent(device ->
-		{
+		Device device = Midi.getInstance().getMidiDevice();
+		if (device != null) {
 			DisplayableFeedbackColor colorDefault = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 			if (colorDefault != null) {
 				colorPreviewDefault.setFill(colorDefault.getPaint());
@@ -55,7 +54,7 @@ public class DoubleFeedbackViewController extends ContentViewController {
 				colorPreviewEvent.setFill(colorPlay.getPaint());
 				setColorChooseButtonColor(colorPlay.getPaint(), colorChooseEventButton);
 			}
-		});
+		}
 	}
 
 	@Override
@@ -75,8 +74,8 @@ public class DoubleFeedbackViewController extends ContentViewController {
 	private void colorChooseButtonHandler(ActionEvent event) {
 		if (colorChooser == null) {
 			colorChooser = new PopOver();
-			Midi.getInstance().getMidiDevice().ifPresent((device) ->
-			{
+			Device device = Midi.getInstance().getMidiDevice();
+			if (device != null) {
 				DisplayableFeedbackColor color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 				if (event.getSource() == colorChooseDefaultButton) {
 					color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
@@ -106,7 +105,7 @@ public class DoubleFeedbackViewController extends ContentViewController {
 				colorChooser.setCornerRadius(5);
 				colorChooser.setArrowLocation(ArrowLocation.LEFT_CENTER);
 				colorChooser.show((Node) event.getSource());
-			});
+			}
 		}
 
 	}
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 b29ff5718a8d4d2e294b3f9d272588bbd686bdf4..ab0d032051d5d8424a34e9327cd4a4b11bc506e4 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java
@@ -38,15 +38,14 @@ public class SingleFeedbackViewController extends ContentViewController {
 		super("singleFeedback", "de/tobias/playpad/assets/view/option/feedback/", PlayPadMain.getUiResourceBundle());
 		this.feedback = feedback;
 
-		Optional<Device> deviceOptional = Midi.getInstance().getMidiDevice();
-		deviceOptional.ifPresent(device ->
-		{
+		Device device = Midi.getInstance().getMidiDevice();
+		if (device != null) {
 			DisplayableFeedbackColor colorDefault = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 			if (colorDefault != null) {
 				colorPreviewDefault.setFill(colorDefault.getPaint());
 				setColorChooseButtonColor(colorDefault.getPaint(), colorChooseDefaultButton);
 			}
-		});
+		}
 	}
 
 	@Override
@@ -61,8 +60,8 @@ public class SingleFeedbackViewController extends ContentViewController {
 	private void colorChooseButtonHandler(ActionEvent event) {
 		if (colorChooser == null) {
 			colorChooser = new PopOver();
-			Midi.getInstance().getMidiDevice().ifPresent((device) ->
-			{
+			Device device = Midi.getInstance().getMidiDevice();
+			if (device != null) {
 				DisplayableFeedbackColor color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD));
 
 				ColorPickerView colorView = new ColorPickerView(color, device.getColors(), item ->
@@ -83,7 +82,7 @@ public class SingleFeedbackViewController extends ContentViewController {
 				colorChooser.setCornerRadius(5);
 				colorChooser.setArrowLocation(ArrowLocation.LEFT_CENTER);
 				colorChooser.show((Node) event.getSource());
-			});
+			}
 		}
 	}
 
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 efedbd16a858c01b42deb8a4b802b7f3ac8483ef..72c74016cedbc502c0cc82188bbf68b18cfd252e 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java
@@ -66,7 +66,7 @@ public class MidiTabViewController extends ProfileSettingsTabViewController {
 						profilSettings.setMidiDeviceName(device);
 
 						// UI Rückmeldung
-						if (midi.getInputDevice().isPresent()) {
+						if (midi.getInputDevice() != null) {
 							showInfoMessage(Localization.getString(Strings.Info_Midi_Device_Connected, device));
 						}
 					} catch (NullPointerException e) {
diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioCapability.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioCapability.java
index 125317608174802768a73a3565090b5027fffc16..abb3d675c2bfb00e7fe6da7c1300dbae69070477 100644
--- a/PlayWallCore/src/de/tobias/playpad/audio/AudioCapability.java
+++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioCapability.java
@@ -1,8 +1,10 @@
 package de.tobias.playpad.audio;
 
+import de.tobias.playpad.pad.conntent.play.Equalizeable;
+
 public class AudioCapability {
 
-	public static final AudioCapability EQUALIZER = new AudioCapability("EQUALIZER", Equalizable.class);
+	public static final AudioCapability EQUALIZER = new AudioCapability("EQUALIZER", Equalizeable.class);
 	public static final AudioCapability SOUNDCARD = new AudioCapability("SOUNDCARD", Soundcardable.class);
 
 	private String name;
diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioEqualizeable.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioEqualizeable.java
new file mode 100644
index 0000000000000000000000000000000000000000..513ce84caf4d7c42fa8282501b8519495b14c3bc
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioEqualizeable.java
@@ -0,0 +1,10 @@
+package de.tobias.playpad.audio;
+
+import javafx.scene.media.AudioEqualizer;
+
+/**
+ * Created by tobias on 01.01.17.
+ */
+public interface AudioEqualizeable {
+	AudioEqualizer getAudioEqualizer();
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java
index 202af60899bcbf573ad2a1347867829dd60c338f..842572a4b4713dd59e7b8d08a72218363ef7628e 100644
--- a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java
+++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java
@@ -6,7 +6,7 @@ import de.tobias.playpad.pad.conntent.PadContent;
 import javafx.beans.property.ReadOnlyObjectProperty;
 import javafx.util.Duration;
 
-// Mögliche Interfaces: Equalizable
+// Mögliche Interfaces: Equalizeable
 
 public abstract class AudioHandler {
 
diff --git a/PlayWallCore/src/de/tobias/playpad/audio/Equalizable.java b/PlayWallCore/src/de/tobias/playpad/audio/Equalizable.java
deleted file mode 100644
index d00c9d6280301a9b8a24bafc90967d7ca236ffed..0000000000000000000000000000000000000000
--- a/PlayWallCore/src/de/tobias/playpad/audio/Equalizable.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.tobias.playpad.audio;
-
-import javafx.scene.media.AudioEqualizer;
-
-public interface Equalizable extends AudioFeature {
-
-	public AudioEqualizer getAudioEqualizer();
-}
diff --git a/PlayWallCore/src/de/tobias/playpad/audio/fade/Fading.java b/PlayWallCore/src/de/tobias/playpad/audio/Fade.java
similarity index 77%
rename from PlayWallCore/src/de/tobias/playpad/audio/fade/Fading.java
rename to PlayWallCore/src/de/tobias/playpad/audio/Fade.java
index e915ca85ec448be08fa8fc23c469a3bbbb121548..95ee85681dea7006a5fcba7dde21a221d8c5cc9c 100644
--- a/PlayWallCore/src/de/tobias/playpad/audio/fade/Fading.java
+++ b/PlayWallCore/src/de/tobias/playpad/audio/Fade.java
@@ -1,24 +1,24 @@
-package de.tobias.playpad.audio.fade;
+package de.tobias.playpad.audio;
 
-import de.tobias.playpad.pad.conntent.play.IVolume;
+import de.tobias.playpad.pad.conntent.play.FadeHandler;
 import javafx.animation.Transition;
 import javafx.util.Duration;
 
 /**
- * Fading utils.
+ * Fade utils.
  *
  * @author tobias
  * @since 6.0.0
  */
-public class Fading {
+public class Fade {
 
-	private IVolume iVolume;
+	private FadeHandler fadeHandler;
 	private Transition currentFadeTransition;
 
 	private double velocity = 1;
 
-	public Fading(IVolume iVolume) {
-		this.iVolume = iVolume;
+	public Fade(FadeHandler fadeHandler) {
+		this.fadeHandler = fadeHandler;
 	}
 
 	public void fadeIn(Duration duration) {
@@ -63,11 +63,11 @@ public class Fading {
 				double diff = Math.abs(to - from);
 				if (from < to) { // Fade In
 					double fade = fadeInVolumeMultiplier(frac, velocity);
-					iVolume.setFadeLevel(from + fade * diff);
+					fadeHandler.setFadeLevel(from + fade * diff);
 				} else { // Fade Out
 					double fade = fadeOutVolumeMultiplier(frac, velocity);
 					double newValue = to + fade * diff;
-					iVolume.setFadeLevel(newValue);
+					fadeHandler.setFadeLevel(newValue);
 				}
 			}
 		};
@@ -81,11 +81,11 @@ public class Fading {
 		currentFadeTransition.play();
 	}
 
-	protected double fadeInVolumeMultiplier(double time, double velocity) {
+	private double fadeInVolumeMultiplier(double time, double velocity) {
 		return Math.pow(Math.E, velocity * (time - 1)) * time;
 	}
 
-	protected double fadeOutVolumeMultiplier(double time, double velocity) {
+	private double fadeOutVolumeMultiplier(double time, double velocity) {
 		return Math.pow(Math.E, -velocity * time) * (1 - time);
 	}
 
diff --git a/PlayWallCore/src/de/tobias/playpad/audio/fade/Fadeable.java b/PlayWallCore/src/de/tobias/playpad/audio/fade/Fadeable.java
deleted file mode 100644
index 1f888187677aa19a144dc837997efabf7b837f42..0000000000000000000000000000000000000000
--- a/PlayWallCore/src/de/tobias/playpad/audio/fade/Fadeable.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package de.tobias.playpad.audio.fade;
-
-/**
- * Schnittstelle, die für das Faden die Lautstärke in der Audio Implementierung setzt.
- * 
- * @author tobias
- *
- * @since 6.0.0
- */
-public interface Fadeable {
-
-	public void setVolume(double vol);
-}
diff --git a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java
index 34868d79a351c4fcf102c23bdb58f598e4a6b240..2b81812afbba0a69cb375178e4f561503a6606e3 100644
--- a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java
+++ b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java
@@ -1,25 +1,16 @@
 package de.tobias.playpad.midi;
 
-import java.util.Optional;
-
-import javax.sound.midi.InvalidMidiDataException;
-import javax.sound.midi.MidiDevice;
-import javax.sound.midi.MidiDevice.Info;
-import javax.sound.midi.MidiMessage;
-import javax.sound.midi.MidiSystem;
-import javax.sound.midi.MidiUnavailableException;
-import javax.sound.midi.Receiver;
-import javax.sound.midi.ShortMessage;
-import javax.sound.midi.Transmitter;
-
 import de.tobias.playpad.action.mididevice.Device;
 import de.tobias.playpad.midi.device.DeviceRegistry;
 
-public class Midi {
+import javax.sound.midi.*;
+import javax.sound.midi.MidiDevice.Info;
+
+public class Midi implements AutoCloseable {
 
-	private Optional<MidiDevice> inputDevice = Optional.empty();
-	private Optional<MidiDevice> outputDevice = Optional.empty();
-	private Optional<Device> midiDeviceImpl = Optional.empty();
+	private MidiDevice inputDevice;
+	private MidiDevice outputDevice;
+	private Device midiDeviceImpl;
 
 	private MidiListener listener;
 
@@ -32,7 +23,8 @@ public class Midi {
 		return instance;
 	}
 
-	private Midi() {}
+	private Midi() {
+	}
 
 	public MidiListener getListener() {
 		return listener;
@@ -43,19 +35,18 @@ public class Midi {
 	}
 
 	public static Info[] getMidiDevices() {
-		MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();
-		return infos;
+		return MidiSystem.getMidiDeviceInfo();
 	}
 
-	public Optional<MidiDevice> getInputDevice() {
+	public MidiDevice getInputDevice() {
 		return inputDevice;
 	}
 
-	public Optional<MidiDevice> getOutputDevice() {
+	public MidiDevice getOutputDevice() {
 		return outputDevice;
 	}
 
-	public Optional<Device> getMidiDevice() {
+	public Device getMidiDevice() {
 		return midiDeviceImpl;
 	}
 
@@ -80,69 +71,56 @@ public class Midi {
 		setMidiDevice(input, output);
 	}
 
-	public void setMidiDevice(MidiDevice.Info input, MidiDevice.Info output) throws MidiUnavailableException, IllegalArgumentException {
-		MidiDevice inputDevice = MidiSystem.getMidiDevice(input);
-		MidiDevice outputDevice = MidiSystem.getMidiDevice(output);
+	private void setMidiDevice(Info input, Info output) throws MidiUnavailableException, IllegalArgumentException {
+		MidiDevice newInputDevice = MidiSystem.getMidiDevice(input);
+		MidiDevice newOutputDevice = MidiSystem.getMidiDevice(output);
 
-		if (this.inputDevice.isPresent() && this.outputDevice.isPresent())
-			if (this.inputDevice.get() == inputDevice && this.outputDevice.get() == outputDevice)
-				return;
+		if (newInputDevice == null && newOutputDevice == null) {
+			return;
+		}
 
-		this.inputDevice.ifPresent((device) ->
-		{
-			if (device.isOpen()) {
-				device.close();
-			}
-		});
-		this.outputDevice.ifPresent((device) ->
-		{
-			if (device.isOpen()) {
-				device.close();
-			}
-		});
+		if (this.inputDevice == newInputDevice && this.outputDevice == newOutputDevice) {
+			return;
+		}
 
-		if (inputDevice != null && outputDevice != null) {
-			this.inputDevice = Optional.of(inputDevice);
-			this.outputDevice = Optional.of(outputDevice);
+		// Close Old Devices
+		close();
 
-			// Hier wird die DeviceImpl aufgerufen
-			try {
-				this.midiDeviceImpl = Optional.of(DeviceRegistry.getFactoryInstance().getDevice(input.getName()));
-			} catch (InstantiationException | IllegalAccessException e) {
-				e.printStackTrace();
-				this.midiDeviceImpl = Optional.empty();
-			}
+		this.inputDevice = newInputDevice;
+		this.outputDevice = newOutputDevice;
 
-			setupMidiDevice();
-		} else {
-			this.inputDevice = Optional.empty();
-			this.outputDevice = Optional.empty();
-			this.midiDeviceImpl = Optional.empty();
+		// Hier wird die DeviceImpl aufgerufen
+		try {
+			this.midiDeviceImpl = DeviceRegistry.getFactoryInstance().getDevice(input.getName());
+		} catch (InstantiationException | IllegalAccessException e) {
+			e.printStackTrace();
 		}
+		setupMidiDevice();
 	}
 
+
 	private void setupMidiDevice() throws MidiUnavailableException {
-		if (inputDevice.isPresent()) {
-			Transmitter trans = inputDevice.get().getTransmitter();
+		if (inputDevice != null) {
+			Transmitter trans = inputDevice.getTransmitter();
 			trans.setReceiver(new MidiInputReceiver());
 
 			// Belegt das Midi Gerät und macht es nutzbar
-			inputDevice.get().open();
-			if (outputDevice.isPresent()) {
-				outputDevice.get().open();
+			inputDevice.open();
+			if (outputDevice != null) {
+				outputDevice.open();
 			}
 		}
 	}
 
 	public void close() throws MidiUnavailableException {
 		try {
-			if (inputDevice.isPresent()) {
-				inputDevice.get().getTransmitter().close();
-				inputDevice.get().close();
+			if (inputDevice != null) {
+				inputDevice.getTransmitter().close();
+				inputDevice.close();
 			}
-			if (outputDevice.isPresent()) {
-				outputDevice.get().getReceiver().close();
-				outputDevice.get().close();
+			if (outputDevice != null) {
+				outputDevice.getReceiver().close();
+				outputDevice.close();
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -150,11 +128,11 @@ public class Midi {
 	}
 
 	public void sendMessage(int midiCommand, int midiKey, int midiVelocity) throws MidiUnavailableException, InvalidMidiDataException {
-		if (outputDevice.isPresent()) {
+		if (outputDevice != null) {
 			if (midiCommand != 0) {
 				ShortMessage message = new ShortMessage(midiCommand, midiKey, midiVelocity);
 				// System.out.println("Send: " + Arrays.toString(message.getMessage()));
-				outputDevice.get().getReceiver().send(message, -1);
+				outputDevice.getReceiver().send(message, -1);
 			}
 		}
 	}
@@ -171,20 +149,18 @@ public class Midi {
 		}
 
 		@Override
-		public void close() {}
+		public void close() {
+		}
+
 	}
 
 	public boolean isOpen() {
-		if (inputDevice.isPresent() && outputDevice.isPresent()) {
-			return inputDevice.get().isOpen() && outputDevice.get().isOpen();
-		} else {
-			return false;
-		}
+		return inputDevice != null && outputDevice != null && inputDevice.isOpen() && outputDevice.isOpen();
 	}
 
 	public void sendClearCommand() throws InvalidMidiDataException, MidiUnavailableException {
-		if (midiDeviceImpl.isPresent()) {
-			midiDeviceImpl.get().clearFeedback();
+		if (midiDeviceImpl != null) {
+			midiDeviceImpl.clearFeedback();
 		}
 	}
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Equalizeable.java b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Equalizeable.java
new file mode 100644
index 0000000000000000000000000000000000000000..354d9e7ee910936fd369711ef4cfbc5f5f2a4ce4
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Equalizeable.java
@@ -0,0 +1,9 @@
+package de.tobias.playpad.pad.conntent.play;
+
+import de.tobias.playpad.audio.AudioFeature;
+import javafx.scene.media.AudioEqualizer;
+
+public interface Equalizeable extends AudioFeature {
+
+	AudioEqualizer getAudioEqualizer();
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/IVolume.java b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/FadeHandler.java
similarity index 70%
rename from PlayWallCore/src/de/tobias/playpad/pad/conntent/play/IVolume.java
rename to PlayWallCore/src/de/tobias/playpad/pad/conntent/play/FadeHandler.java
index f681dd20a0b8d43ef54e6554c3cbcd0d15133aab..82224d7e7bc547c0154151fc5b0f3f8a31058a1f 100644
--- a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/IVolume.java
+++ b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/FadeHandler.java
@@ -7,7 +7,7 @@ package de.tobias.playpad.pad.conntent.play;
  * 
  * @since 6.0.0
  */
-public interface IVolume {
+public interface FadeHandler {
 
-	public void setFadeLevel(double level);
+	void setFadeLevel(double level);
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Fadeable.java b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Fadeable.java
index 5fc99ff4392729b7922e0e5c734abfc6462c0e7b..32a59852e22934baf51e568cd65ed7469d8b2c67 100644
--- a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Fadeable.java
+++ b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Fadeable.java
@@ -3,9 +3,9 @@ package de.tobias.playpad.pad.conntent.play;
 
 public interface Fadeable {
 
-	public void fadeIn();
-	
-	public void fadeOut(Runnable runnable);
+	void fadeIn();
+
+	void fadeOut(Runnable runnable);
 	
-	public boolean isFading();
+	boolean getFade();
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/plugin/AdvancedPlugin.java b/PlayWallCore/src/de/tobias/playpad/plugin/AdvancedPlugin.java
index 53ec30f551d93832e2605299af88c1e9820c011e..33085c617914d081d1cab3bd209cb7c902a0b7b3 100644
--- a/PlayWallCore/src/de/tobias/playpad/plugin/AdvancedPlugin.java
+++ b/PlayWallCore/src/de/tobias/playpad/plugin/AdvancedPlugin.java
@@ -10,7 +10,7 @@ import de.tobias.updater.client.Updatable;
  */
 public interface AdvancedPlugin extends net.xeoh.plugins.base.Plugin {
 
-	public Module getModule();
+	Module getModule();
 
-	public Updatable getUpdatable();
+	Updatable getUpdatable();
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/Fade.java b/PlayWallCore/src/de/tobias/playpad/settings/Fade.java
index 0a30c6032cd1fbd883998fedf3b833fc64b96202..20c80b3f97448380faef1d39f28b295b16f7418c 100644
--- a/PlayWallCore/src/de/tobias/playpad/settings/Fade.java
+++ b/PlayWallCore/src/de/tobias/playpad/settings/Fade.java
@@ -6,7 +6,7 @@ import de.tobias.playpad.pad.PadSettings;
 import javafx.util.Duration;
 
 /**
- * Einstellungen zum Fading, zusammengefasst in dieser Klasse.
+ * Einstellungen zum Fade, zusammengefasst in dieser Klasse.
  * 
  * @author tobias
  * 
@@ -27,14 +27,14 @@ public class Fade {
 	private boolean fadeOutStop;
 
 	/**
-	 * Erstellt ein neues Fading mit den Default Werten. (Fade Dauer: 0 sec)
+	 * Erstellt ein neues Fade mit den Default Werten. (Fade Dauer: 0 sec)
 	 */
 	public Fade() {
 		this(Duration.ZERO, Duration.ZERO);
 	}
 
 	/**
-	 * Erstellt einen neues Fading mit Custom Zeiten und Default Einstellungen für Play, Pause, Stop.
+	 * Erstellt einen neues Fade mit Custom Zeiten und Default Einstellungen für Play, Pause, Stop.
 	 * 
 	 * @param fadeIn
 	 *            Fade In Dauer
@@ -46,7 +46,7 @@ public class Fade {
 	}
 
 	/**
-	 * Erstellt ein Fading mit Custom Werten.
+	 * Erstellt ein Fade mit Custom Werten.
 	 * 
 	 * @param fadeIn
 	 *            Fade In Dauer
diff --git a/PluginEqualizer/src/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java b/PluginEqualizer/src/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java
index e45b66e579f232a0f788d4b11fb0403642f60a95..abcf7d80b925ceef1921994421bddbd1bc835314 100644
--- a/PluginEqualizer/src/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java
+++ b/PluginEqualizer/src/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java
@@ -6,7 +6,7 @@ import java.util.ResourceBundle;
 import org.dom4j.DocumentException;
 
 import de.tobias.playpad.PlayPadPlugin;
-import de.tobias.playpad.audio.Equalizable;
+import de.tobias.playpad.pad.conntent.play.Equalizeable;
 import de.tobias.playpad.equalizerplugin.main.Equalizer;
 import de.tobias.playpad.equalizerplugin.main.EqualizerPlugin;
 import de.tobias.playpad.pad.Pad;
@@ -91,11 +91,11 @@ public class EqualizerPluginImpl implements EqualizerPlugin, WindowListener<IMai
 	@Override
 	public void onPlay(Pad pad) {
 		PadContent content = pad.getContent();
-		if (content != null && content instanceof Equalizable) {
+		if (content != null && content instanceof Equalizeable) {
 
 			// Equalizer
-			Equalizable equalizable = (Equalizable) content;
-			AudioEqualizer audioEqualizer = equalizable.getAudioEqualizer();
+			Equalizeable equalizeable = (Equalizeable) content;
+			AudioEqualizer audioEqualizer = equalizeable.getAudioEqualizer();
 			if (audioEqualizer != null) {
 				for (EqualizerBand band : audioEqualizer.getBands()) {
 					band.gainProperty().bind(Equalizer.getInstance().gainProperty((int) band.getBandwidth()));
@@ -108,11 +108,11 @@ public class EqualizerPluginImpl implements EqualizerPlugin, WindowListener<IMai
 	@Override
 	public void onStop(Pad pad) {
 		PadContent content = pad.getContent();
-		if (content != null && content instanceof Equalizable) {
+		if (content != null && content instanceof Equalizeable) {
 
 			// Equalizer
-			Equalizable equalizable = (Equalizable) content;
-			AudioEqualizer audioEqualizer = equalizable.getAudioEqualizer();
+			Equalizeable equalizeable = (Equalizeable) content;
+			AudioEqualizer audioEqualizer = equalizeable.getAudioEqualizer();
 			if (audioEqualizer != null) {
 				for (EqualizerBand band : audioEqualizer.getBands()) {
 					band.gainProperty().bind(Equalizer.getInstance().gainProperty((int) band.getBandwidth()));