Logger now correctly handles null objects.
Logger now correctly handles null objects.

 Binary files a/Assets/Plugins/KerbalEngineer.Unity.dll and b/Assets/Plugins/KerbalEngineer.Unity.dll differ
--- a/Assets/Prefabs/Window.prefab
+++ b/Assets/Prefabs/Window.prefab
@@ -691,8 +691,8 @@
   m_RootOrder: 1
   m_AnchorMin: {x: 1, y: 0}
   m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 20, y: 0}
+  m_AnchoredPosition: {x: -2, y: 0}
+  m_SizeDelta: {x: 16, y: -4}
   m_Pivot: {x: 1, y: .5}
 --- !u!225 &22579498
 CanvasGroup:

--- a/KerbalEngineer/Editor/BuildOverlayPartInfo.cs
+++ b/KerbalEngineer/Editor/BuildOverlayPartInfo.cs
@@ -131,7 +131,7 @@
                     position.x = Input.mousePosition.x - 3 - position.width;
                 }
 
-                part = EditorLogic.fetch.ship.parts.Find(p => p.stackIcon.Highlighted) ?? EditorLogic.SelectedPart;
+                part = EditorLogic.fetch.ship.parts.Find(p => p.HighlightActive) ?? EditorLogic.SelectedPart;
                 if (part != null)
                 {
                     if (!part.Equals(selectedPart))

--- a/KerbalEngineer/Logger.cs
+++ b/KerbalEngineer/Logger.cs
@@ -94,9 +94,13 @@
                             messages.Add(new[] {"\t", o.ToString()});
                         }
                     }
+                    else if (obj != null)
+                    {
+                        messages.Add(new[] {"Log " + DateTime.Now.TimeOfDay, obj.ToString()});
+                    }
                     else
                     {
-                        messages.Add(new[] {"Log " + DateTime.Now.TimeOfDay, obj.ToString()});
+                        messages.Add(new[] { "Log " + DateTime.Now.TimeOfDay, "Null" });
                     }
                 }
                 catch (Exception ex)
@@ -120,9 +124,13 @@
                             messages.Add(new[] {"\t", o.ToString()});
                         }
                     }
+                    else if (obj != null)
+                    {
+                        messages.Add(new[] {"Log " + DateTime.Now.TimeOfDay, obj.ToString()});
+                    }
                     else
                     {
-                        messages.Add(new[] {"Log " + DateTime.Now.TimeOfDay, obj.ToString()});
+                        messages.Add(new[] { "Log " + DateTime.Now.TimeOfDay, "Null" });
                     }
                 }
                 catch (Exception ex)

--- a/KerbalEngineer/Settings/SettingsWindow.cs
+++ b/KerbalEngineer/Settings/SettingsWindow.cs
@@ -28,10 +28,18 @@
             {
                 m_Window = StyleManager.CreateWindow("SETTINGS", 600.0f);
 
-                Setting keyBindings = StyleManager.CreateSetting("Key Bindings", m_Window);
-                AddButton(keyBindings, "EDIT KEY BINDINGS", 304.0f, KeyBinder.Show);
+                AddKeyBindingsButton();
+                AddFlightActivationModes();
+                AddBuildOverlayOptions();
 
+                StyleManager.Process(m_Window);
+            }
+        }
 
+        private static void AddBuildOverlayOptions()
+        {
+            if (m_Window != null)
+            {
                 Setting buildOverlay = StyleManager.CreateSetting("Build Engineer Overlay", m_Window);
                 Toggle buildOverlayVisible = AddToggle(buildOverlay, "VISIBLE", 100.0f, value => BuildOverlay.Visible = value);
                 Toggle buildOverlayNamesOnly = AddToggle(buildOverlay, "NAMES ONLY", 100.0f, value => BuildOverlayPartInfo.NamesOnly = value);
@@ -42,17 +50,6 @@
                     buildOverlayNamesOnly.isOn = BuildOverlayPartInfo.NamesOnly;
                     buildOverlayClickToOpen.isOn = BuildOverlayPartInfo.ClickToOpen;
                 });
-
-                Setting flightActivationMode = StyleManager.CreateSetting("Flight Engineer Activation Mode", m_Window);
-                Toggle flightActivationModeCareer = AddToggle(flightActivationMode, "CAREER", 100.0f, value => FlightEngineerCore.IsCareerMode = value);
-                Toggle flightActivationModePartless = AddToggle(flightActivationMode, "PARTLESS", 100.0f, value => FlightEngineerCore.IsCareerMode = !value);
-                AddUpdateHandler(flightActivationMode, () =>
-                {
-                    flightActivationModeCareer.isOn = FlightEngineerCore.IsCareerMode;
-                    flightActivationModePartless.isOn = !FlightEngineerCore.IsCareerMode;
-                });
-
-                StyleManager.Process(m_Window);
             }
         }
 
@@ -62,13 +59,37 @@
 
             if (setting != null)
             {
-                button = setting.AddButton(text,width, onClick);
+                button = setting.AddButton(text, width, onClick);
             }
 
             return button;
         }
 
-        private static Toggle AddToggle(Setting setting, string text,  float width,UnityAction<bool> onValueChanged)
+        private static void AddFlightActivationModes()
+        {
+            if (m_Window != null)
+            {
+                Setting flightActivationMode = StyleManager.CreateSetting("Flight Engineer Activation Mode", m_Window);
+                Toggle flightActivationModeCareer = AddToggle(flightActivationMode, "CAREER", 100.0f, value => FlightEngineerCore.IsCareerMode = value);
+                Toggle flightActivationModePartless = AddToggle(flightActivationMode, "PARTLESS", 100.0f, value => FlightEngineerCore.IsCareerMode = !value);
+                AddUpdateHandler(flightActivationMode, () =>
+                {
+                    flightActivationModeCareer.isOn = FlightEngineerCore.IsCareerMode;
+                    flightActivationModePartless.isOn = !FlightEngineerCore.IsCareerMode;
+                });
+            }
+        }
+
+        private static void AddKeyBindingsButton()
+        {
+            if (m_Window != null)
+            {
+                Setting keyBindings = StyleManager.CreateSetting("Key Bindings", m_Window);
+                AddButton(keyBindings, "EDIT KEY BINDINGS", 304.0f, KeyBinder.Show);
+            }
+        }
+
+        private static Toggle AddToggle(Setting setting, string text, float width, UnityAction<bool> onValueChanged)
         {
             Toggle toggle = null;
 

 Binary files a/Output/KerbalEngineer/KerbalEngineer and b/Output/KerbalEngineer/KerbalEngineer differ
 Binary files a/Output/KerbalEngineer/KerbalEngineer.Unity.dll and b/Output/KerbalEngineer/KerbalEngineer.Unity.dll differ
 Binary files a/Output/KerbalEngineer/KerbalEngineer.dll and b/Output/KerbalEngineer/KerbalEngineer.dll differ
 Binary files a/Output/KerbalEngineer/prefabs and b/Output/KerbalEngineer/prefabs differ
--- a/Output/KerbalEngineer/prefabs.manifest
+++ b/Output/KerbalEngineer/prefabs.manifest
@@ -1,9 +1,9 @@
 ManifestFileVersion: 0
-CRC: 3210499501
+CRC: 247544766
 Hashes:
   AssetFileHash:
     serializedVersion: 2
-    Hash: 82a83dd0d6754676160fa0160fdd2f82
+    Hash: 6c0345330dfdd65954f99b5bf002cb14
   TypeTreeHash:
     serializedVersion: 2
     Hash: f08f4b318e7775189aba716ae3ef79f9