/// <summary>
        /// This class should be created and passed into Application.Run( ... )
        /// </summary>
        /// <param name="options"> </param>
        public GwupeClientAppContext(List <GwupeOption> options)
        {
            CurrentAppContext = this;
            Options           = options;
            XmlConfigurator.Configure(Assembly.GetExecutingAssembly().GetManifestResourceStream("Gwupe.Agent.log4net.xml"));
            StartupVersion = Regex.Replace(FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion, "\\.[0-9]+$", "");
            Logger.Info("Gwupe" + Program.BuildMarker + ".Agent Starting up [" + StartupVersion + "]");
#if DEBUG
            foreach (var manifestResourceName in Assembly.GetExecutingAssembly().GetManifestResourceNames())
            {
                Logger.Debug("Embedded Resource : " + manifestResourceName);
            }
#endif
            GwupeServiceProxy   = new GwupeServiceProxy();
            ConnectionManager   = new ConnectionManager();
            LoginManager        = new LoginManager();
            P2PManager          = new P2PManager();
            RosterManager       = new RosterManager();
            EngagementManager   = new EngagementManager();
            NotificationManager = new NotificationManager();
            SearchManager       = new SearchManager();
            CurrentUserManager  = new CurrentUserManager();
            TeamManager         = new TeamManager();
            SettingsManager     = new SettingsManager();
            UIManager           = new UIManager();
            _requestManager     = new RequestManager();
            ScheduleManager     = new ScheduleManager();
            ScheduleManager.AddTask(new CheckUpgradeTask(this)
            {
                PeriodSeconds = 120
            });
            ScheduleManager.AddTask(new CheckServiceTask(this)
            {
                PeriodSeconds = 120
            });
            ScheduleManager.AddTask(new DetectIdleTask(this));
            RepeaterManager     = new RepeaterManager();
            RelationshipManager = new RelationshipManager();
            PartyManager        = new PartyManager();
            SetupChangeLog();
            // Start all the Active Managers
            UIManager.Start();
            ScheduleManager.Start();
            ConnectionManager.Start();
            LoginManager.Start();
            // Set correct last version
            Reg.LastVersion = StartupVersion;
        }