diff --git a/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
index c39a62b5f2f71a1a438337e69e65e53a2bc1636f..1d1bb173c459a7988765091cc943ee3353619968 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 9a5056567d1763cf8a29dd11af980808830bc6ec..e18eb14424175d7ca90e15b7bfb36c2389bf1543 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 8ce9197ecd36d56896a076442e18c9aa59f46af4..debfde8f7621009b58bd016c69830fc451ee7596 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 413bd152a0a24a35fc49e7d12b1461d9e4265828..c3170a59e761c7721ec4ef48281e31a8b65b2a98 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 5b048cc33dc5e600908f27eb6f3323b2cc82e8b5..c0f010aec5a3c5a4b55e237dc27b8e375c3eb9e2 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 ed22b64f5c5166b65f277e7e2a1ac1add00c6643..afaf1bd51e2f0ce6204ccea7b63f882e80b99493 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 7bee6bb6c142b69fee44980dedcdc5e490cdef8f..eac9e7add5a6e0b5bab06f7157663d96145b06d4 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 3e535f25e85cc30a0acf2c3b64e1f86b4ebe16f5..e3e4b776c8ac0d96d8d07d89b76bded206b095d0 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 363cd49c5d633db3ced6c0620be345feba11ebeb..b66827b8fd353ec0ceb51452cbac26407dae9d27 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 443713d7375966870a8d2ad0d64bf07147f62f39..c44b098a4719ef34447050472486d75735f74747 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 3705d2e01ef5d406ee6fcab24d2b79819ff095c0..f5cbbefc49e1929d32d1510316713b77713eff9f 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 a3b74901b382f7546931d054a80fe7341bebed91..7d1066bc7e41eb7d5c3c8339ad65c7c18bcdb6c5 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 6c80453aca7acaf70684331c8ac0f110161215b7..6cea7473ee2828b8f6112751bf87883f35674970 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 2d93258aebf8206d4e08af1dfae23da721e391f6..7bd7fa21fd9f019d9e558c679ea742a15faee824 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 de321b07c0dad3187b8fc18054fef3b6d1a7cf3b..f0433d760d52adc33a0ededea9c690785efce813 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 c886229b3a20e4a26c232aadc34f550197065b6a..dca322dd2fc3199cac4134eeb192cee2a8dcb356 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 97c28dd84b25a18ca7328700eb62ada3f3bc1ab8..5665283946bea060a552e92c0426b9b79dcdc54c 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 65addd58ee80b8ee8be43fde96b628b43b374a21..f30ec1112baf53fa35bcc515dba8b4c857feb125 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 b1b53e5e6ffa149eb488bc520187f93535d36707..870eb78548549f57dc6d4e9615e9dfc4a693501a 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 0b77b9316e9a3835b7e83afff439839b809e04ab..e43d028a3caf5928a0e3e46f278c60697ee16cbf 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 1e87d8142a7b4f7e0e2ac8914d59e00f949be8b3..89726f98a930d594c2e393dea5e501a942217bc0 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 ac09fb0eb759d089116398733d1c594dbab890a7..e85315db92647ed2b4e45c6a9b292ff1f7f2e47f 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 8af44ae76389ebde0360f1464440550c6a14db41..356581a74365457dd33c561792b69a2086563c2b 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 af15a4560db08b5aa600ea0d0d0ca209e0c39538..0c9f444b74c0cf4bcccb34fcb4f31b3efa61b463 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 ddbf181fb0c36a333aad88a61fd08b104e9806e4..f2045cb1f1bf113df264d02d713801935c43dca4 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 79f49135c0cb12c93dfb6a68650a1d6443ac886a..d4285db84931eac00a663a5bd23382fd6c270336 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 3fe3ee02f3847e4b21c936cbb34ec93b9fe589cd..cf41c725908cec33630bad90df64b3ed8dfcb222 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 651cff39881b5f05701b74d3a744f3be4b70e277..9f255239ddfe74d5692049a5ae7d5f800442da51 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 093ff7acd82dce0feb318e0f960b1a18472507b0..444d861c0b57f178e51b8be6a198cafbf260dc16 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 8a53dc657b5cce06f85e9fac24902d681f43bcde..4aa46fc2395d2be0337684a289b04bc906d13d0a 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 d607e1cc3ed904a519bf21b40619d3c99757c3c4..e51f18c51524868bb65e3e0710293544686386d9 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 3dc52a90f886b614d21e69ad3fbf54018db8ad8f..18f7230d1c0598cd6b30ea4c3dd746f21d377cea 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 25aa0e209efc0ded8188ae099035c2010414ff5a..316b5173a473597f0478b2d0b946f80f2e185315 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 bb1ddc2ece2494f69e577c6667300a2b697bf611..610ee9a69195608b1f368e13d2be78b9666adbb3 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 404514476e842ce14154fc1a441e7920921c6f03..450cad37df3e754bf236652568246533cc935a54 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 cb323a7f38a1431827ad1c725ee94e16abd0d608..0ff09c25560fb8fa477cd36a06c8e83aeacad7fd 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 75b24bd162d293760a1a502b853d3df9bca1d1d3..d6c8b31dae9c96d3558380d58513eeb0dd27f9dd 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 f93a028eb69345785de71669592b47b3f21ff3cd..b73529945c802ae9bb6b33730c32e9f20f1fe4a0 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 d4e3992d4df87f99e653527a6a899117a9c43d32..57701d9b6afef68d14f9bb31d05f3fce5bdeaa40 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 5a2acd69bc685803a9ffbe40205fc83b1b33ea2e..7b4731c2d4beda40f3a2322ae330b86ff2c3b205 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 31c9827f81c9c5117ab0d27bda4b8dc83d7ef2f0..2e55a939b2e51d6b88b12107d0a7ecd1ef35caab 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 8521b0bfcb04c1b977f7278aa82012f96e8cb08c..4451f6e67fc37004aaeaffc1b8e6f812e6653832 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 d0282638dbdd1ec2d9c67ddf8204e5588c0f2b09..9c0c6533c61842896e1158047181c6900dad4971 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 3e8f68a461cb83593ba69fe90523a8d116126957..7ef7ea84252ea92c262d9d359b683df7796cf5fc 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 c47db038ac7609d71ad6c5820c693055bcbc977a..81a65794aa1d0be3214b3ddec88e3cd383fc7a9e 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 88a2e1f85c9fdefc3c8a60d3e1069cf46a797f4c..4b00a077ddb4e6ab36637565f1a5cabe8abd39c0 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 effb5c554d2fe246c6d6ebc384b43dbb0f70ff33..bd40604833c5b0ca798fc9deb966a7025364096d 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 c9943b38b12908843ed8cb5b1fdf839059439cba..31eeb1c5881755067a6423c2fadeb6b8e55791e6 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 00ad0a548fe84a0125f1e7e593217cd014c5865b..d42b38eec8f5ddbcc2772cfccad4032e9ca4f97f 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 11d8add4d0feef26634f5f488caebf5f90fdc62b..53ca186acd207eb9c0f90d28c3d473c0135f3843 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 0fc19093ca01d4ccddb1291e0a9421eb8e87182e..60ff437ce7635a83ff72d4f74bfc878ee31caec5 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 b5dd8aacb8747da2a2722a3f12f3cf091eb6c115..6ff132ec5ac56e0baaa4c9b6472e6c7d34962f33 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 c38e98436229880ac8acfa247f75403bfd0dda86..5b719274646377d6e962db9e9bdb9d8cfd7bc6da 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 99986e23e2af62e78c2eafd6de3f5f84e6cd69af..20e7f45d2ef3f798555acda8d0062c9cad47c5f5 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 3a70a0741ddc14fe954af91bbf882a8f78fac7ec..5b21ad95d7c702cfe498a7d722be1db3826460f7 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 1be9311e5688e0650cb09437a286437cce1313d4..56eb71c98416217a5bd385a176f4690b084aa86d 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 c89a9ce35eedf2223a982f580ba07142b0783e5f..4517436191751b721ca5cc1ee98b18254fc2a196 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 3b4d46b736b63d24b97dde97dc4b16c5b80d9606..8b80e6baa28c41a37189b8a455abba1fcdc6f340 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 c7e129bb30fa68e406aac41b575962194d0773e1..a1c036f62bbc06e3877c4f305b0cd57a6a257bde 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 f0b4ec276236695899880d84a4ac105363551f25..2e83e0afce2c5614b028b8cfc0f3073adc357c9c 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 195939aacd588eb8af4ef1bccd2b4f3164d739c9..93b05c5a6b0018a113445d426422e1700b4849ce 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 a5e8621090273e5c7e314b13fa2194afa1c916d5..8a8420c516e692f5af4f95a7b98695fdf573b70c 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 12266eabcd5e6ff443834a550b482f5f181ca4c4..bf944119365112ca9ea0d9808f5d45f31eff1dab 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 6b55883037d4766542fa9af668fc711a1bdd29d2..42f7f2a724be34cc14d8307fc82951da4f736c68 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 c0ec89468424ef42f677e0a71811f11fd6914a99..d21198607183d63430307e9b7c3faf473cb59a96 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 67fc96b072a0ce9f613094cf389ec7c49583a3ed..d7c22e77ff685bfabb70760d5178f59984a013ce 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 9a675844fd89038159bb1544acce4ab0857c1f7f..d71c2809c201209195f46e4ea42163bcf2cc9fb3 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 5abbf5e27e369fb33dd3de668cdaf2d73a2ec4c4..95a45baa048def32a79ec70ef595c32611f4bd77 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 306cef68f9c843b4be63381752c56a3b2e9e7b35..d4c9f6a550021f0a992569f8e7ab2baf36c7d286 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 b56f69202ad8d22856e5475d8fc2144821865c8d..fd06d289d49901d970a3dcf8e980e9fe2822af26 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 c91bd9c25db0a35daa50fd3c2868ace0f4e20e07..3aa7cc5677aef2c2275b532eafda7df9a99c2e17 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 1e1fb4bbec67366c05ed37a2ebc1891fc8971675..23ff1a1af5aa1a51b0ff99c0786b2e11b96e4277 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 a539a535282b3a550c8f40c193be8e3dc1ac206e..66decdb7ff9af998988a8bc7e9da771a337a6df7 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 e7945598af9f3f29a7a44aad31efd1faeccd998c..5d2ff0ed63b003a0323e9c2eabf05c549d3cff63 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 a75084fc97362e6c6b7bc6c18cfad3e7ddf6a610..06dc4615e7cdb8561df9a0641a97b0d4b3a1e95d 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 55bb0f6a448440beeed10563280f891a975c9ce6..8cc6e7e5663c372966eff579612fa0deb848f256 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 bb598947753cf630e454e4027d2ad1ec2ff9f9ae..a7997323573835199cf423448b489056b4647b12 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 747bcea355bf098e02d855d03940f6e15048c015..42e9f6f3f9fa008b88bffecd2e1fa0ed5ff1d55b 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 cfb9a835031ed391533f3992b27331a69955e084..66464b8b1c5e193bca7ea322fdeeae6af36fc31f 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 0abef4b6646f1cd92d59b74482f398481b5a227c..912722919c62458cae1b0ae12225a6103728c388 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 405051ca7ee46e3a246b6d7ac61da4ffa8c0a395..a472434d19a084dc7afea782a5a0250eb0217e25 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 55e17549c83098cf0a44dd07a25c560352c107a9..56ec9c5778c95ca58f63b447a18d9a2f6efb940f 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 ee51382340b07af89bd772bd080f21cd2c4e8f51..e808b2bacaafe1104b9e517739dae32b8b17816e 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)