diff --git a/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
index d555c157b3fb9430975499dbb622e79b44289ec1..dde9fa6478c5376d8d14e7ba44448e1642251c03 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java
@@ -179,11 +179,13 @@ public class PlayPadImpl implements PlayPad {
 		if (mainViewController == null) {
 			mainViewController = new MainViewController(e -> {
 				mainViewController.openProject(currentProject);
-				globalListeners.forEach(l -> l.projectOpened(currentProject));
+				mainViewListeners.forEach(l -> l.onInit(mainViewController));
+
 				if (onLoaded != null) {
 					onLoaded.accept(e);
 				}
-				mainViewListeners.forEach(l -> l.onInit(mainViewController));
+
+				globalListeners.forEach(l -> l.projectOpened(currentProject));
 				Platform.setImplicitExit(true);
 			});
 		} else {
diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java
index 2b4baeef880ee3600d71118ad867885aea688975..fab822a2958148d5e80d6a24fffbb831f8d98771 100644
--- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java
+++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java
@@ -11,6 +11,7 @@ import de.tobias.playpad.plugin.PlayPadPluginStub;
 import de.tobias.playpad.plugin.playout.log.LogSeasons;
 import de.tobias.playpad.plugin.playout.log.listener.PadPlayLogListener;
 import de.tobias.playpad.plugin.playout.viewcontroller.MainViewControllerListener;
+import de.tobias.playpad.plugin.playout.viewcontroller.PlayoutLogStatusIconListener;
 
 @SuppressWarnings("unused")
 public class PlayoutLogPlugin implements PlayPadPluginStub, PluginArtifact {
@@ -23,10 +24,16 @@ public class PlayoutLogPlugin implements PlayPadPluginStub, PluginArtifact {
 
 		module = new Module(descriptor.getName(), descriptor.getArtifactId());
 
+		PlayoutLogStatusIconListener playoutLogStatusIconListener = new PlayoutLogStatusIconListener();
+
 		PlayPadPlugin.getInstance().addMainViewListener(new MainViewControllerListener());
+		PlayPadPlugin.getInstance().addMainViewListener(playoutLogStatusIconListener);
+
 		PlayPadPlugin.getInstance().addGlobalListener(new ProjectListener());
 		PlayPadPlugin.getInstance().addPadListener(new PadPlayLogListener());
 
+		LogSeasons.addListener(playoutLogStatusIconListener);
+
 		PlayOutLogInitializer.init();
 
 		Logger.debug("Enable Playout Log Plugin");
diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeasons.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeasons.java
index 45a0784490e5f87e100e58f42629df10867375db..0b8ff4dc4ced7a915d39b3616e77b23e923c4662 100644
--- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeasons.java
+++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeasons.java
@@ -2,27 +2,36 @@ package de.tobias.playpad.plugin.playout.log;
 
 import de.tobias.playpad.plugin.playout.log.storage.LogSeasonStorageHandler;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public class LogSeasons {
 
-	private static LogSeason INSTANCE;
+	private static LogSeason currentLogSession;
 	private static LogSeasonStorageHandler storageHandler;
 
-	public static LogSeason getInstance() {
-		return INSTANCE;
+	private static List<LogSessionListener> listeners = new ArrayList<>();
+
+	private LogSeasons() {
+
+	}
+
+	public static LogSeason getCurrentSession() {
+		return currentLogSession;
 	}
 
 	public static LogSeason createLogSeason(String name, int columns, int rows) {
-		INSTANCE = new LogSeason(name, columns, rows);
+		currentLogSession = new LogSeason(name, columns, rows);
 
 		// Save
 		LogSeasonStorageHandler storageHandler = LogSeasons.getStorageHandler();
 		if (storageHandler != null) {
-			storageHandler.addLogSeason(INSTANCE);
+			storageHandler.addLogSeason(currentLogSession);
 		}
 
-		return INSTANCE;
+		listeners.forEach(l -> l.playoutLogStarted(currentLogSession));
+
+		return currentLogSession;
 	}
 
 	public static LogSeasonStorageHandler getStorageHandler() {
@@ -34,7 +43,8 @@ public class LogSeasons {
 	}
 
 	public static void stop() {
-		INSTANCE = null;
+		listeners.forEach(l -> l.playoutLogStopped(currentLogSession));
+		currentLogSession = null;
 	}
 
 	public static List<LogSeason> getAllLogSeasonsLazy() {
@@ -43,9 +53,21 @@ public class LogSeasons {
 
 	public static void deleteSession(int id) {
 		getStorageHandler().deleteSession(id);
-	};
+	}
 
 	public static LogSeason getLogSeason(int id) {
 		return getStorageHandler().getLogSeason(id);
 	}
+
+	/*
+	Listener
+	 */
+
+	public static void addListener(LogSessionListener logSessionListener) {
+		listeners.add(logSessionListener);
+	}
+
+	public static void removeListener(LogSessionListener logSessionListener) {
+		listeners.remove(logSessionListener);
+	}
 }
diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSessionListener.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSessionListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..8054cccec40ce925b933d52f690ee87fdc11de69
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSessionListener.java
@@ -0,0 +1,8 @@
+package de.tobias.playpad.plugin.playout.log;
+
+public interface LogSessionListener
+{
+	void playoutLogStarted(LogSeason logSeason);
+
+	void playoutLogStopped(LogSeason logSeason);
+}
diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java
index a21ee0b8c060fb4069169bbb8ceb9b780c9359e6..05ce0b71bd3f45bcb790fdf0f8fae52ccd1b6354 100644
--- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java
+++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java
@@ -16,7 +16,7 @@ public class PadPlayLogListener implements PadListener {
 	@Override
 	public void onStatusChange(Pad pad, PadStatus newValue) {
 		if (newValue == PadStatus.PLAY) {
-			LogSeason instance = LogSeasons.getInstance();
+			LogSeason instance = LogSeasons.getCurrentSession();
 			if (instance != null) {
 				instance.getLogItems().stream().filter(item -> item.getUuid().equals(pad.getPaths().get(0).getId())).forEach(item -> {
 					PlayOutItem playoutItem = new PlayOutItem(item.getUuid(), instance, System.currentTimeMillis());
@@ -29,7 +29,7 @@ public class PadPlayLogListener implements PadListener {
 
 	@Override
 	public void onMediaPathChanged(Pad pad, ListChangeListener.Change<? extends MediaPath> value) {
-		LogSeason instance = LogSeasons.getInstance();
+		LogSeason instance = LogSeasons.getCurrentSession();
 		if (instance != null) {
 			while (value.next()) {
 				if (value.wasAdded()) {
diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogStatusIconListener.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogStatusIconListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..577d0a4c1c1ebd3a1814abf76610f278ea11bff5
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogStatusIconListener.java
@@ -0,0 +1,34 @@
+package de.tobias.playpad.plugin.playout.viewcontroller;
+
+import de.thecodelabs.utils.ui.icon.FontAwesomeType;
+import de.thecodelabs.utils.ui.icon.FontIcon;
+import de.tobias.playpad.plugin.WindowListener;
+import de.tobias.playpad.plugin.playout.log.LogSeason;
+import de.tobias.playpad.plugin.playout.log.LogSessionListener;
+import de.tobias.playpad.viewcontroller.main.IMainViewController;
+
+public class PlayoutLogStatusIconListener implements LogSessionListener, WindowListener<IMainViewController> {
+	private FontIcon logIcon;
+
+	@Override
+	public void playoutLogStarted(LogSeason logSeason) {
+		logIcon.setVisible(true);
+	}
+
+	@Override
+	public void playoutLogStopped(LogSeason logSeason) {
+		logIcon.setVisible(false);
+	}
+
+	@Override
+	public void onInit(IMainViewController mainViewControllerListener) {
+		// LogIcon
+		logIcon = new FontIcon(FontAwesomeType.LIST);
+		mainViewControllerListener.performLayoutDependedAction((oldToolbar, newToolbar) -> {
+			if (oldToolbar != null) {
+				oldToolbar.removeToolbarItem(logIcon);
+			}
+			newToolbar.addToolbarItem(logIcon);
+		});
+	}
+}
diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java
index 1c48c973b6274b6edc0d508e825ff9f6b71089f7..427edbe10f7cb9ec19b54bf013266c9d14dd907a 100644
--- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java
+++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java
@@ -5,8 +5,6 @@ import de.thecodelabs.logger.Logger;
 import de.thecodelabs.storage.proxy.SettingsProxy;
 import de.thecodelabs.utils.ui.NVC;
 import de.thecodelabs.utils.ui.NVCStage;
-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.playout.Strings;
@@ -16,7 +14,6 @@ import de.tobias.playpad.plugin.playout.log.LogSeasons;
 import de.tobias.playpad.plugin.playout.storage.PlayoutLogSettings;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.project.ProjectSettings;
-import de.tobias.playpad.viewcontroller.main.MenuToolbarViewController;
 import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
 import javafx.scene.control.Button;
@@ -49,8 +46,6 @@ public class PlayoutLogViewController extends NVC {
 	@FXML
 	private CheckBox autoStartCheckbox;
 
-	private FontIcon logIcon;
-
 	public PlayoutLogViewController(Window owner) {
 		load("view/dialog", "PlayoutLogDialog", Localization.getBundle());
 
@@ -64,13 +59,10 @@ public class PlayoutLogViewController extends NVC {
 	public void init() {
 		logList.getItems().setAll(LogSeasons.getAllLogSeasonsLazy());
 
-		// LogIcon
-		logIcon = new FontIcon(FontAwesomeType.LIST);
-
-		if (LogSeasons.getInstance() != null) { // Running
+		if (LogSeasons.getCurrentSession() != null) { // Running
 			startButton.setText(Localization.getString(Strings.PLAYOUT_LOG_DIALOG_BUTTON_STOP));
 			nameTextField.setDisable(true);
-			nameTextField.setText(LogSeasons.getInstance().getName());
+			nameTextField.setText(LogSeasons.getCurrentSession().getName());
 		} else {
 			startButton.setText(Localization.getString(Strings.PLAYOUT_LOG_DIALOG_BUTTON_START));
 			nameTextField.setDisable(false);
@@ -96,9 +88,7 @@ public class PlayoutLogViewController extends NVC {
 
 	@FXML
 	private void startButtonHandler(ActionEvent event) {
-		final MenuToolbarViewController controller = PlayPadPlugin.getInstance().getMainViewController().getMenuToolbarController();
-
-		if (LogSeasons.getInstance() == null) { // Start
+		if (LogSeasons.getCurrentSession() == null) { // Start
 			if (nameTextField.getText().isEmpty()) {
 				return;
 			}
@@ -109,12 +99,10 @@ public class PlayoutLogViewController extends NVC {
 			LogSeason logSeason = LogSeasons.createLogSeason(nameTextField.getText(), settings.getColumns(), settings.getRows());
 			logSeason.createProjectSnapshot(currentProject);
 
-			controller.addToolbarItem(logIcon);
 			startButton.setText(Localization.getString(Strings.PLAYOUT_LOG_DIALOG_BUTTON_STOP));
 			nameTextField.setDisable(false);
 		} else { // Stop
 			LogSeasons.stop();
-			controller.removeToolbarItem(logIcon);
 			startButton.setText(Localization.getString(Strings.PLAYOUT_LOG_DIALOG_BUTTON_START));
 			nameTextField.setDisable(false);
 		}