public void Setup()
        {
            RemoveEventListeners();

            ServerInitialized.Subscribe(data =>
            {
                DebugLog("Started server, clearing logs and removing event listeners.");
                Clear();
            });

            WelcomeClient.Subscribe(data =>
            {
                DebugLog($"Client {data.client_.guid} joined, replicating logs.");
                ReplicatePersonal(data.client_);
            });
            ClientDisconnected.Subscribe(data =>
            {
                DebugLog($"Client {data.networkPlayer_.guid} left, removing logs.");
                personalChatBuffers.Remove(GeneralUtilities.getUniquePlayerString(data.networkPlayer_));
                needsReplication.Remove(GeneralUtilities.getUniquePlayerString(data.networkPlayer_));
            });
            // fix remote logs
            SetServerChat.Subscribe(data =>
            {
                GeneralUtilities.logExceptions(() =>
                {
                    DebugLog($"Replicating remote log from SetServerChat...");
                    RemoveEventListeners();

                    AddRemoteLog(data.chatText_);
                });
            });
            ConnectedToServer.Subscribe(data =>
            {
                DebugLog("Connected to server, clearing logs and removing event listeners.");
                Clear();
                G.Sys.GameManager_.StartCoroutine(RemoveEventListenersCoroutine());
            });
            StartMode.Subscribe(data =>
            {
                DebugLog("Started mode from server, removing event listeners.");
                G.Sys.GameManager_.StartCoroutine(RemoveEventListenersCoroutine());
            });
        }