private async Task Add(object arg)
        {
            viewModel.SubmitAttempted = true;
            if (!viewModel.ValidationTemplate.Validate())
            {
                viewModel.NotifyOfPropertyChange(string.Empty);
                viewModel.SubmitAttempted = false;
                windowManager.ScrollFirstErrorIntoView(viewModel);

                return;
            }

            viewModel.InProgress = true;

            var instanceMetadata = new MonitoringNewInstance
            {
                DisplayName        = viewModel.InstanceName,
                Name               = viewModel.InstanceName.Replace(' ', '.'),
                ServiceDescription = viewModel.Description,
                InstallPath        = viewModel.DestinationPath,
                LogPath            = viewModel.LogPath,
                HostName           = viewModel.HostName,
                Port               = Convert.ToInt32(viewModel.PortNumber),
                ErrorQueue         = viewModel.ErrorQueueName,
                TransportPackage   = viewModel.SelectedTransport.Name,
                ConnectionString   = viewModel.ConnectionString,
                ServiceAccount     = viewModel.ServiceAccount,
                ServiceAccountPwd  = viewModel.Password
            };

            using (var progress = viewModel.GetProgressObject("ADDING INSTANCE"))
            {
                var reportCard = await Task.Run(() => installer.Add(instanceMetadata, progress, PromptToProceed));

                if (reportCard.HasErrors || reportCard.HasWarnings)
                {
                    windowManager.ShowActionReport(reportCard, "ISSUES ADDING INSTANCE", "Could not add new instance because of the following errors:", "There were some warnings while adding the instance:");
                    return;
                }

                if (reportCard.CancelRequested)
                {
                    return;
                }
            }

            viewModel.TryClose(true);

            eventAggregator.PublishOnUIThread(new RefreshInstances());
        }