From 58ddcbb31f6f24e3bee30837c22b6d8cb19e4751 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Sun, 7 Jul 2019 14:33:50 +0200
Subject: [PATCH] Refactor playpad interface

---
 .../java/de/tobias/playpad/PlayPadImpl.java   |  4 +--
 .../java/de/tobias/playpad/PlayPadMain.java   |  4 +--
 .../playpad/RegistryCollectionImpl.java       |  2 +-
 .../playpad/design/ModernStyleableImpl.java   |  2 +-
 .../DesktopMenuToolbarViewController.java     |  6 ++--
 .../desktop/DesktopPageEditButtonView.java    |  4 +--
 .../desktop/pad/DesktopPadDragListener.java   |  8 ++---
 .../layout/desktop/pad/DesktopPadView.java    |  2 +-
 .../desktop/pad/DesktopPadViewController.java |  8 ++---
 .../touch/TouchMenuToolbarViewController.java |  2 +-
 .../layout/touch/pad/TouchPadView.java        |  2 +-
 .../playpad/pad/content/AudioContent.java     |  4 +--
 .../view/MapperListViewControllerImpl.java    |  4 +--
 .../viewcontroller/AuthViewController.java    |  2 +-
 .../playpad/viewcontroller/LaunchDialog.java  |  2 +-
 .../actions/CartActionTypeViewController.java |  2 +-
 .../viewcontroller/dialog/AboutDialog.java    |  2 +-
 .../dialog/ModernPluginViewController.java    |  4 +--
 .../dialog/PathMatchDialog.java               |  4 +--
 .../dialog/PlayoutLogViewController.java      |  6 ++--
 .../viewcontroller/dialog/PrintDialog.java    |  2 +-
 .../dialog/ProfileViewController.java         |  2 +-
 .../dialog/profile/NewProfileDialog.java      |  2 +-
 .../dialog/profile/ProfileChooseDialog.java   |  2 +-
 .../dialog/project/ProjectExportDialog.java   |  2 +-
 .../dialog/project/ProjectImportDialog.java   |  2 +-
 .../dialog/project/ProjectManagerDialog.java  |  2 +-
 .../dialog/project/ProjectNewDialog.java      |  2 +-
 .../main/BasicMenuToolbarViewController.java  |  2 +-
 .../main/MainViewController.java              |  8 ++---
 .../global/GlobalSettingsViewController.java  |  6 ++--
 .../option/global/KeysTabViewController.java  | 10 +++----
 .../global/UpdateTabViewController.java       | 10 +++----
 .../pad/DesignPadTabViewController.java       |  4 +--
 .../option/pad/PadSettingsViewController.java |  4 +--
 .../trigger/TriggerPointViewController.java   |  6 ++--
 .../profile/AudioTabViewController.java       |  4 +--
 .../profile/GeneralTabViewController.java     |  4 +--
 .../profile/MappingTabViewController.java     |  2 +-
 .../ProfileSettingsViewController.java        |  4 +--
 .../ProjectSettingsViewController.java        |  2 +-
 .../playpad/audio/TinyAudioHandler.java       |  2 +-
 .../TinySoundSettingsViewController.java      |  2 +-
 .../java/de/tobias/playpad/PlayPadPlugin.java | 19 +++++++-----
 ...egistryCollection.java => Registries.java} |  2 +-
 .../playpad/action/ActionSerializer.java      |  4 +--
 .../de/tobias/playpad/action/Mapping.java     | 10 +++----
 .../de/tobias/playpad/action/MappingList.java |  2 +-
 .../action/mapper/MapperSerializer.java       |  2 +-
 .../playpad/audio/AudioHandlerFactory.java    |  4 +--
 .../de/tobias/playpad/design/Styleable.java   |  2 +-
 .../main/java/de/tobias/playpad/pad/Pad.java  |  2 +-
 .../de/tobias/playpad/pad/PadSerializer.java  |  2 +-
 .../pad/content/PadContentRegistry.java       |  2 +-
 .../listener/PadStatusControlListener.java    |  4 +--
 .../trigger/PadTriggerDurationListener.java   |  2 +-
 .../trigger/PadTriggerStatusListener.java     |  2 +-
 .../playpad/plugin/ModernPluginManager.java   |  2 +-
 .../de/tobias/playpad/profile/Profile.java    |  6 ++--
 .../playpad/profile/ProfileSettings.java      |  4 +--
 .../tobias/playpad/server/ServerHandler.java  |  2 --
 .../downstream/pad/PadAddListener.java        |  2 +-
 .../downstream/pad/PadClearListener.java      |  2 +-
 .../downstream/pad/PadMoveListener.java       |  4 +--
 .../downstream/pad/PadRemoveListener.java     |  2 +-
 .../downstream/pad/PadUpdateListener.java     |  2 +-
 .../pad/settings/PadSettingsAddListener.java  |  2 +-
 .../settings/PadSettingsUpdateListener.java   |  2 +-
 .../settings/design/DesignAddListener.java    |  2 +-
 .../settings/design/DesignUpdateListener.java |  4 +--
 .../downstream/page/PageAddListener.java      |  2 +-
 .../downstream/page/PageRemoveListener.java   |  2 +-
 .../downstream/page/PageUpdateListener.java   |  2 +-
 .../downstream/path/PathAddListener.java      |  2 +-
 .../downstream/path/PathRemoveListener.java   |  2 +-
 .../de/tobias/playpad/tigger/Trigger.java     |  2 +-
 .../playpad/awakeplugin/AwakePluginImpl.java  | 29 +++++++++----------
 .../impl/EqualizerPluginImpl.java             |  4 +--
 .../impl/EqualizerViewController.java         |  4 +--
 .../main/impl/MediaPluginImpl.java            |  8 ++---
 .../main/impl/MediaViewController.java        |  2 +-
 .../plugin/loader/MacAudioImplLoader.scala    |  2 +-
 .../loader/WindowsAudioImplLoader.scala       |  2 +-
 83 files changed, 159 insertions(+), 159 deletions(-)
 rename PlayWallCore/src/main/java/de/tobias/playpad/{RegistryCollection.java => Registries.java} (96%)

