private async void DeleteServer(object param)
        {
            var server = param as Server;

            if (server == null)
            {
                return;
            }

            var result = Dialog.ShowMessage(new MessageBoxSettings
            {
                Title             = "Delete Server",
                Text              = $"Are you sure you want to delete {server.Name}?",
                MessageType       = MessageType.Question,
                MessageBoxButtons = MessageBoxButtons.OkCancel
            });

            if (result.Equals(MessageBoxResult.Cancel))
            {
                return;
            }

            var serverViewModel = SelectedServerViewModels.FirstOrDefault(s => s.Server.Name.Equals(server.Name));

            if (serverViewModel != null)
            {
                Close(serverViewModel);
            }

            try
            {
                IsLoading = true;

                await serverService.DeleteServer(server);

                Servers.Remove(server);
            }
            catch (Exception ex)
            {
                ShowMessage(new Message {
                    MessageType = MessageType.Error, Text = ex.Message
                });
            }
            finally
            {
                IsLoading = false;
            }
        }
        public void Close(object param)
        {
            var server = param as ServerViewModel;

            if (server != null)
            {
                server.Dispose();

                IDisposable subscription;
                if (serverObservableSubscriptions.TryGetValue(server.Server.Name, out subscription))
                {
                    subscription.Dispose();
                }

                serverObservableSubscriptions.Remove(server.Server.Name);

                SelectedServerViewModels.Remove(server);
            }
        }