Currected exception logging typo from 'Widnow' to 'Window' in the DisplayStack class.
Currected exception logging typo from 'Widnow' to 'Window' in the DisplayStack class.

--- a/KerbalEngineer.Unity/CanvasGroupFader.cs
+++ b/KerbalEngineer.Unity/CanvasGroupFader.cs
@@ -100,8 +100,10 @@
                 yield return null;
             }
 
-            //print(m_CanvasGroup.alpha);
-            callback?.Invoke();
+            if (callback != null)
+            {
+                callback.Invoke();
+            }
 
             m_FadeCoroutine = null;
         }

--- a/KerbalEngineer.Unity/Setting.cs
+++ b/KerbalEngineer.Unity/Setting.cs
@@ -78,7 +78,10 @@
 
         protected virtual void Update()
         {
-            m_OnUpdate?.Invoke();
+            if (m_OnUpdate != null)
+            {
+                m_OnUpdate.Invoke();
+            }
         }
 
         private static void SetButton(GameObject buttonObject, UnityAction onClick)

--- a/KerbalEngineer.Unity/UI/StyleApplicator.cs
+++ b/KerbalEngineer.Unity/UI/StyleApplicator.cs
@@ -100,11 +100,15 @@
         {
             SetSelectable(textStyle, normal, highlight, pressed, disabled);
 
-            Image toggleImage = GetComponent<Toggle>()?.graphic as Image;
-            if (toggleImage != null)
+            Toggle toggleComponent = GetComponent<Toggle>();
+            if (toggleComponent != null)
             {
-                toggleImage.sprite = pressed;
-                toggleImage.type = Image.Type.Sliced;
+                Image toggleImage = toggleComponent.graphic as Image;
+                if (toggleImage != null)
+                {
+                    toggleImage.sprite = pressed;
+                    toggleImage.type = Image.Type.Sliced;
+                }
             }
         }
 

--- a/KerbalEngineer.Unity/UI/Window.cs
+++ b/KerbalEngineer.Unity/UI/Window.cs
@@ -159,7 +159,10 @@
                 yield return null;
             }
 
-            callback?.Invoke();
+            if (callback != null)
+            {
+                callback.Invoke();
+            }
 
             m_ScaleFadeCoroutine = null;
         }

--- a/KerbalEngineer/Flight/DisplayStack.cs
+++ b/KerbalEngineer/Flight/DisplayStack.cs
@@ -369,7 +369,7 @@
             }
             catch (Exception ex)
             {
-                Logger.Exception(ex, "DisplayStack->Widnow");
+                Logger.Exception(ex, "DisplayStack->Window");
             }
         }
 

--- a/KerbalEngineer/Flight/FlightAppLauncher.cs
+++ b/KerbalEngineer/Flight/FlightAppLauncher.cs
@@ -179,14 +179,11 @@
 
         protected virtual void Update()
         {
-            if (Button == null)
-                return;
-
-            if (FlightEngineerCore.IsDisplayable && Button.IsEnabled == false)
+            if (FlightEngineerCore.IsDisplayable)
             {
                 Enable();
             }
-            else if (FlightEngineerCore.IsDisplayable == false && Button.IsEnabled)
+            else if (FlightEngineerCore.IsDisplayable == false)
             {
                 Disable();
             }

--- a/KerbalEngineer/Flight/FlightEngineerCore.cs
+++ b/KerbalEngineer/Flight/FlightEngineerCore.cs
@@ -291,7 +291,9 @@
         private void FixedUpdate()
         {
             if (FlightGlobals.ActiveVessel == null)
+            {
                 return;
+            }
 
             try
             {
@@ -355,7 +357,9 @@
         private void Update()
         {
             if (FlightGlobals.ActiveVessel == null)
+            {
                 return;
+            }
 
             try
             {

--- a/KerbalEngineer/Flight/Readouts/Vessel/DeltaVStaged.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/DeltaVStaged.cs
@@ -1,7 +1,7 @@
 // 
 //     Kerbal Engineer Redux
 // 
-//     Copyright (C) 2014 CYBUTEK
+//     Copyright (C) 2016 CYBUTEK
 // 
 //     This program is free software: you can redistribute it and/or modify
 //     it under the terms of the GNU General Public License as published by
@@ -12,50 +12,38 @@
 //     but WITHOUT ANY WARRANTY; without even the implied warranty of
 //     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 //     GNU General Public License for more details.
-// 
 //     You should have received a copy of the GNU General Public License
 //     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-// 
-
-#region Using Directives
-
-using System.Linq;
-
-using KerbalEngineer.Flight.Sections;
-using KerbalEngineer.Helpers;
-
-#endregion
+//  
 
 namespace KerbalEngineer.Flight.Readouts.Vessel
 {
+    using System.Linq;
+    using Helpers;
     using KSP.UI.Screens;
+    using Sections;
+    using VesselSimulator;
 
     public class DeltaVStaged : ReadoutModule
     {
-        #region Constructors
-
         public DeltaVStaged()
         {
-            this.Name = "DeltaV Staged";
-            this.Category = ReadoutCategory.GetCategory("Vessel");
-            this.HelpString = "Shows the vessel's delta velocity for each stage.";
-            this.IsDefault = true;
+            Name = "DeltaV Staged";
+            Category = ReadoutCategory.GetCategory("Vessel");
+            HelpString = "Shows the vessel's delta velocity for each stage.";
+            IsDefault = true;
         }
-
-        #endregion
-
-        #region Methods: public
 
         public override void Draw(SectionModule section)
         {
-            if (!SimulationProcessor.ShowDetails)
+            if (SimulationProcessor.ShowDetails == false || StageManager.Instance == null)
             {
                 return;
             }
 
-            foreach (var stage in SimulationProcessor.Stages.Where(stage => stage.deltaV > 0 || stage.number == StageManager.CurrentStage))
+            foreach (Stage stage in SimulationProcessor.Stages.Where(stage => stage.deltaV > 0 || stage.number == StageManager.CurrentStage))
             {
-                this.DrawLine("DeltaV (S" + stage.number + ")", stage.deltaV.ToString("N0") + "m/s (" + TimeFormatter.ConvertToString(stage.time) + ")", section.IsHud);
+                DrawLine("DeltaV (S" + stage.number + ")", stage.deltaV.ToString("N0") + "m/s (" + TimeFormatter.ConvertToString(stage.time) + ")", section.IsHud);
             }
         }
 
@@ -68,7 +56,5 @@
         {
             SimulationProcessor.RequestUpdate();
         }
-
-        #endregion
     }
 }

--- a/KerbalEngineer/VesselSimulator/PartSim.cs
+++ b/KerbalEngineer/VesselSimulator/PartSim.cs
@@ -777,7 +777,8 @@
 
         private bool IsDecoupler(Part thePart)
         {
-            return thePart.GetProtoModuleDecoupler()?.IsStageEnabled ?? false;
+            PartExtensions.ProtoModuleDecoupler protoDecoupler = thePart.GetProtoModuleDecoupler();
+            return protoDecoupler != null && protoDecoupler.IsStageEnabled;
         }
 
         private bool IsSepratron()