private async void DeleteOverlayButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            await this.Window.RunAsyncOperation(async() =>
            {
                Button button = (Button)sender;
                OverlayEndpointListing overlay = (OverlayEndpointListing)button.DataContext;

                ChannelSession.Settings.OverlayCustomNameAndPorts.Remove(overlay.Name);
                await ChannelSession.Services.OverlayServers.RemoveOverlay(overlay.Name);
                this.overlays.Remove(overlay);
            });
        }
        private async void AddOverlayButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            await this.Window.RunAsyncOperation(async() =>
            {
                if (!string.IsNullOrEmpty(this.OverlayNameTextBox.Text))
                {
                    if (!this.overlays.Any(p => p.Name.Equals(this.OverlayNameTextBox.Text)))
                    {
                        int port = this.overlays.Max(o => o.Port) + 1;
                        OverlayEndpointListing overlay = new OverlayEndpointListing(this.OverlayNameTextBox.Text, port);

                        ChannelSession.Settings.OverlayCustomNameAndPorts[overlay.Name] = overlay.Port;
                        await ChannelSession.Services.OverlayServers.AddOverlay(overlay.Name, overlay.Port);
                        this.overlays.Add(overlay);
                    }
                }
                this.OverlayNameTextBox.Text = string.Empty;
                return(Task.FromResult(0));
            });
        }