// Called by Unity once to initialize the class, just before Update is called.
        public void Start( )
        {
            _logger.Trace("Start");

            if (_addonInitialized == true)
            {
                // For some reason the addon can be instantiated several times by the KSP addon loader (generally when going to/from the VAB),
                // even though we set onlyOnce to true in the KSPAddon attribute.
                return;
            }
            _addonInitialized = true;
            _active           = false;



            // Config
            Config = new Config( );
            Config.Load( );



//			_logger.Trace( "Making DMagic Factory" );
            DMagic = new DMagicFactory( );
//			_logger.Trace( "Made DMagic Factory" );



//			_logger.Trace( "Making ScienceContext" );
            Science = new ScienceContext(this);
//			_logger.Trace( "Made ScienceContext" );



            // Start event handlers
            ScienceEventHandler = new xScienceEventHandler(this);



            // Settings window
            _settingsWindow = new SettingsWindow(this);
            Config.UseBlizzysToolbarChanged += Settings_UseBlizzysToolbarChanged;



            // Help window
            _helpWindow = new HelpWindow(this);



            // Status window
            _alertNoise                 = gameObject.AddComponent <Noise>( );
            _statusWindow               = new StatusWindow(this);
            _statusWindow.NoiseEvent   += OnPlayNoise;
            _statusWindow.WindowClosed += OnStatusWindowClosed;



            // Checklist window
            _checklistWindow = new ScienceWindow(this, _settingsWindow, _helpWindow);
            _checklistWindow.OnCloseEvent += OnChecklistWindowClosed;
            _checklistWindow.OnOpenEvent  += OnChecklistWindowOpened;

            // Save and load checklist window config when the game scene is changed
            // We are only visible in some scenes
            GameEvents.onGameSceneSwitchRequested.Add(new EventData <GameEvents.FromToAction <GameScenes, GameScenes> > .OnEvent(this.OnGameSceneSwitch));



            // Callbacks for buttons - we init when the "Launcher" toolbar is ready
            GameEvents.onGUIApplicationLauncherReady.Add(Load);
            GameEvents.onGUIApplicationLauncherDestroyed.Add(Unload);

            // Callbacks for F2
            GameEvents.onHideUI.Add(OnHideUI);
            GameEvents.onShowUI.Add(OnShowUI);


            DontDestroyOnLoad(this);


            _logger.Trace("Done Start");
        }