public override void Setup()
        {
            SetupTrace();
            PromptInterfaces();

            var typeList = ScriptTypes;

            if (typeList.Length > 0 && typeList.All(t => t.IsSubclassOf(typeof(BaseScript)) && t != typeof(BatchScript) && !t.IsSubclassOf(typeof(BatchScript))))
            {
                var allClasses = Assembly.GetExecutingAssembly().GetTypes().Where(a => a.IsClass && a.Namespace != null && a.Namespace.Contains(@"Scripts")).ToList();

                Scripts = new BaseScript[ScriptTypes.Length];
                foreach (var t in allClasses)
                {
                    if (ScriptTypes.Contains(t) && t.IsSubclassOf(typeof(BaseScript)) && !t.IsSubclassOf(typeof(BatchScript)))
                    {
                        Scripts[ScriptTypes.ToList().IndexOf(t)] = (BaseScript)Activator.CreateInstance(t);
                    }
                }
            }
            else
            {
                throw new ArgumentNullException("No valid types specified");
            }
        }