public override void CMD_provider(Arguments args, Guid rootId)
        {
            List <string> providers = new List <string>();

            var dynTypes = ModuleBuilderManager.GetManager().Provider.GetDynamicModuleTypes();
            MultisiteManager msManager = MultisiteManager.GetManager();
            var links = msManager.GetSiteDataSourceLinks();

            foreach (var datalink in links.Where(l => !l.DataSourceName.StartsWith("Telerik.Sitefinity.")))
            {
                if (dynTypes.Where(mt => mt.ModuleName == datalink.DataSourceName).FirstOrDefault() != null)
                {
                    providers.Add(ProviderName(datalink.ProviderName));
                }
            }

            // Displays the list of providers
            if (args.Count == 0)
            {
                string currentProvider = ProviderName(svc.Get_Provider());
                summary = string.Join("\n", providers.Select(provider => provider + (provider == currentProvider ? " <=" : "")));
                return;
            }

            // Selects a provider
            string newProvider = providers.Where(provider => provider.ToLower() == args.FirstKey).FirstOrDefault();

            if (newProvider == null)
            {
                svc.Set_Error("Invalid provider: " + args.FirstKey);
                return;
            }

            if (rootId != Guid.Empty)
            {
                var  dynType = ModuleBuilderManager.GetManager().Provider.GetDynamicModuleType(rootId);
                Type type    = TypeResolutionService.ResolveType(dynType.GetFullTypeName());
                svc.Set_Path(newProvider + " - " + type.FullName.Substring(38));
            }
            newProvider = newProvider == "Default" ? "OpenAccessProvider" : newProvider;
            svc.Set_Provider(newProvider);
        }