diff --git a/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
index c39a62b5..1d1bb173 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
@@ -125,7 +125,7 @@ public class PlayPadImpl implements PlayPad {
 	@Override
 	public void shutdown() {
 		// Shutdown components
-		PlayPadPlugin.getRegistryCollection().getAudioHandlers().getComponents().forEach(i ->
+		PlayPadPlugin.getRegistries().getAudioHandlers().getComponents().forEach(i ->
 		{
 			if (i instanceof AutoCloseable) {
 				try {
@@ -216,7 +216,7 @@ public class PlayPadImpl implements PlayPad {
 
 		try {
 			// Load Components
-			RegistryCollection registryCollection = PlayPadPlugin.getRegistryCollection();
+			Registries registryCollection = PlayPadPlugin.getRegistries();
 
 			registryCollection.getActions().loadComponentsFromFile("components/Actions.xml", module, resourceBundle);
 			registryCollection.getAudioHandlers().loadComponentsFromFile("components/AudioHandler.xml", module, resourceBundle);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/PlayPadMain.java b/PlayWall/src/main/java/de/tobias/playpad/PlayPadMain.java
index 9a505656..e18eb144 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/PlayPadMain.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/PlayPadMain.java
@@ -136,7 +136,7 @@ public class PlayPadMain extends Application implements LocalizationDelegate {
 
 		// Set Factory Implementations
 		impl = new PlayPadImpl(globalSettings, getParameters());
-		PlayPadPlugin.setImplementation(impl);
+		PlayPadPlugin.setInstance(impl);
 		PlayPadPlugin.setStyleable(new ModernStyleableImpl());
 		PlayPadPlugin.setRegistryCollection(new RegistryCollectionImpl());
 		PlayPadPlugin.setServerHandler(new ServerHandlerImpl());
@@ -191,7 +191,7 @@ public class PlayPadMain extends Application implements LocalizationDelegate {
 				e.printStackTrace();
 			}
 
-			if (PlayPadPlugin.getImplementation().getGlobalSettings().isOpenLastDocument()) {
+			if (PlayPadPlugin.getInstance().getGlobalSettings().isOpenLastDocument()) {
 				UUID value = (UUID) ApplicationUtils.getApplication().getUserDefaults().getData("project");
 				if (value != null) {
 					ProjectLoader loader = new ProjectLoader(ProjectReferenceManager.getProject(value));
diff --git a/PlayWall/src/main/java/de/tobias/playpad/RegistryCollectionImpl.java b/PlayWall/src/main/java/de/tobias/playpad/RegistryCollectionImpl.java
index 8ce9197e..debfde8f 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/RegistryCollectionImpl.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/RegistryCollectionImpl.java
@@ -12,7 +12,7 @@ import de.tobias.playpad.registry.Registry;
 import de.tobias.playpad.tigger.TriggerItemFactory;
 import de.tobias.playpad.view.main.MainLayoutFactory;
 
-public class RegistryCollectionImpl implements RegistryCollection {
+public class RegistryCollectionImpl implements Registries {
 
 	private Registry<ActionFactory> actionRegistry;
 	private AudioRegistry audioHandlerRegistry;
diff --git a/PlayWall/src/main/java/de/tobias/playpad/design/ModernStyleableImpl.java b/PlayWall/src/main/java/de/tobias/playpad/design/ModernStyleableImpl.java
index 413bd152..c3170a59 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/design/ModernStyleableImpl.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/design/ModernStyleableImpl.java
@@ -6,7 +6,7 @@ import javafx.stage.Stage;
 public class ModernStyleableImpl implements Styleable {
 
 	@Override
-	public void applyStyleSheet(Stage stage) {
+	public void applyStyle(Stage stage) {
 		PlayPadMain.getProgramInstance().getModernDesign().global().applyStyleSheet(stage);
 	}
 }
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
index 5b048cc3..c0f010ae 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
@@ -256,7 +256,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 			playButton.setSelected(true);
 		} else if (newValue == DesktopEditMode.DRAG) {
 			// Wenn Live Mode on, dann zum alten Wert zurück
-			GlobalSettings settings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			GlobalSettings settings = PlayPadPlugin.getInstance().getGlobalSettings();
 			if (settings.isLiveMode() && settings.isLiveModeDrag() && openProject.getActivePlayers() != 0) {
 				connect.setEditMode(oldValue);
 				return;
@@ -297,7 +297,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 
 	private void initLayoutMenu() {
 		ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
-		Registry<MainLayoutFactory> mainLayouts = PlayPadPlugin.getRegistryCollection().getMainLayouts();
+		Registry<MainLayoutFactory> mainLayouts = PlayPadPlugin.getRegistries().getMainLayouts();
 
 		int index = 1; // Für Tastenkombination
 		for (MainLayoutFactory connect : mainLayouts.getComponents()) {
@@ -661,7 +661,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	void profileSettingsHandler(ActionEvent event) {
 		Midi midi = Midi.getInstance();
 		Project currentProject = PlayPadMain.getProgramInstance().getCurrentProject();
-		GlobalSettings settings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		GlobalSettings settings = PlayPadPlugin.getInstance().getGlobalSettings();
 		if (settings.isLiveMode() && settings.isLiveModeSettings() && currentProject.getActivePlayers() > 0) {
 			return;
 		}
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopPageEditButtonView.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopPageEditButtonView.java
index ed22b64f..afaf1bd5 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopPageEditButtonView.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopPageEditButtonView.java
@@ -79,7 +79,7 @@ public class DesktopPageEditButtonView extends HBox implements EventHandler<Acti
 				project.setPage(rightIndex, leftPage);
 				project.setPage(leftIndex, page);
 
-				IMainViewController controller = PlayPadPlugin.getImplementation().getMainViewController();
+				IMainViewController controller = PlayPadPlugin.getInstance().getMainViewController();
 				if (controller.getMenuToolbarController() != null)
 					controller.getMenuToolbarController().initPageButtons();
 				controller.showPage(leftIndex);
@@ -96,7 +96,7 @@ public class DesktopPageEditButtonView extends HBox implements EventHandler<Acti
 				project.setPage(leftIndex, rightPage);
 				project.setPage(rightIndex, page);
 
-				IMainViewController controller = PlayPadPlugin.getImplementation().getMainViewController();
+				IMainViewController controller = PlayPadPlugin.getInstance().getMainViewController();
 				if (controller.getMenuToolbarController() != null)
 					controller.getMenuToolbarController().initPageButtons();
 				controller.showPage(rightIndex);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
index 7bee6bb6..eac9e7ad 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
@@ -90,7 +90,7 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 
 				// Build In Filesupport
 				try {
-					PadContentRegistry registry = PlayPadPlugin.getRegistryCollection().getPadContents();
+					PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents();
 					Set<PadContentFactory> connects = registry.getPadContentConnectsForFile(file.toPath());
 
 					if (!connects.isEmpty()) {
@@ -113,7 +113,7 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 			PadIndex index = (PadIndex) event.getDragboard().getContent(dataFormat); // TODO Check cast
 			if (!currentPad.getPadIndex().equals(index)) {
 
-				Collection<PadDragMode> connects = PlayPadPlugin.getRegistryCollection().getDragModes().getComponents();
+				Collection<PadDragMode> connects = PlayPadPlugin.getRegistries().getDragModes().getComponents();
 
 				if (!connects.isEmpty()) {
 					if (padHud == null) {
@@ -179,7 +179,7 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 				padHud.hide();
 
 				// Update der Pad Views nach dem DnD
-				IMainViewController mainViewController = PlayPadPlugin.getImplementation().getMainViewController();
+				IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController();
 				mainViewController.showPage(mainViewController.getPage());
 
 				if (project.getProjectReference().isSync()) {
@@ -224,7 +224,7 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 
 	// Utils
 	private boolean checkLiveMode() {
-		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 		if (currentPad.getProject() != null) {
 			if (globalSettings.isLiveMode() && globalSettings.isLiveModeFile() && currentPad.getProject().getActivePlayers() > 0) {
 				return true;
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java
index 3e535f25..e3e4b776 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java
@@ -148,7 +148,7 @@ public class DesktopPadView implements IPadView {
 			PadContent content = pad.getContent();
 			if (content != null) {
 				try {
-					PadContentRegistry registry = PlayPadPlugin.getRegistryCollection().getPadContents();
+					PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents();
 					PadContentFactory connect = registry.getFactory(content.getType());
 
 					previewContent = connect.getPadContentPreview(pad, preview);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java
index 363cd49c..b66827b8 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java
@@ -196,7 +196,7 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 	}
 
 	private void onNew(ActionEvent event) throws NoSuchComponentException {
-		GlobalSettings settings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		GlobalSettings settings = PlayPadPlugin.getInstance().getGlobalSettings();
 		if (pad.getProject() != null) {
 			if (settings.isLiveMode() && settings.isLiveModeFile() && pad.getProject().getActivePlayers() > 0) {
 				return;
@@ -204,7 +204,7 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 		}
 
 		FileChooser chooser = new FileChooser();
-		PadContentRegistry registry = PlayPadPlugin.getRegistryCollection().getPadContents();
+		PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents();
 
 		// File Extension
 		ExtensionFilter extensionFilter = new ExtensionFilter(Localization.getString(Strings.File_Filter_Media),
@@ -256,8 +256,8 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 	}
 
 	private void onSettings() {
-		GlobalSettings settings = PlayPadPlugin.getImplementation().getGlobalSettings();
-		IMainViewController mvc = PlayPadPlugin.getImplementation().getMainViewController();
+		GlobalSettings settings = PlayPadPlugin.getInstance().getGlobalSettings();
+		IMainViewController mvc = PlayPadPlugin.getInstance().getMainViewController();
 
 		if (mvc != null) {
 			if (pad.getProject() != null) {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
index 443713d7..c44b098a 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
@@ -152,7 +152,7 @@ public class TouchMenuToolbarViewController extends BasicMenuToolbarViewControll
 	// Event Handler
 	@FXML
 	void closeMenuItemHandler(ActionEvent event) {
-		MainLayoutFactory defaultLayout = PlayPadPlugin.getRegistryCollection().getMainLayouts().getDefault();
+		MainLayoutFactory defaultLayout = PlayPadPlugin.getRegistries().getMainLayouts().getDefault();
 
 		Profile.currentProfile().getProfileSettings().setMainLayoutType(defaultLayout.getType());
 		mainViewController.setMainLayout(defaultLayout);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/pad/TouchPadView.java b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/pad/TouchPadView.java
index 3705d2e0..f5cbbefc 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/pad/TouchPadView.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/pad/TouchPadView.java
@@ -123,7 +123,7 @@ public class TouchPadView implements IPadView {
 			PadContent content = pad.getContent();
 			if (content != null) {
 				try {
-					PadContentFactory connect = PlayPadPlugin.getRegistryCollection().getPadContents().getFactory(content.getType());
+					PadContentFactory connect = PlayPadPlugin.getRegistries().getPadContents().getFactory(content.getType());
 					previewContent = connect.getPadContentPreview(pad, preview);
 					Node node = previewContent.getNode();
 
diff --git a/PlayWall/src/main/java/de/tobias/playpad/pad/content/AudioContent.java b/PlayWall/src/main/java/de/tobias/playpad/pad/content/AudioContent.java
index a3b74901..7d1066bc 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/pad/content/AudioContent.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/pad/content/AudioContent.java
@@ -174,7 +174,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 	@Override
 	public void loadMedia() {
 		// init audio implementation
-		AudioRegistry audioRegistry = PlayPadPlugin.getRegistryCollection().getAudioHandlers();
+		AudioRegistry audioRegistry = PlayPadPlugin.getRegistries().getAudioHandlers();
 		audioHandler = audioRegistry.getCurrentAudioHandler().createAudioHandler(this);
 
 		Path path = getPad().getPath();
@@ -231,7 +231,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 	public PadContent clone() throws CloneNotSupportedException {
 		AudioContent clone = (AudioContent) super.clone();
 
-		AudioRegistry audioRegistry = PlayPadPlugin.getRegistryCollection().getAudioHandlers();
+		AudioRegistry audioRegistry = PlayPadPlugin.getRegistries().getAudioHandlers();
 		clone.audioHandler = audioRegistry.getCurrentAudioHandler().createAudioHandler(this);
 
 		clone.durationProperty = new SimpleObjectProperty<>();
diff --git a/PlayWall/src/main/java/de/tobias/playpad/view/MapperListViewControllerImpl.java b/PlayWall/src/main/java/de/tobias/playpad/view/MapperListViewControllerImpl.java
index 6c80453a..6cea7473 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/view/MapperListViewControllerImpl.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/view/MapperListViewControllerImpl.java
@@ -58,7 +58,7 @@ public class MapperListViewControllerImpl extends BaseMapperListViewController {
 		headline.setUnderline(true);
 		root.getChildren().addAll(headline, mappingView, addMappingBox);
 
-		Registry<MapperFactory> registry = PlayPadPlugin.getRegistryCollection().getMappers();
+		Registry<MapperFactory> registry = PlayPadPlugin.getRegistries().getMappers();
 		Set<String> types = registry.getTypes();
 		types.stream().sorted().forEach(item ->
 		{
@@ -97,7 +97,7 @@ public class MapperListViewControllerImpl extends BaseMapperListViewController {
 	}
 
 	private MapperViewController onAddMapper(String type) throws NoSuchComponentException {
-		Registry<MapperFactory> registry = PlayPadPlugin.getRegistryCollection().getMappers();
+		Registry<MapperFactory> registry = PlayPadPlugin.getRegistries().getMappers();
 
 		Mapper mapper = registry.getFactory(type).createNewMapper();
 		action.addMapper(mapper);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/AuthViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/AuthViewController.java
index 2d93258a..7bd7fa21 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/AuthViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/AuthViewController.java
@@ -57,7 +57,7 @@ public class AuthViewController extends NVC {
 		stage.setHeight(250);
 		stage.setTitle(Localization.getString(Strings.UI_Dialog_Login_Title));
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	@FXML
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/LaunchDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/LaunchDialog.java
index de321b07..f0433d76 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/LaunchDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/LaunchDialog.java
@@ -136,7 +136,7 @@ public class LaunchDialog extends NVC implements ChangeListener<ConnectionState>
 
 	@Override
 	public void initStage(Stage stage) {
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 
 		stage.setTitle(getString(Strings.UI_Dialog_Launch_Title));
 		PlayPadMain.stageIcon.ifPresent(stage.getIcons()::add);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionTypeViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionTypeViewController.java
index c886229b..dca322dd 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionTypeViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionTypeViewController.java
@@ -95,7 +95,7 @@ public class CartActionTypeViewController extends NVC {
 						int currentY = data[1];
 
 						try {
-							ActionFactory actionFactory = PlayPadPlugin.getRegistryCollection().getActions().getFactory(CartActionFactory.class);
+							ActionFactory actionFactory = PlayPadPlugin.getRegistries().getActions().getFactory(CartActionFactory.class);
 
 							List<CartAction> cartActions = mapping.getActions(actionFactory);
 							for (CartAction action : cartActions) {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/AboutDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/AboutDialog.java
index 97c28dd8..56652839 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/AboutDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/AboutDialog.java
@@ -122,6 +122,6 @@ public class AboutDialog extends NVC {
 
 		stage.getScene().setFill(Color.TRANSPARENT);
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 }
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/ModernPluginViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/ModernPluginViewController.java
index 65addd58..f30ec111 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/ModernPluginViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/ModernPluginViewController.java
@@ -99,7 +99,7 @@ public class ModernPluginViewController extends NVC implements ChangeListener<Mo
 		stage.setTitle(Localization.getString(Strings.UI_Dialog_Plugins_Title));
 
 		if (Profile.currentProfile() != null) {
-			PlayPadPlugin.styleable().applyStyleSheet(stage);
+			PlayPadPlugin.styleable().applyStyle(stage);
 		} else {
 			// Add Stylesheet manuel
 			stage.getScene().getStylesheets().add("style/style.css");
@@ -119,7 +119,7 @@ public class ModernPluginViewController extends NVC implements ChangeListener<Mo
 		if (plugin != null) {
 			if (!ModernPluginManager.getInstance().isActive(plugin)) {
 				try {
-					GlobalSettings settings = PlayPadPlugin.getImplementation().getGlobalSettings();
+					GlobalSettings settings = PlayPadPlugin.getInstance().getGlobalSettings();
 					PlayPadPlugin.getServerHandler().getServer().loadPlugin(plugin, settings.getUpdateChannel());
 					ModernPluginManager.getInstance().loadPlugin(plugin);
 				} catch (IOException e) {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java
index b1b53e5e..870eb785 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java
@@ -190,7 +190,7 @@ public class PathMatchDialog extends NVC {
 		stage.setMaxHeight(600);
 		stage.setTitle(Localization.getString(Strings.UI_Dialog_NotFound_Title));
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	public void showAndWait() {
@@ -220,7 +220,7 @@ public class PathMatchDialog extends NVC {
 
 	public void showFileChooser(TempMediaPath item) {
 		FileChooser chooser = new FileChooser();
-		PadContentRegistry registry = PlayPadPlugin.getRegistryCollection().getPadContents();
+		PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents();
 
 		// File Extension
 		FileChooser.ExtensionFilter extensionFilter = new FileChooser.ExtensionFilter(Localization.getString(Strings.File_Filter_Media),
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PlayoutLogViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PlayoutLogViewController.java
index 0b77b931..e43d028a 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PlayoutLogViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PlayoutLogViewController.java
@@ -83,19 +83,19 @@ public class PlayoutLogViewController extends NVC {
 
 		stage.initModality(Modality.WINDOW_MODAL);
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	@FXML
 	private void startButtonHandler(ActionEvent event) {
-		final MenuToolbarViewController controller = PlayPadPlugin.getImplementation().getMainViewController().getMenuToolbarController();
+		final MenuToolbarViewController controller = PlayPadPlugin.getInstance().getMainViewController().getMenuToolbarController();
 
 		if (LogSeasons.getInstance() == null) { // Start
 			if (nameTextField.getText().isEmpty()) {
 				return;
 			}
 
-			final Project currentProject = PlayPadPlugin.getImplementation().getCurrentProject();
+			final Project currentProject = PlayPadPlugin.getInstance().getCurrentProject();
 			final ProjectSettings settings = currentProject.getSettings();
 
 			LogSeason logSeason = LogSeasons.createLogSeason(nameTextField.getText(), settings.getColumns(), settings.getRows());
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PrintDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PrintDialog.java
index 1e87d814..89726f98 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PrintDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PrintDialog.java
@@ -71,7 +71,7 @@ public class PrintDialog extends NVC {
 		stage.setMinHeight(400);
 		stage.setTitle(Localization.getString(Strings.UI_Dialog_Print_Title));
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	private void createPreview(int pageIndex) {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/ProfileViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/ProfileViewController.java
index ac09fb0e..e85315db 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/ProfileViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/ProfileViewController.java
@@ -99,7 +99,7 @@ public class ProfileViewController extends NVC implements ChangeListener<Profile
 
 		stage.initModality(Modality.WINDOW_MODAL);
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	@FXML
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/profile/NewProfileDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/profile/NewProfileDialog.java
index 8af44ae7..356581a7 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/profile/NewProfileDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/profile/NewProfileDialog.java
@@ -65,7 +65,7 @@ public class NewProfileDialog extends NVC {
 	@Override
 	public void initStage(Stage stage) {
 		PlayPadMain.stageIcon.ifPresent(stage.getIcons()::add);
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 		stage.initModality(Modality.WINDOW_MODAL);
 
 		stage.setTitle(Localization.getString(Strings.UI_Dialog_NewProfile_Title));
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/profile/ProfileChooseDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/profile/ProfileChooseDialog.java
index af15a456..0c9f444b 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/profile/ProfileChooseDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/profile/ProfileChooseDialog.java
@@ -63,7 +63,7 @@ public class ProfileChooseDialog extends NVC {
 		stage.initModality(Modality.WINDOW_MODAL);
 
 		if (Profile.currentProfile() != null) {
-			PlayPadPlugin.styleable().applyStyleSheet(stage);
+			PlayPadPlugin.styleable().applyStyle(stage);
 		}
 	}
 
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectExportDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectExportDialog.java
index ddbf181f..f2045cb1 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectExportDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectExportDialog.java
@@ -66,7 +66,7 @@ public class ProjectExportDialog extends NVC implements ProjectExporterDelegate
 		stage.setHeight(180);
 		stage.initModality(Modality.WINDOW_MODAL);
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	@FXML
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectImportDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectImportDialog.java
index 79f49135..d4285db8 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectImportDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectImportDialog.java
@@ -149,7 +149,7 @@ public class ProjectImportDialog extends NVC implements ProjectImporterDelegate,
 		stage.initModality(Modality.WINDOW_MODAL);
 
 		if (Profile.currentProfile() != null) {
-			PlayPadPlugin.styleable().applyStyleSheet(stage);
+			PlayPadPlugin.styleable().applyStyle(stage);
 		}
 	}
 
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectManagerDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectManagerDialog.java
index 3fe3ee02..cf41c725 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectManagerDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectManagerDialog.java
@@ -176,7 +176,7 @@ public class ProjectManagerDialog extends NVC {
 
 		stage.initModality(Modality.WINDOW_MODAL);
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	public Optional<ProjectReference> showAndWait() {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectNewDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectNewDialog.java
index 651cff39..9f255239 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectNewDialog.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/project/ProjectNewDialog.java
@@ -68,7 +68,7 @@ public class ProjectNewDialog extends NVC {
 	@Override
 	public void initStage(Stage stage) {
 		PlayPadMain.stageIcon.ifPresent(stage.getIcons()::add);
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 		stage.initModality(Modality.WINDOW_MODAL);
 
 		stage.setTitle(Localization.getString(Strings.UI_Dialog_NewProject_Title));
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java
index 093ff7ac..444d861c 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java
@@ -77,7 +77,7 @@ public abstract class BasicMenuToolbarViewController extends MenuToolbarViewCont
 	// Utils
 	protected void doAction(Runnable run) {
 		Project project = PlayPadMain.getProgramInstance().getCurrentProject();
-		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 		if (!(project.getActivePlayers() > 0 && globalSettings.isLiveMode())) {
 			run.run();
 		}
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java
index 8a53dc65..4aa46fc2 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java
@@ -176,7 +176,7 @@ public class MainViewController extends NVC implements IMainViewController, Noti
 		};
 
 		// Default Layout
-		setMainLayout(PlayPadPlugin.getRegistryCollection().getMainLayouts().getDefault());
+		setMainLayout(PlayPadPlugin.getRegistries().getMainLayouts().getDefault());
 
 		Profile.registerListener(this);
 
@@ -264,7 +264,7 @@ public class MainViewController extends NVC implements IMainViewController, Noti
 			menuToolbarViewController.setNotFoundNumber(openProject.getNotFoundMedia());
 
 		// Keyboard Shortcuts
-		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 		menuToolbarViewController.loadKeybinding(globalSettings.getKeyCollection());
 
 		// Update Locked Listener
@@ -280,7 +280,7 @@ public class MainViewController extends NVC implements IMainViewController, Noti
 	private boolean closeRequest() {
 		if (Profile.currentProfile() != null) {
 			ProfileSettings profilSettings = Profile.currentProfile().getProfileSettings();
-			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 
 			// Frag den Nutzer ob das Programm wirdklich geschlossen werden sol
 			// wenn ein Pad noch im Status Play ist
@@ -618,7 +618,7 @@ public class MainViewController extends NVC implements IMainViewController, Noti
 		}
 
 		try {
-			DefaultRegistry<MainLayoutFactory> registry = PlayPadPlugin.getRegistryCollection().getMainLayouts();
+			DefaultRegistry<MainLayoutFactory> registry = PlayPadPlugin.getRegistries().getMainLayouts();
 			MainLayoutFactory connect = registry.getFactory(currentProfile.getProfileSettings().getMainLayoutType());
 			setMainLayout(connect);
 		} catch (NoSuchComponentException e) {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java
index d607e1cc..e51f18c5 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java
@@ -69,14 +69,14 @@ public class GlobalSettingsViewController extends NVC implements IGlobalSettings
 		stage.setMinHeight(700);
 		stage.setTitle(Localization.getString(Strings.UI_Window_GlobalSettings_Title));
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	/**
 	 * Zeigt die aktuellen Einstellungen für die Tabs an.
 	 */
 	private void loadTabs() {
-		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 
 		for (GlobalSettingsTabViewController controller : tabs) {
 			controller.loadSettings(globalSettings);
@@ -87,7 +87,7 @@ public class GlobalSettingsViewController extends NVC implements IGlobalSettings
 	 * Speichert die Einstellungen der Tabs.
 	 */
 	private void saveTabs() {
-		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 
 		for (GlobalSettingsTabViewController controller : tabs) {
 			controller.saveSettings(globalSettings);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java
index 3dc52a90..18f7230d 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java
@@ -58,7 +58,7 @@ public class KeysTabViewController extends GlobalSettingsTabViewController imple
 		shortcutTableColumn.setCellValueFactory(param -> param.getValue().displayProperty());
 		nameTableColumn.setCellValueFactory(param ->
 		{
-			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 			return new SimpleStringProperty(globalSettings.getKeyCollection().getName(param.getValue().getId()));
 		});
 
@@ -84,7 +84,7 @@ public class KeysTabViewController extends GlobalSettingsTabViewController imple
 		currentKey = key;
 
 		if (key != null) {
-			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 
 			String name = globalSettings.getKeyCollection().getName(key.getId());
 			nameLabel.setText(name);
@@ -106,7 +106,7 @@ public class KeysTabViewController extends GlobalSettingsTabViewController imple
 	@FXML
 	void deleteHandler(ActionEvent event) {
 		if (currentKey != null) {
-			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 			globalSettings.getKeyCollection().removeKeyBinding(currentKey);
 		}
 	}
@@ -130,7 +130,7 @@ public class KeysTabViewController extends GlobalSettingsTabViewController imple
 
 				Key newKey = new Key(currentKey.getId(), key, ev.isControlDown(), ev.isAltDown(), ev.isMetaDown(), ev.isShiftDown());
 
-				GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+				GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 				KeyCollection keyCollection = globalSettings.getKeyCollection();
 
 				boolean conflict = keyCollection.keysConflict(newKey);
@@ -192,7 +192,7 @@ public class KeysTabViewController extends GlobalSettingsTabViewController imple
 		if (search == null || search.length() == 0) {
 			filteredData.setPredicate(s -> true);
 		} else {
-			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 			filteredData.setPredicate(s -> globalSettings.getKeyCollection().getName(s.getId()).toLowerCase().startsWith(search.toLowerCase()));
 		}
 		table.setItems(filteredData);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java
index 25aa0e20..316b5173 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java
@@ -49,7 +49,7 @@ public class UpdateTabViewController extends GlobalSettingsTabViewController {
 	UpdateTabViewController() {
 		load("view/option/global", "UpdateTab", PlayPadMain.getUiResourceBundle());
 
-		final PlayPad playPad = PlayPadPlugin.getImplementation();
+		final PlayPad playPad = PlayPadPlugin.getInstance();
 		GlobalSettings globalSettings = playPad.getGlobalSettings();
 
 		updateChannelComboBox.setValue(globalSettings.getUpdateChannel());
@@ -71,7 +71,7 @@ public class UpdateTabViewController extends GlobalSettingsTabViewController {
 
 		updateChannelComboBox.valueProperty().addListener((a, b, c) ->
 		{
-			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 			globalSettings.setUpdateChannel(c);
 		});
 
@@ -95,7 +95,7 @@ public class UpdateTabViewController extends GlobalSettingsTabViewController {
 
 			Worker.runLater(() ->
 			{
-				final UpdateService updateService = PlayPadPlugin.getImplementation().getUpdateService();
+				final UpdateService updateService = PlayPadPlugin.getInstance().getUpdateService();
 
 				// Search for updates
 				updateService.fetchCurrentVersion();
@@ -117,12 +117,12 @@ public class UpdateTabViewController extends GlobalSettingsTabViewController {
 		UpdaterDialog dialog = new UpdaterDialog(getContainingWindow());
 		dialog.show();
 
-		GlobalSettings settings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		GlobalSettings settings = PlayPadPlugin.getInstance().getGlobalSettings();
 		settings.setIgnoreUpdate(false);
 
 		Worker.runLater(() ->
 		{
-			final UpdateService updateService = PlayPadPlugin.getImplementation().getUpdateService();
+			final UpdateService updateService = PlayPadPlugin.getInstance().getUpdateService();
 
 			Logger.info("Install update");
 			try {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/DesignPadTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/DesignPadTabViewController.java
index bb1ddc2e..610ee9a6 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/DesignPadTabViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/DesignPadTabViewController.java
@@ -95,13 +95,13 @@ public class DesignPadTabViewController extends PadSettingsTabViewController {
 	@Override
 	public void saveSettings(Pad pad) {
 		// CSS
-		IMainViewController mainViewController = PlayPadPlugin.getImplementation().getMainViewController();
+		IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController();
 		mainViewController.loadUserCss();
 
 		try {
 			// Mapping Auto Matched Colors
 			Mapping activeMapping = Profile.currentProfile().getMappings().getActiveMapping();
-			List<CartAction> actions = activeMapping.getActions(PlayPadPlugin.getRegistryCollection().getActions().getFactory(CartActionFactory.class));
+			List<CartAction> actions = activeMapping.getActions(PlayPadPlugin.getRegistries().getActions().getFactory(CartActionFactory.class));
 			// Update die Mapper der CartAction
 			actions.stream().filter(action -> action.getPad() != null).filter(action -> action.getPad().getPosition() == pad.getPosition())
 					.forEach(item -> item.init(pad.getProject(), mainViewController));
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java
index 40451447..450cad37 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java
@@ -52,7 +52,7 @@ public class PadSettingsViewController extends NVC implements IPadSettingsViewCo
 			try {
 				// Get Pad Type specific tab
 				String type = pad.getContent().getType();
-				PadContentRegistry registry = PlayPadPlugin.getRegistryCollection().getPadContents();
+				PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents();
 
 				PadContentFactory padContentFactory = registry.getFactory(type);
 				PadSettingsTabViewController contentTab = padContentFactory.getSettingsViewController(pad);
@@ -136,7 +136,7 @@ public class PadSettingsViewController extends NVC implements IPadSettingsViewCo
 		stage.setMinWidth(650);
 		stage.setMinHeight(550);
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	private void showCurrentSettings() {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/TriggerPointViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/TriggerPointViewController.java
index cb323a7f..0ff09c25 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/TriggerPointViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/TriggerPointViewController.java
@@ -37,11 +37,11 @@ public class TriggerPointViewController extends NVC {
 
 	@Override
 	public void init() {
-		Set<String> types = PlayPadPlugin.getRegistryCollection().getTriggerItems().getTypes();
+		Set<String> types = PlayPadPlugin.getRegistries().getTriggerItems().getTypes();
 		types.stream().sorted().forEach(item ->
 		{
 			try {
-				TriggerItemFactory conntect = PlayPadPlugin.getRegistryCollection().getTriggerItems().getFactory(item);
+				TriggerItemFactory conntect = PlayPadPlugin.getRegistries().getTriggerItems().getFactory(item);
 				Button button = new Button(conntect.toString(), new FontIcon(FontAwesomeType.PLUS_CIRCLE));
 				button.setContentDisplay(ContentDisplay.TOP);
 				button.setPrefWidth(150);
@@ -63,7 +63,7 @@ public class TriggerPointViewController extends NVC {
 
 	private void showTriggerItem(TriggerItem item) {
 		try {
-			TriggerItemFactory connect = PlayPadPlugin.getRegistryCollection().getTriggerItems().getFactory(item.getType());
+			TriggerItemFactory connect = PlayPadPlugin.getRegistries().getTriggerItems().getFactory(item.getType());
 
 			VBox itemBox = new VBox(14);
 			NVC controller = connect.getSettingsController(item);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java
index 75b24bd1..d6c8b31d 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java
@@ -59,7 +59,7 @@ public class AudioTabViewController extends ProfileSettingsTabViewController imp
 		ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
 
 		// Audio Classes
-		AudioRegistry audioHandlerRegistry = PlayPadPlugin.getRegistryCollection().getAudioHandlers();
+		AudioRegistry audioHandlerRegistry = PlayPadPlugin.getRegistries().getAudioHandlers();
 		audioTypeComboBox.getItems().addAll(audioHandlerRegistry.getTypes());
 
 		// Listener for selection
@@ -81,7 +81,7 @@ public class AudioTabViewController extends ProfileSettingsTabViewController imp
 
 		options.getChildren().clear();
 
-		AudioRegistry audioHandlerRegistry = PlayPadPlugin.getRegistryCollection().getAudioHandlers();
+		AudioRegistry audioHandlerRegistry = PlayPadPlugin.getRegistries().getAudioHandlers();
 		AudioHandlerFactory audio = audioHandlerRegistry.getFactory(classID);
 
 		for (AudioCapability audioCapability : AudioCapability.getFeatures()) {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/GeneralTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/GeneralTabViewController.java
index f93a028e..b7352994 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/GeneralTabViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/GeneralTabViewController.java
@@ -97,7 +97,7 @@ public class GeneralTabViewController extends GlobalSettingsTabViewController {
 		File folder = chooser.showDialog(getContainingWindow());
 		if (folder != null) {
 			Path folderPath = folder.toPath();
-			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 			globalSettings.setCachePath(folderPath);
 			cacheTextField.setText(folderPath.toString());
 		}
@@ -134,7 +134,7 @@ public class GeneralTabViewController extends GlobalSettingsTabViewController {
 	private void calcCacheSize() {
 		try {
 			double size = 0;
-			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 			Path path = globalSettings.getCachePath();
 			if (Files.notExists(path))
 				Files.createDirectories(path);
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java
index d4e3992d..57701d9b 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/MappingTabViewController.java
@@ -131,7 +131,7 @@ public class MappingTabViewController extends ProfileSettingsTabViewController i
 
 	private TreeItem<ActionDisplayable> createTreeView(Mapping mapping) {
 		TreeItem<ActionDisplayable> rootItem = new TreeItem<>();
-		Collection<ActionFactory> types = PlayPadPlugin.getRegistryCollection().getActions().getComponents();
+		Collection<ActionFactory> types = PlayPadPlugin.getRegistries().getActions().getComponents();
 		List<ActionFactory> sortedTypes = types.stream().sorted(Comparator.comparing(Component::getType)).collect(Collectors.toList());
 
 		// Sort the tpyes for the treeview
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java
index 5a2acd69..7b4731c2 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java
@@ -54,7 +54,7 @@ public class ProfileSettingsViewController extends NVC implements IProfileSettin
 		addTab(new PlayerTabViewController());
 
 		// Custom Tabs - Content Types
-		PadContentRegistry padContents = PlayPadPlugin.getRegistryCollection().getPadContents();
+		PadContentRegistry padContents = PlayPadPlugin.getRegistries().getPadContents();
 		for (String type : padContents.getTypes()) {
 			PadContentFactory component = padContents.getFactory(type);
 			ProfileSettingsTabViewController controller = component.getSettingsTabViewController(activePlayer);
@@ -102,7 +102,7 @@ public class ProfileSettingsViewController extends NVC implements IProfileSettin
 		stage.setMinHeight(700);
 		stage.setTitle(Localization.getString(Strings.UI_Window_Settings_Title, Profile.currentProfile().getRef().getName()));
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	/**
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java
index 31c9827f..2e55a939 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java
@@ -72,7 +72,7 @@ public class ProjectSettingsViewController extends NVC implements IProjectSettin
 		stage.setMinHeight(500);
 		stage.setTitle(Localization.getString(Strings.UI_Window_ProjectSettings_Title));
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 	}
 
 	/**
diff --git a/PlayWallComponents/src/main/java/de/tobias/playpad/audio/TinyAudioHandler.java b/PlayWallComponents/src/main/java/de/tobias/playpad/audio/TinyAudioHandler.java
index 8521b0bf..4451f6e6 100644
--- a/PlayWallComponents/src/main/java/de/tobias/playpad/audio/TinyAudioHandler.java
+++ b/PlayWallComponents/src/main/java/de/tobias/playpad/audio/TinyAudioHandler.java
@@ -222,7 +222,7 @@ public class TinyAudioHandler extends AudioHandler implements Soundcardable, See
 
 				// Convert wenn mp3
 				if (PathUtils.getFileExtension(url.getFile()).toLowerCase().endsWith(MP3)) {
-					GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+					GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings();
 					Path wavPath = globalSettings.getCachePath().resolve(path.getFileName().toString() + ".wav");
 					url = convertMp3ToWav(path, wavPath, getContent().getPad());
 				}
diff --git a/PlayWallComponents/src/main/java/de/tobias/playpad/audio/viewcontroller/TinySoundSettingsViewController.java b/PlayWallComponents/src/main/java/de/tobias/playpad/audio/viewcontroller/TinySoundSettingsViewController.java
index d0282638..9c0c6533 100644
--- a/PlayWallComponents/src/main/java/de/tobias/playpad/audio/viewcontroller/TinySoundSettingsViewController.java
+++ b/PlayWallComponents/src/main/java/de/tobias/playpad/audio/viewcontroller/TinySoundSettingsViewController.java
@@ -35,7 +35,7 @@ public class TinySoundSettingsViewController extends AudioHandlerViewController
 	private Clip clip;
 
 	public TinySoundSettingsViewController() {
-		super("TinySoundSettings", "view/audio", PlayPadPlugin.getImplementation().getUIResourceBundle());
+		super("TinySoundSettings", "view/audio", PlayPadPlugin.getInstance().getUIResourceBundle());
 
 		// Mixer (ohne Port)
 		List<Info> infos = Arrays.stream(AudioSystem.getMixerInfo()).filter(info -> !info.getName().startsWith("Port"))
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/PlayPadPlugin.java b/PlayWallCore/src/main/java/de/tobias/playpad/PlayPadPlugin.java
index 3e8f68a4..7ef7ea84 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/PlayPadPlugin.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/PlayPadPlugin.java
@@ -6,18 +6,21 @@ import de.tobias.playpad.server.sync.command.CommandExecutorHandler;
 
 public final class PlayPadPlugin {
 
-	private static PlayPad implementation;
+	private static PlayPad instance;
 	private static Styleable modernDesignHandler;
-	private static RegistryCollection registryCollection;
+	private static Registries registryCollection;
 	private static ServerHandler serverHandler;
 	private static CommandExecutorHandler commandExecutorHandler;
 
-	public static PlayPad getImplementation() {
-		return implementation;
+	private PlayPadPlugin() {
 	}
 
-	static void setImplementation(PlayPad playPadMain) {
-		implementation = playPadMain;
+	public static PlayPad getInstance() {
+		return instance;
+	}
+
+	static void setInstance(PlayPad playPadMain) {
+		instance = playPadMain;
 	}
 
 	/**
@@ -25,11 +28,11 @@ public final class PlayPadPlugin {
 	 *
 	 * @return Registry Collection Impl
 	 */
-	public static RegistryCollection getRegistryCollection() {
+	public static Registries getRegistries() {
 		return registryCollection;
 	}
 
-	static void setRegistryCollection(RegistryCollection registryCollection) {
+	static void setRegistryCollection(Registries registryCollection) {
 		PlayPadPlugin.registryCollection = registryCollection;
 	}
 
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/RegistryCollection.java b/PlayWallCore/src/main/java/de/tobias/playpad/Registries.java
similarity index 96%
rename from PlayWallCore/src/main/java/de/tobias/playpad/RegistryCollection.java
rename to PlayWallCore/src/main/java/de/tobias/playpad/Registries.java
index c47db038..81a65794 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/RegistryCollection.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/Registries.java
@@ -17,7 +17,7 @@ import de.tobias.playpad.view.main.MainLayoutFactory;
  * @author tobias
  * @since 5.1.0
  */
-public interface RegistryCollection {
+public interface Registries {
 
 	Registry<ActionFactory> getActions();
 
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/action/ActionSerializer.java b/PlayWallCore/src/main/java/de/tobias/playpad/action/ActionSerializer.java
index 88a2e1f8..4b00a077 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/action/ActionSerializer.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/action/ActionSerializer.java
@@ -42,7 +42,7 @@ public class ActionSerializer implements XMLSerializer<Action>, XMLDeserializer<
 		String type = element.attributeValue(ACTION_TYPE);
 
 		try {
-			final Registry<ActionFactory> actions = PlayPadPlugin.getRegistryCollection().getActions();
+			final Registry<ActionFactory> actions = PlayPadPlugin.getRegistries().getActions();
 			Action action = actions.getFactory(type).newInstance();
 			action.load(element);
 
@@ -64,7 +64,7 @@ public class ActionSerializer implements XMLSerializer<Action>, XMLDeserializer<
 
 	@Override
 	public void saveElement(Element newElement, Action data) {
-		Module module = PlayPadPlugin.getRegistryCollection().getActions().getModule(data.getType());
+		Module module = PlayPadPlugin.getRegistries().getActions().getModule(data.getType());
 		if (profile != null) {
 			profile.getRef().addRequestedModule(module);
 		}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/action/Mapping.java b/PlayWallCore/src/main/java/de/tobias/playpad/action/Mapping.java
index effb5c55..bd406048 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/action/Mapping.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/action/Mapping.java
@@ -102,7 +102,7 @@ public class Mapping implements Cloneable, ActionDisplayable {
 	}
 
 	public void initActionType(Profile profile) {
-		Registry<ActionFactory> actions = PlayPadPlugin.getRegistryCollection().getActions();
+		Registry<ActionFactory> actions = PlayPadPlugin.getRegistries().getActions();
 		for (ActionFactory component : actions.getComponents()) {
 			component.initActionType(this, profile);
 		}
@@ -117,7 +117,7 @@ public class Mapping implements Cloneable, ActionDisplayable {
 	}
 
 	public void initFeedbackType() {
-		Registry<MapperFactory> registry = PlayPadPlugin.getRegistryCollection().getMappers();
+		Registry<MapperFactory> registry = PlayPadPlugin.getRegistries().getMappers();
 		for (MapperFactory mapper : registry.getComponents()) {
 			if (mapper instanceof MapperConnectFeedbackable) {
 				((MapperConnectFeedbackable) mapper).initFeedbackType();
@@ -126,7 +126,7 @@ public class Mapping implements Cloneable, ActionDisplayable {
 	}
 
 	public void prepareFeedback(Project project) {
-		IMainViewController controller = PlayPadPlugin.getImplementation().getMainViewController();
+		IMainViewController controller = PlayPadPlugin.getInstance().getMainViewController();
 
 		for (Action action : mapping.keySet()) {
 			try {
@@ -138,7 +138,7 @@ public class Mapping implements Cloneable, ActionDisplayable {
 	}
 
 	public void showFeedback(Project project) {
-		IMainViewController controller = PlayPadPlugin.getImplementation().getMainViewController();
+		IMainViewController controller = PlayPadPlugin.getInstance().getMainViewController();
 		showFeedback(project, controller);
 	}
 
@@ -153,7 +153,7 @@ public class Mapping implements Cloneable, ActionDisplayable {
 	}
 
 	public void clearFeedback() {
-		Registry<MapperFactory> registry = PlayPadPlugin.getRegistryCollection().getMappers();
+		Registry<MapperFactory> registry = PlayPadPlugin.getRegistries().getMappers();
 		for (MapperFactory mapper : registry.getComponents()) {
 			if (mapper instanceof MapperConnectFeedbackable) {
 				((MapperConnectFeedbackable) mapper).clearFeedbackType();
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/action/MappingList.java b/PlayWallCore/src/main/java/de/tobias/playpad/action/MappingList.java
index c9943b38..31eeb1c5 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/action/MappingList.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/action/MappingList.java
@@ -29,7 +29,7 @@ public class MappingList extends ArrayList<Mapping> {
 	public MappingList(Profile profile) {
 		add(new Mapping(true));
 
-		this.profile = new WeakReference<Profile>(profile);
+		this.profile = new WeakReference<>(profile);
 	}
 
 	public Mapping getActiveMapping() {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/action/mapper/MapperSerializer.java b/PlayWallCore/src/main/java/de/tobias/playpad/action/mapper/MapperSerializer.java
index 00ad0a54..d42b38ee 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/action/mapper/MapperSerializer.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/action/mapper/MapperSerializer.java
@@ -28,7 +28,7 @@ public class MapperSerializer implements XMLSerializer<Mapper>, XMLDeserializer<
 		String mapperType = element.attributeValue(MAPPER_TYPE);
 
 		try {
-			MapperFactory component = PlayPadPlugin.getRegistryCollection().getMappers().getFactory(mapperType);
+			MapperFactory component = PlayPadPlugin.getRegistries().getMappers().getFactory(mapperType);
 
 			Mapper mapper = component.createNewMapper();
 			mapper.load(element, action);
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/audio/AudioHandlerFactory.java b/PlayWallCore/src/main/java/de/tobias/playpad/audio/AudioHandlerFactory.java
index 11d8add4..53ca186a 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/audio/AudioHandlerFactory.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/audio/AudioHandlerFactory.java
@@ -1,12 +1,12 @@
 package de.tobias.playpad.audio;
 
-import de.tobias.playpad.RegistryCollection;
+import de.tobias.playpad.Registries;
 import de.tobias.playpad.pad.content.PadContent;
 import de.tobias.playpad.registry.Component;
 import de.tobias.playpad.viewcontroller.AudioHandlerViewController;
 
 /**
- * Factory to create an instance of an audio handler implementation. The factories are collected in {@link RegistryCollection#getAudioHandlers()}
+ * Factory to create an instance of an audio handler implementation. The factories are collected in {@link Registries#getAudioHandlers()}
  * If an AudioHandler have some cleanups on shutdown to do, it must implement {@link AutoCloseable}
  *
  * @author tobias
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/design/Styleable.java b/PlayWallCore/src/main/java/de/tobias/playpad/design/Styleable.java
index 0fc19093..60ff437c 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/design/Styleable.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/design/Styleable.java
@@ -3,5 +3,5 @@ package de.tobias.playpad.design;
 import javafx.stage.Stage;
 
 public interface Styleable {
-	void applyStyleSheet(Stage stage);
+	void applyStyle(Stage stage);
 }
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
index b5dd8aac..6ff132ec 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
@@ -463,7 +463,7 @@ public class Pad implements Cloneable {
 		}
 
 		if (contentType != null) {
-			PadContentFactory factory = PlayPadPlugin.getRegistryCollection().getPadContents().getFactory(contentType);
+			PadContentFactory factory = PlayPadPlugin.getRegistries().getPadContents().getFactory(contentType);
 			PadContent newContent = factory.newInstance(this);
 			contentProperty.set(newContent);
 			if (!getPaths().isEmpty()) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSerializer.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSerializer.java
index c38e9843..5b719274 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSerializer.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSerializer.java
@@ -125,7 +125,7 @@ public class PadSerializer implements XMLSerializer<Pad>, XMLDeserializer<Pad> {
 				}
 			}
 
-			Module module = PlayPadPlugin.getRegistryCollection().getPadContents().getModule(content.getType());
+			Module module = PlayPadPlugin.getRegistries().getPadContents().getModule(content.getType());
 			// Für verschiedene Pad Typen wird hier das Modul gespeichert, damit das Projekt weis, welche notwendig sien beim öffnen
 			project.getProjectReference().addRequestedModule(module);
 		}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentRegistry.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentRegistry.java
index 99986e23..20e7f45d 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentRegistry.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentRegistry.java
@@ -32,7 +32,7 @@ public class PadContentRegistry extends ComponentRegistry<PadContentFactory> {
 			String[] fileExtensions = connect.getSupportedTypes();
 			Collections.addAll(extensions, fileExtensions);
 		}
-		return extensions.toArray(new String[extensions.size()]);
+		return extensions.toArray(new String[0]);
 	}
 
 }
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java
index 3a70a074..5b21ad95 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java
@@ -30,7 +30,7 @@ public class PadStatusControlListener implements ChangeListener<PadStatus> {
 
 		if (newValue == PadStatus.PLAY) {
 			if (pad.getContent() != null) {
-				PlayPadPlugin.getImplementation().getPadListener().forEach(listener -> listener.onPlay(pad));
+				PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onPlay(pad));
 
 				pad.getProject().updateActivePlayerProperty();
 
@@ -66,7 +66,7 @@ public class PadStatusControlListener implements ChangeListener<PadStatus> {
 			}
 		} else if (newValue == PadStatus.STOP) {
 			if (pad.getContent() != null) {
-				PlayPadPlugin.getImplementation().getPadListener().forEach(listener -> listener.onStop(pad));
+				PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onStop(pad));
 				pad.getProject().updateActivePlayerProperty();
 
 				if (pad.getContent() instanceof Fadeable && !pad.isEof() && padSettings.getFade().isFadeOutStop()) { // Fade nur wenn Pad
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerDurationListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerDurationListener.java
index 1be9311e..56eb71c9 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerDurationListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerDurationListener.java
@@ -29,7 +29,7 @@ public class PadTriggerDurationListener implements ChangeListener<Duration> {
 			if (totalDuration != null) {
 				Duration leftTime = totalDuration.subtract(newValue);
 
-				IMainViewController mainViewController = PlayPadPlugin.getImplementation().getMainViewController();
+				IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController();
 				Profile currentProfile = Profile.currentProfile();
 				PadSettings padSettings = pad.getPadSettings();
 
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java
index c89a9ce3..45174361 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java
@@ -39,7 +39,7 @@ public class PadTriggerStatusListener implements ChangeListener<PadStatus> {
 	}
 
 	private void executeTrigger(Trigger trigger) {
-		IMainViewController mainViewController = PlayPadPlugin.getImplementation().getMainViewController();
+		IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController();
 		Profile currentProfile = Profile.currentProfile();
 
 		trigger.handle(pad, Duration.ZERO, pad.getProject(), mainViewController, currentProfile);
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/ModernPluginManager.java b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/ModernPluginManager.java
index 3b4d46b7..8b80e6ba 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/ModernPluginManager.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/ModernPluginManager.java
@@ -70,7 +70,7 @@ public class ModernPluginManager {
 			}
 
 			if (p instanceof PluginArtifact) {
-				PlayPadPlugin.getImplementation().getUpdateService().addArtifact(((PluginArtifact) p).getArtifact(), path);
+				PlayPadPlugin.getInstance().getUpdateService().addArtifact(((PluginArtifact) p).getArtifact(), path);
 			}
 		}
 	}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/profile/Profile.java b/PlayWallCore/src/main/java/de/tobias/playpad/profile/Profile.java
index c7e129bb..a1c036f6 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/profile/Profile.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/profile/Profile.java
@@ -87,7 +87,7 @@ public class Profile {
 			profile.profileSettings = ProfileSettings.load(app.getPath(PathType.CONFIGURATION, ref.getFileName(), PROFILE_SETTINGS_XML));
 
 			// Listener
-			PlayPadPlugin.getImplementation().getSettingsListener().forEach(l ->
+			PlayPadPlugin.getInstance().getSettingsListener().forEach(l ->
 			{
 				try {
 					l.onLoad(profile);
@@ -116,7 +116,7 @@ public class Profile {
 			Files.createDirectories(root);
 		}
 
-		PlayPadPlugin.getImplementation().getSettingsListener().forEach(l -> {
+		PlayPadPlugin.getInstance().getSettingsListener().forEach(l -> {
 			try {
 				l.onSave(this);
 			} catch (Exception ex) {
@@ -125,7 +125,7 @@ public class Profile {
 		});
 
 		// Add audio settings to module list
-		ref.addRequestedModule(PlayPadPlugin.getRegistryCollection().getAudioHandlers().getModule(profileSettings.getAudioClass()));
+		ref.addRequestedModule(PlayPadPlugin.getRegistries().getAudioHandlers().getModule(profileSettings.getAudioClass()));
 
 		profileSettings.save(getProfilePath(PROFILE_SETTINGS_XML));
 		mappings.save(getProfilePath(MAPPING_XML));
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/profile/ProfileSettings.java b/PlayWallCore/src/main/java/de/tobias/playpad/profile/ProfileSettings.java
index f0b4ec27..2e83e0af 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/profile/ProfileSettings.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/profile/ProfileSettings.java
@@ -40,7 +40,7 @@ public class ProfileSettings {
 
 	// Audio Output
 	@Key
-	private String audioClass = PlayPadPlugin.getRegistryCollection().getAudioHandlers().getDefaultID();
+	private String audioClass = PlayPadPlugin.getRegistries().getAudioHandlers().getDefaultID();
 	@Key
 	private Map<String, Object> audioUserInfo = new HashMap<>();
 
@@ -48,7 +48,7 @@ public class ProfileSettings {
 	@Key
 	private ModernGlobalDesign design = new ModernGlobalDesign();
 	@Key
-	private String mainLayoutType = PlayPadPlugin.getRegistryCollection().getMainLayouts().getDefaultID();
+	private String mainLayoutType = PlayPadPlugin.getRegistries().getMainLayouts().getDefaultID();
 
 	// Cart Settings
 	@Key
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/ServerHandler.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/ServerHandler.java
index 195939aa..93b05c5a 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/ServerHandler.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/ServerHandler.java
@@ -4,7 +4,5 @@ package de.tobias.playpad.server;
  * Created by tobias on 19.02.17.
  */
 public interface ServerHandler {
-
 	Server getServer();
-
 }
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadAddListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadAddListener.java
index a5e86210..8a8420c5 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadAddListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadAddListener.java
@@ -30,7 +30,7 @@ public class PadAddListener implements ServerListener {
 				contentType = json.get(PropertyDef.PAD_CONTENT_TYPE).getAsString();
 			}
 
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Page page = project.getPage(pageId);
 				if (page != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadClearListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadClearListener.java
index 12266eab..bf944119 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadClearListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadClearListener.java
@@ -21,7 +21,7 @@ public class PadClearListener implements ServerListener {
 			JsonObject json = (JsonObject) element;
 
 			UUID uuid = UUID.fromString(json.get(PropertyDef.ID).getAsString());
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Pad pad = project.getPad(uuid);
 				if (pad != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadMoveListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadMoveListener.java
index 6b558830..42f7f2a7 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadMoveListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadMoveListener.java
@@ -12,8 +12,8 @@ import javafx.application.Platform;
 public class PadMoveListener implements ServerListener {
 	@Override
 	public void listen(JsonElement element) {
-		if (PlayPadPlugin.getImplementation().getCurrentProject() != null) {
-			IMainViewController mainViewController = PlayPadPlugin.getImplementation().getMainViewController();
+		if (PlayPadPlugin.getInstance().getCurrentProject() != null) {
+			IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController();
 			Platform.runLater(() -> mainViewController.showPage(mainViewController.getPage()));
 		}
 	}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadRemoveListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadRemoveListener.java
index c0ec8946..d2119860 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadRemoveListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadRemoveListener.java
@@ -21,7 +21,7 @@ public class PadRemoveListener implements ServerListener {
 			JsonObject json = (JsonObject) element;
 
 			UUID uuid = UUID.fromString(json.get(PropertyDef.ID).getAsString());
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Pad pad = project.getPad(uuid);
 				if (pad != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadUpdateListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadUpdateListener.java
index 67fc96b0..d7c22e77 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadUpdateListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/PadUpdateListener.java
@@ -23,7 +23,7 @@ public class PadUpdateListener implements ServerListener {
 
 			UUID uuid = UUID.fromString(json.get(PropertyDef.ID).getAsString());
 
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Pad pad = project.getPad(uuid);
 				if (pad != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/PadSettingsAddListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/PadSettingsAddListener.java
index 9a675844..d71c2809 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/PadSettingsAddListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/PadSettingsAddListener.java
@@ -33,7 +33,7 @@ public class PadSettingsAddListener implements ServerListener {
 				warning = Duration.millis(json.get(PropertyDef.PAD_SETTINGS_WARNING).getAsDouble());
 			}
 
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Pad pad = project.getPad(padId);
 				if (pad != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/PadSettingsUpdateListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/PadSettingsUpdateListener.java
index 5abbf5e2..95a45baa 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/PadSettingsUpdateListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/PadSettingsUpdateListener.java
@@ -24,7 +24,7 @@ public class PadSettingsUpdateListener implements ServerListener {
 
 			UUID uuid = UUID.fromString(json.get(PropertyDef.ID).getAsString());
 
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Optional<PadSettings> padSettingsOpt = project.getPads().stream().filter(pad -> pad.getPadSettings().getId().equals(uuid)).map(Pad::getPadSettings).findFirst();
 				padSettingsOpt.ifPresent(padSettings -> {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/design/DesignAddListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/design/DesignAddListener.java
index 306cef68..d4c9f6a5 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/design/DesignAddListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/design/DesignAddListener.java
@@ -27,7 +27,7 @@ public class DesignAddListener implements ServerListener {
 			ModernColor backgroundColor = ModernColor.valueOf(json.get(PropertyDef.DESIGN_BACKGROUND_COLOR).getAsString());
 			ModernColor playColor = ModernColor.valueOf(json.get(PropertyDef.DESIGN_PLAY_COLOR).getAsString());
 
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Pad pad = project.getPad(padId);
 				if (pad != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/design/DesignUpdateListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/design/DesignUpdateListener.java
index b56f6920..fd06d289 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/design/DesignUpdateListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/pad/settings/design/DesignUpdateListener.java
@@ -27,7 +27,7 @@ public class DesignUpdateListener implements ServerListener {
 			UUID uuid = UUID.fromString(json.get(PropertyDef.ID).getAsString());
 			UUID padId = UUID.fromString(json.get(PropertyDef.DESIGN_PAD_SETTINGS_REF).getAsString());
 
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Pad pad = project.getPad(padId);
 				if (pad != null) {
@@ -36,7 +36,7 @@ public class DesignUpdateListener implements ServerListener {
 
 						String field = json.get(PropertyDef.FIELD).getAsString();
 						ModernColor color = ModernColor.valueOf(json.get(PropertyDef.VALUE).getAsString());
-						IMainViewController mainViewController = PlayPadPlugin.getImplementation().getMainViewController();
+						IMainViewController mainViewController = PlayPadPlugin.getInstance().getMainViewController();
 
 						if (field.equals(PropertyDef.DESIGN_BACKGROUND_COLOR)) {
 							Platform.runLater(() -> {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageAddListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageAddListener.java
index c91bd9c2..3aa7cc56 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageAddListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageAddListener.java
@@ -25,7 +25,7 @@ public class PageAddListener implements ServerListener {
 			String name = json.get(PropertyDef.PAGE_NAME).getAsString();
 			int position = json.get(PropertyDef.PAGE_POSITION).getAsInt();
 
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				if (project.getProjectReference().getUuid().equals(project_id)) {
 					Page page = new Page(uuid, position, name, project);
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageRemoveListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageRemoveListener.java
index 1e1fb4bb..23ff1a1a 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageRemoveListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageRemoveListener.java
@@ -21,7 +21,7 @@ public class PageRemoveListener implements ServerListener {
 			JsonObject json = (JsonObject) element;
 
 			UUID uuid = UUID.fromString(json.get(PropertyDef.ID).getAsString());
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Page page = project.getPage(uuid);
 				if (page != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageUpdateListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageUpdateListener.java
index a539a535..66decdb7 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageUpdateListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/page/PageUpdateListener.java
@@ -23,7 +23,7 @@ public class PageUpdateListener implements ServerListener {
 
 			UUID uuid = UUID.fromString(json.get(PropertyDef.ID).getAsString());
 
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Page page = project.getPage(uuid);
 				if (page != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/path/PathAddListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/path/PathAddListener.java
index e7945598..5d2ff0ed 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/path/PathAddListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/path/PathAddListener.java
@@ -25,7 +25,7 @@ public class PathAddListener implements ServerListener {
 			UUID pad_id = UUID.fromString(json.get(PropertyDef.PATH_PAD_REF).getAsString());
 			String filename = json.get(PropertyDef.PATH_FILENAME).getAsString();
 
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				Pad pad = project.getPad(pad_id);
 				if (pad != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/path/PathRemoveListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/path/PathRemoveListener.java
index a75084fc..06dc4615 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/path/PathRemoveListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/server/sync/listener/downstream/path/PathRemoveListener.java
@@ -20,7 +20,7 @@ public class PathRemoveListener implements ServerListener {
 			JsonObject json = (JsonObject) element;
 
 			UUID uuid = UUID.fromString(json.get(PropertyDef.ID).getAsString());
-			Project project = PlayPadPlugin.getImplementation().getCurrentProject();
+			Project project = PlayPadPlugin.getInstance().getCurrentProject();
 			if (project != null) {
 				MediaPath path = project.getMediaPath(uuid);
 				if (path != null) {
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java
index 55bb0f6a..8cc6e7e5 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java
@@ -66,7 +66,7 @@ public class Trigger {
 				Element itemElement = (Element) itemObj;
 				String type = itemElement.attributeValue(TYPE_ATTR);
 
-				Registry<TriggerItemFactory> registry = PlayPadPlugin.getRegistryCollection().getTriggerItems();
+				Registry<TriggerItemFactory> registry = PlayPadPlugin.getRegistries().getTriggerItems();
 				try {
 					TriggerItemFactory connect = registry.getFactory(type);
 					TriggerItem item = connect.newInstance(this);
diff --git a/PlayWallPluginAwake/src/main/java/de/tobias/playpad/awakeplugin/AwakePluginImpl.java b/PlayWallPluginAwake/src/main/java/de/tobias/playpad/awakeplugin/AwakePluginImpl.java
index bb598947..a7997323 100644
--- a/PlayWallPluginAwake/src/main/java/de/tobias/playpad/awakeplugin/AwakePluginImpl.java
+++ b/PlayWallPluginAwake/src/main/java/de/tobias/playpad/awakeplugin/AwakePluginImpl.java
@@ -7,6 +7,7 @@ import de.thecodelabs.utils.application.system.NativeApplication;
 import de.thecodelabs.utils.ui.icon.FontAwesomeType;
 import de.thecodelabs.utils.ui.icon.FontIcon;
 import de.thecodelabs.utils.util.Localization;
+import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.plugin.Module;
 import de.tobias.playpad.plugin.PlayPadPluginStub;
 import de.tobias.playpad.plugin.SettingsListener;
@@ -18,7 +19,6 @@ import de.tobias.playpad.viewcontroller.main.MenuToolbarViewController;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.scene.control.CheckMenuItem;
-import javafx.scene.control.Label;
 import org.dom4j.DocumentException;
 
 import java.io.IOException;
@@ -34,7 +34,7 @@ public class AwakePluginImpl implements PlayPadPluginStub, PluginArtifact, Windo
 	private static final String SETTINGS_FILENAME = "Awake.xml";
 
 	private CheckMenuItem activeMenu;
-	private Label iconLabel;
+	private FontIcon toolbarIcon;
 
 	private AwakeSettings settings = new AwakeSettings();
 
@@ -46,8 +46,8 @@ public class AwakePluginImpl implements PlayPadPluginStub, PluginArtifact, Windo
 
 		module = new Module(descriptor.getName(), descriptor.getArtifactId());
 
-		de.tobias.playpad.PlayPadPlugin.getImplementation().addMainViewListener(this);
-		de.tobias.playpad.PlayPadPlugin.getImplementation().addSettingsListener(this);
+		PlayPadPlugin.getInstance().addMainViewListener(this);
+		PlayPadPlugin.getInstance().addSettingsListener(this);
 		Logger.info("Enable Awake Plugin");
 	}
 
@@ -87,30 +87,29 @@ public class AwakePluginImpl implements PlayPadPluginStub, PluginArtifact, Windo
 	}
 
 	@Override
-	public void onInit(IMainViewController t) {
+	public void onInit(IMainViewController viewController) {
 		activeMenu = new CheckMenuItem();
 		activeMenu.setOnAction(this);
 		activeMenu.setText(bundle.getString("menutitle"));
 		activeMenu.setSelected(settings.active);
 
-		t.performLayoutDependedAction((oldToolbar, newToolbar) ->
+		viewController.performLayoutDependedAction((oldToolbar, newToolbar) ->
 		{
 			if (oldToolbar != null)
 				oldToolbar.removeMenuItem(activeMenu);
 			newToolbar.addMenuItem(activeMenu, MenuType.EXTENSION);
 
-			if (iconLabel != null) {
+			if (toolbarIcon != null) {
 				if (settings.active) {
 					if (oldToolbar != null)
-						oldToolbar.removeToolbarItem(iconLabel);
-					newToolbar.addToolbarItem(iconLabel);
+						oldToolbar.removeToolbarItem(toolbarIcon);
+					newToolbar.addToolbarItem(toolbarIcon);
 				} else {
-					newToolbar.removeToolbarItem(iconLabel);
+					newToolbar.removeToolbarItem(toolbarIcon);
 				}
 			}
 		});
-		iconLabel = new Label();
-		iconLabel.setGraphic(new FontIcon(FontAwesomeType.MOON_ALT));
+		toolbarIcon = new FontIcon(FontAwesomeType.MOON_ALT);
 	}
 
 	@Override
@@ -118,11 +117,11 @@ public class AwakePluginImpl implements PlayPadPluginStub, PluginArtifact, Windo
 		activeSleep(activeMenu.isSelected());
 		settings.active = activeMenu.isSelected();
 
-		MenuToolbarViewController toolbarController = de.tobias.playpad.PlayPadPlugin.getImplementation().getMainViewController().getMenuToolbarController();
+		MenuToolbarViewController toolbarController = PlayPadPlugin.getInstance().getMainViewController().getMenuToolbarController();
 		if (settings.active) {
-			toolbarController.addToolbarItem(iconLabel);
+			toolbarController.addToolbarItem(toolbarIcon);
 		} else {
-			toolbarController.removeToolbarItem(iconLabel);
+			toolbarController.removeToolbarItem(toolbarIcon);
 		}
 	}
 
diff --git a/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java b/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java
index 747bcea3..42e9f6f3 100644
--- a/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java
+++ b/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java
@@ -52,8 +52,8 @@ public class EqualizerPluginImpl implements PlayPadPluginStub, PluginArtifact, W
 
 		module = new Module(descriptor.getName(), descriptor.getArtifactId());
 
-		de.tobias.playpad.PlayPadPlugin.getImplementation().addMainViewListener(this);
-		de.tobias.playpad.PlayPadPlugin.getImplementation().addPadListener(this);
+		de.tobias.playpad.PlayPadPlugin.getInstance().addMainViewListener(this);
+		de.tobias.playpad.PlayPadPlugin.getInstance().addPadListener(this);
 
 		System.out.println("Enable Equalizer Plugin");
 	}
diff --git a/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerViewController.java b/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerViewController.java
index cfb9a835..66464b8b 100644
--- a/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerViewController.java
+++ b/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerViewController.java
@@ -91,13 +91,13 @@ public class EqualizerViewController extends NVC {
 
 	@Override
 	public void initStage(Stage stage) {
-		PlayPadPlugin.getImplementation().getIcon().ifPresent(stage.getIcons()::add);
+		PlayPadPlugin.getInstance().getIcon().ifPresent(stage.getIcons()::add);
 
 		stage.setTitle(EqualizerPluginImpl.getBundle().getString("eq.title"));
 		stage.setMinWidth(500);
 		stage.setMinHeight(250);
 
-		PlayPadPlugin.styleable().applyStyleSheet(stage);
+		PlayPadPlugin.styleable().applyStyle(stage);
 		stage.getScene().getStylesheets().add("style/style.css");
 	}
 
diff --git a/PlayWallPluginMedia/src/main/java/de/tobias/playpad/mediaplugin/main/impl/MediaPluginImpl.java b/PlayWallPluginMedia/src/main/java/de/tobias/playpad/mediaplugin/main/impl/MediaPluginImpl.java
index 0abef4b6..91272291 100644
--- a/PlayWallPluginMedia/src/main/java/de/tobias/playpad/mediaplugin/main/impl/MediaPluginImpl.java
+++ b/PlayWallPluginMedia/src/main/java/de/tobias/playpad/mediaplugin/main/impl/MediaPluginImpl.java
@@ -56,13 +56,13 @@ public class MediaPluginImpl implements PlayPadPluginStub, PluginArtifact, Setti
 
 		// Load Content Types
 		try {
-			Registry<PadContentFactory> padContents = de.tobias.playpad.PlayPadPlugin.getRegistryCollection().getPadContents();
+			Registry<PadContentFactory> padContents = de.tobias.playpad.PlayPadPlugin.getRegistries().getPadContents();
 			padContents.loadComponentsFromFile("PadContent.xml", getClass().getClassLoader(), module, bundle);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
 
-		de.tobias.playpad.PlayPadPlugin.getImplementation().addSettingsListener(this);
+		de.tobias.playpad.PlayPadPlugin.getInstance().addSettingsListener(this);
 
 		if (Profile.currentProfile() != null) {
 			onLoad(Profile.currentProfile());
@@ -85,7 +85,7 @@ public class MediaPluginImpl implements PlayPadPluginStub, PluginArtifact, Setti
 		}
 
 		try {
-			Registry<ActionFactory> padContents = de.tobias.playpad.PlayPadPlugin.getRegistryCollection().getActions();
+			Registry<ActionFactory> padContents = de.tobias.playpad.PlayPadPlugin.getRegistries().getActions();
 			padContents.loadComponentsFromFile("Actions.xml", getClass().getClassLoader(), module, bundle);
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -154,7 +154,7 @@ public class MediaPluginImpl implements PlayPadPluginStub, PluginArtifact, Setti
 		{
 			if (newValue) {
 				videoViewController.blind(true);
-				Pane root = (Pane) de.tobias.playpad.PlayPadPlugin.getImplementation().getMainViewController().getParent();
+				Pane root = (Pane) de.tobias.playpad.PlayPadPlugin.getInstance().getMainViewController().getParent();
 				if (blindHUD != null)
 					blindHUD.addToParent(root);
 			} else {
diff --git a/PlayWallPluginMedia/src/main/java/de/tobias/playpad/mediaplugin/main/impl/MediaViewController.java b/PlayWallPluginMedia/src/main/java/de/tobias/playpad/mediaplugin/main/impl/MediaViewController.java
index 405051ca..a472434d 100644
--- a/PlayWallPluginMedia/src/main/java/de/tobias/playpad/mediaplugin/main/impl/MediaViewController.java
+++ b/PlayWallPluginMedia/src/main/java/de/tobias/playpad/mediaplugin/main/impl/MediaViewController.java
@@ -64,7 +64,7 @@ public class MediaViewController implements ProfileListener {
 
 		stage = new Stage();
 		stage.setScene(new Scene(stackPane, Color.BLACK));
-		PlayPadPlugin.getImplementation().getIcon().ifPresent(stage.getIcons()::add);
+		PlayPadPlugin.getInstance().getIcon().ifPresent(stage.getIcons()::add);
 
 		Path path = ApplicationUtils.getApplication().getPath(PathType.CONFIGURATION, "style.css");
 		if (Files.exists(path))
diff --git a/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/loader/MacAudioImplLoader.scala b/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/loader/MacAudioImplLoader.scala
index 55e17549..56ec9c57 100644
--- a/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/loader/MacAudioImplLoader.scala
+++ b/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/loader/MacAudioImplLoader.scala
@@ -31,7 +31,7 @@ class MacAudioImplLoader extends AudioModuleLoader {
 	}
 
 	override def init(module: Module): Unit = {
-		val registry = PlayPadPlugin.getRegistryCollection.getAudioHandlers
+		val registry = PlayPadPlugin.getRegistries.getAudioHandlers
 		val nativeMac = new NativeAudioMacHandlerFactory("NativeAudio")
 		nativeMac.setName("NativeAudio")
 		registry.registerComponent(nativeMac, module)
diff --git a/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/loader/WindowsAudioImplLoader.scala b/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/loader/WindowsAudioImplLoader.scala
index ee513823..e808b2ba 100644
--- a/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/loader/WindowsAudioImplLoader.scala
+++ b/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/loader/WindowsAudioImplLoader.scala
@@ -44,7 +44,7 @@ class WindowsAudioImplLoader extends AudioModuleLoader {
 	}
 
 	override def init(module: Module): Unit = {
-		val registry = PlayPadPlugin.getRegistryCollection.getAudioHandlers
+		val registry = PlayPadPlugin.getRegistries.getAudioHandlers
 		val nativeWin = new NativeAudioWinHandlerFactory("NativeAudio")
 		nativeWin.setName("NativeAudio")
 		registry.registerComponent(nativeWin, module)
-- 
GitLab