Added HUD sections to the Flight Engineer.
Added HUD sections to the Flight Engineer.

--- a/Documents/CHANGES.txt
+++ b/Documents/CHANGES.txt
@@ -1,4 +1,5 @@
-1.0.9.4
+1.0.10.0
+    Added: HUD type sections to the Flight Engineer.
     Added: Switch to function on the Target Selector readout.
     Fixed: Flight Engineer not saving its hidden state.
     Fixed: Bug in the phase angle calculations.

--- a/KerbalEngineer/Flight/ActionMenuGui.cs
+++ b/KerbalEngineer/Flight/ActionMenuGui.cs
@@ -42,6 +42,7 @@
         #region Properties
 
         public bool StayOpen { get; set; }
+
         public bool Hovering { get; set; }
 
         public bool Hidden { get; set; }

--- a/KerbalEngineer/Flight/Readouts/Miscellaneous/GuiSizeAdjustor.cs
+++ b/KerbalEngineer/Flight/Readouts/Miscellaneous/GuiSizeAdjustor.cs
@@ -17,12 +17,20 @@
 //     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // 
 
+#region Using Directives
+
+using KerbalEngineer.Flight.Sections;
+
 using UnityEngine;
+
+#endregion
 
 namespace KerbalEngineer.Flight.Readouts.Miscellaneous
 {
     public class GuiSizeAdjustor : ReadoutModule
     {
+        #region Constructors
+
         public GuiSizeAdjustor()
         {
             this.Name = "GUI Size Adjustor";
@@ -31,7 +39,11 @@
             this.IsDefault = false;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
             GUILayout.BeginHorizontal();
             GUILayout.Label("GUI Size: " + GuiDisplaySize.Increment, this.NameStyle);
@@ -45,5 +57,7 @@
             }
             GUILayout.EndHorizontal();
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Miscellaneous/Separator.cs
+++ b/KerbalEngineer/Flight/Readouts/Miscellaneous/Separator.cs
@@ -19,6 +19,8 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
+
 using UnityEngine;
 
 #endregion
@@ -27,7 +29,13 @@
 {
     public class Separator : ReadoutModule
     {
+        #region Fields
+
         private readonly Texture2D texture;
+
+        #endregion
+
+        #region Constructors
 
         public Separator()
         {
@@ -42,10 +50,16 @@
             this.texture.Apply();
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
             GUILayout.Box(string.Empty, GUIStyle.none, new[] {GUILayout.Width(this.ContentWidth), GUILayout.Height(1.0f)});
             GUI.DrawTexture(GUILayoutUtility.GetLastRect(), this.texture, ScaleMode.StretchToFill);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Miscellaneous/SimulationDelay.cs
+++ b/KerbalEngineer/Flight/Readouts/Miscellaneous/SimulationDelay.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.VesselSimulator;
 
 using UnityEngine;
@@ -29,6 +30,8 @@
 {
     public class SimulationDelay : ReadoutModule
     {
+        #region Constructors
+
         public SimulationDelay()
         {
             this.Name = "Minimum Simulation Delay";
@@ -37,7 +40,11 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
             GUILayout.BeginHorizontal();
             GUILayout.Label("Sim Delay", this.NameStyle);
@@ -46,5 +53,7 @@
             GUI.skin = null;
             GUILayout.EndHorizontal();
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Miscellaneous/TimeReference.cs
+++ b/KerbalEngineer/Flight/Readouts/Miscellaneous/TimeReference.cs
@@ -21,6 +21,7 @@
 
 using System;
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 using UnityEngine;
@@ -45,7 +46,7 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             GUILayout.BeginHorizontal();
             GUILayout.Label("Time Ref.: " + TimeFormatter.Reference, this.NameStyle);

--- a/KerbalEngineer/Flight/Readouts/Orbital/AngleToEquatorialAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/AngleToEquatorialAscendingNode.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class AngleToEquatorialAscendingNode : ReadoutModule
     {
+        #region Constructors
+
         public AngleToEquatorialAscendingNode()
         {
             this.Name = "Angle to Equ. AN";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ActiveVessel.orbit.GetAngleToAscendingNode().ToAngle());
+            this.DrawLine(FlightGlobals.ActiveVessel.orbit.GetAngleToAscendingNode().ToAngle(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/AngleToEquatorialDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/AngleToEquatorialDescendingNode.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class AngleToEquatorialDescendingNode : ReadoutModule
     {
+        #region Constructors
+
         public AngleToEquatorialDescendingNode()
         {
             this.Name = "Angle to Equ. DN";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ActiveVessel.orbit.GetAngleToDescendingNode().ToAngle());
+            this.DrawLine(FlightGlobals.ActiveVessel.orbit.GetAngleToDescendingNode().ToAngle(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/AngleToPrograde.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/AngleToPrograde.cs
@@ -22,6 +22,7 @@
 using System;
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -43,9 +44,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.GetAngleToPrograde().ToAngle());
+            this.DrawLine(FlightGlobals.ship_orbit.GetAngleToPrograde().ToAngle(), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Orbital/AngleToRetrograde.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/AngleToRetrograde.cs
@@ -22,6 +22,7 @@
 using System;
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -43,9 +44,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.GetAngleToRetrograde().ToAngle());
+            this.DrawLine(FlightGlobals.ship_orbit.GetAngleToRetrograde().ToAngle(), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Orbital/ApoapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ApoapsisHeight.cs
@@ -17,12 +17,19 @@
 //     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // 
 
+#region Using Directives
+
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
+
+#endregion
 
 namespace KerbalEngineer.Flight.Readouts.Orbital
 {
     public class ApoapsisHeight : ReadoutModule
     {
+        #region Constructors
+
         public ApoapsisHeight()
         {
             this.Name = "Apoapsis Height";
@@ -31,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.ApA.ToDistance());
+            this.DrawLine(FlightGlobals.ship_orbit.ApA.ToDistance(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/ArgumentOfPeriapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/ArgumentOfPeriapsis.cs
@@ -22,6 +22,7 @@
 using System;
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -29,6 +30,8 @@
 {
     public class ArgumentOfPeriapsis : ReadoutModule
     {
+        #region Constructors
+
         public ArgumentOfPeriapsis()
         {
             this.Name = "Arg. Of Periapsis";
@@ -37,9 +40,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.argumentOfPeriapsis.ToAngle());
+            this.DrawLine(FlightGlobals.ship_orbit.argumentOfPeriapsis.ToAngle(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/EccentricAnomaly.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/EccentricAnomaly.cs
@@ -22,6 +22,7 @@
 using System;
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -29,6 +30,8 @@
 {
     public class EccentricAnomaly : ReadoutModule
     {
+        #region Constructors
+
         public EccentricAnomaly()
         {
             this.Name = "Eccentric Anomaly";
@@ -37,9 +40,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.eccentricAnomaly.ToAngle());
+            this.DrawLine(FlightGlobals.ship_orbit.eccentricAnomaly.ToAngle(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/Eccentricity.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/Eccentricity.cs
@@ -19,7 +19,7 @@
 
 #region Using Directives
 
-using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +27,8 @@
 {
     public class Eccentricity : ReadoutModule
     {
+        #region Constructors
+
         public Eccentricity()
         {
             this.Name = "Eccentricity";
@@ -35,9 +37,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.eccentricity.ToString("F3"));
+            this.DrawLine(FlightGlobals.ship_orbit.eccentricity.ToString("F3"), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/Inclination.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/Inclination.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class Inclination : ReadoutModule
     {
+        #region Constructors
+
         public Inclination()
         {
             this.Name = "Inclination";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.inclination.ToAngle());
+            this.DrawLine(FlightGlobals.ship_orbit.inclination.ToAngle(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/LongitudeOfAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/LongitudeOfAscendingNode.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class LongitudeOfAscendingNode : ReadoutModule
     {
+        #region Constructors
+
         public LongitudeOfAscendingNode()
         {
             this.Name = "Longitude of AN";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.LAN.ToAngle());
+            this.DrawLine(FlightGlobals.ship_orbit.LAN.ToAngle(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/LongitudeOfPeriapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/LongitudeOfPeriapsis.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class LongitudeOfPeriapsis : ReadoutModule
     {
+        #region Constructors
+
         public LongitudeOfPeriapsis()
         {
             this.Name = "Longitude of Pe";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine((FlightGlobals.ship_orbit.LAN + FlightGlobals.ship_orbit.argumentOfPeriapsis).ToAngle());
+            this.DrawLine((FlightGlobals.ship_orbit.LAN + FlightGlobals.ship_orbit.argumentOfPeriapsis).ToAngle(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/MeanAnomaly.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/MeanAnomaly.cs
@@ -22,6 +22,7 @@
 using System;
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -29,6 +30,8 @@
 {
     public class MeanAnomaly : ReadoutModule
     {
+        #region Constructors
+
         public MeanAnomaly()
         {
             this.Name = "Mean Anomaly";
@@ -37,9 +40,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.meanAnomaly.ToAngle());
+            this.DrawLine(FlightGlobals.ship_orbit.meanAnomaly.ToAngle(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/OrbitalPeriod.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/OrbitalPeriod.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,9 +42,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ship_orbit.period, "F3"));
+            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ship_orbit.period, "F3"), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Orbital/OrbitalSpeed.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/OrbitalSpeed.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class OrbitalSpeed : ReadoutModule
     {
+        #region Constructors
+
         public OrbitalSpeed()
         {
             this.Name = "Orbital Speed";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_obtSpeed.ToSpeed());
+            this.DrawLine(FlightGlobals.ship_obtSpeed.ToSpeed(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/PeriapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/PeriapsisHeight.cs
@@ -17,12 +17,19 @@
 //     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // 
 
+#region Using Directives
+
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
+
+#endregion
 
 namespace KerbalEngineer.Flight.Readouts.Orbital
 {
     public class PeriapsisHeight : ReadoutModule
     {
+        #region Constructors
+
         public PeriapsisHeight()
         {
             this.Name = "Periapsis Height";
@@ -31,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.PeA.ToDistance());
+            this.DrawLine(FlightGlobals.ship_orbit.PeA.ToDistance(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Orbital/SemiMajorAxis.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/SemiMajorAxis.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,9 +42,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(Units.ToDistance(FlightGlobals.ship_orbit.semiMajorAxis, 3));
+            this.DrawLine(Units.ToDistance(FlightGlobals.ship_orbit.semiMajorAxis, 3), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Orbital/SemiMinorAxis.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/SemiMinorAxis.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,9 +42,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(Units.ToDistance(FlightGlobals.ship_orbit.semiMinorAxis, 3));
+            this.DrawLine(Units.ToDistance(FlightGlobals.ship_orbit.semiMinorAxis, 3), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Orbital/TimeToApoapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/TimeToApoapsis.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,9 +42,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ship_orbit.timeToAp));
+            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ship_orbit.timeToAp), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Orbital/TimeToEquatorialAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/TimeToEquatorialAscendingNode.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -42,9 +43,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ActiveVessel.orbit.GetTimeToAscendingNode()));
+            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ActiveVessel.orbit.GetTimeToAscendingNode()), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Orbital/TimeToEquatorialDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/TimeToEquatorialDescendingNode.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -42,9 +43,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ActiveVessel.orbit.GetTimeToDescendingNode()));
+            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ActiveVessel.orbit.GetTimeToDescendingNode()), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Orbital/TimeToPeriapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/TimeToPeriapsis.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,9 +42,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ship_orbit.timeToPe));
+            this.DrawLine(TimeFormatter.ConvertToString(FlightGlobals.ship_orbit.timeToPe), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Orbital/TrueAnomaly.cs
+++ b/KerbalEngineer/Flight/Readouts/Orbital/TrueAnomaly.cs
@@ -22,6 +22,7 @@
 using System;
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -29,6 +30,8 @@
 {
     public class TrueAnomaly : ReadoutModule
     {
+        #region Constructors
+
         public TrueAnomaly()
         {
             this.Name = "True Anomaly";
@@ -37,9 +40,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_orbit.trueAnomaly.ToAngle());
+            this.DrawLine(FlightGlobals.ship_orbit.trueAnomaly.ToAngle(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/ReadoutCategory.cs
+++ b/KerbalEngineer/Flight/Readouts/ReadoutCategory.cs
@@ -31,11 +31,6 @@
     {
         #region Constructors
 
-        static ReadoutCategory()
-        {
-            Categories = new List<ReadoutCategory>();
-        }
-
         public ReadoutCategory(string name)
         {
             this.Name = name;
@@ -47,6 +42,11 @@
             this.Description = description;
         }
 
+        static ReadoutCategory()
+        {
+            Categories = new List<ReadoutCategory>();
+        }
+
         #endregion
 
         #region Properties
@@ -55,9 +55,8 @@
 
         public static ReadoutCategory Selected { get; set; }
 
+        public string Description { get; set; }
         public string Name { get; set; }
-
-        public string Description { get; set; }
 
         #endregion
 

--- a/KerbalEngineer/Flight/Readouts/ReadoutModule.cs
+++ b/KerbalEngineer/Flight/Readouts/ReadoutModule.cs
@@ -20,6 +20,8 @@
 #region Using Directives
 
 using System;
+
+using KerbalEngineer.Flight.Sections;
 
 using UnityEngine;
 
@@ -128,7 +130,7 @@
         /// <summary>
         ///     Called when a readout is asked to draw its self.
         /// </summary>
-        public virtual void Draw() { }
+        public virtual void Draw(SectionModule section) { }
 
         /// <summary>
         ///     Called on each fixed update frame where the readout is visible.
@@ -163,32 +165,59 @@
 
         #region Methods: protected
 
-        protected void DrawLine(string name, string value)
+        protected void DrawLine(string value, bool compact = false)
         {
             GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
-            GUILayout.Label(name, this.NameStyle);
-            GUILayout.FlexibleSpace();
-            GUILayout.Label(value, this.ValueStyle);
+            if (!compact)
+            {
+                GUILayout.Label(this.Name, this.NameStyle);
+                GUILayout.FlexibleSpace();
+                GUILayout.Label(value, this.ValueStyle);
+            }
+            else
+            {
+                GUILayout.Label(this.Name, this.NameStyle, GUILayout.Height(this.NameStyle.fontSize * 1.2f));
+                GUILayout.FlexibleSpace();
+                GUILayout.Label(value, this.ValueStyle, GUILayout.Height(this.ValueStyle.fontSize * 1.2f));
+            }
             GUILayout.EndHorizontal();
+
             this.lineCountEnd++;
         }
 
-        protected void DrawLine(string value)
+        protected void DrawLine(string name, string value, bool compact = false)
         {
             GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
-            GUILayout.Label(this.Name, this.NameStyle);
-            GUILayout.FlexibleSpace();
-            GUILayout.Label(value, this.ValueStyle);
+            if (!compact)
+            {
+                GUILayout.Label(name, this.NameStyle);
+                GUILayout.FlexibleSpace();
+                GUILayout.Label(value, this.ValueStyle);
+            }
+            else
+            {
+                GUILayout.Label(name, this.NameStyle, GUILayout.Height(this.NameStyle.fontSize * 1.2f));
+                GUILayout.FlexibleSpace();
+                GUILayout.Label(value, this.ValueStyle, GUILayout.Height(this.ValueStyle.fontSize * 1.2f));
+            }
             GUILayout.EndHorizontal();
+
             this.lineCountEnd++;
         }
 
-        protected void DrawLine(Action drawAction, bool showName = true)
+        protected void DrawLine(Action drawAction, bool showName = true, bool compact = false)
         {
             GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
             if (showName)
             {
-                GUILayout.Label(this.Name, this.NameStyle);
+                if (!compact)
+                {
+                    GUILayout.Label(this.Name, this.NameStyle);
+                }
+                else
+                {
+                    GUILayout.Label(this.Name, this.NameStyle, GUILayout.Height(this.NameStyle.fontSize * 1.2f));
+                }
                 GUILayout.FlexibleSpace();
             }
             drawAction();
@@ -196,10 +225,17 @@
             this.lineCountEnd++;
         }
 
-        protected void DrawMessageLine(string value)
+        protected void DrawMessageLine(string value, bool compact = false)
         {
             GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
-            GUILayout.Label(value, this.MessageStyle);
+            if (!compact)
+            {
+                GUILayout.Label(value, this.MessageStyle);
+            }
+            else
+            {
+                GUILayout.Label(value, this.MessageStyle, GUILayout.Height(this.MessageStyle.fontSize * 1.2f));
+            }
             GUILayout.EndHorizontal();
             this.lineCountEnd++;
         }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/AltitudeSeaLevel.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/AltitudeSeaLevel.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.AltitudeSeaLevel.ToDistance());
+                this.DrawLine(RendezvousProcessor.AltitudeSeaLevel.ToDistance(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeAscendingNode.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.AngleToAscendingNode.ToAngle());
+                this.DrawLine(RendezvousProcessor.AngleToAscendingNode.ToAngle(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeDescendingNode.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.AngleToDescendingNode.ToAngle());
+                this.DrawLine(RendezvousProcessor.AngleToDescendingNode.ToAngle(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/ApoapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/ApoapsisHeight.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.ApoapsisHeight.ToDistance());
+                this.DrawLine(RendezvousProcessor.ApoapsisHeight.ToDistance(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/Distance.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/Distance.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.Distance.ToDistance());
+                this.DrawLine(RendezvousProcessor.Distance.ToDistance(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/InterceptAngle.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/InterceptAngle.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.InterceptAngle.ToAngle());
+                this.DrawLine(RendezvousProcessor.InterceptAngle.ToAngle(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/OrbitalPeriod.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/OrbitalPeriod.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.OrbitalPeriod, "F3"));
+                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.OrbitalPeriod, "F3"), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/PeriapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/PeriapsisHeight.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.PeriapsisHeight.ToDistance());
+                this.DrawLine(RendezvousProcessor.PeriapsisHeight.ToDistance(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/PhaseAngle.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/PhaseAngle.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.PhaseAngle.ToAngle());
+                this.DrawLine(RendezvousProcessor.PhaseAngle.ToAngle(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/RelativeInclination.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/RelativeInclination.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.RelativeInclination.ToAngle());
+                this.DrawLine(RendezvousProcessor.RelativeInclination.ToAngle(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/RelativeSpeed.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/RelativeSpeed.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.RelativeSpeed.ToSpeed());
+                this.DrawLine(RendezvousProcessor.RelativeSpeed.ToSpeed(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/RelativeVelocity.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/RelativeVelocity.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(RendezvousProcessor.RelativeVelocity.ToSpeed());
+                this.DrawLine(RendezvousProcessor.RelativeVelocity.ToSpeed(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs
@@ -206,8 +206,8 @@
 
         private double CalcInterceptAngle()
         {
-            var originRadius = (originOrbit.semiMinorAxis + originOrbit.semiMajorAxis) * 0.5;
-            var targetRadius = (targetOrbit.semiMinorAxis + targetOrbit.semiMajorAxis) * 0.5;
+            var originRadius = (this.originOrbit.semiMinorAxis + this.originOrbit.semiMajorAxis) * 0.5;
+            var targetRadius = (this.targetOrbit.semiMinorAxis + this.targetOrbit.semiMajorAxis) * 0.5;
             var angle = 180.0 * (1.0 - Math.Pow((originRadius + targetRadius) / (2.0 * targetRadius), 1.5));
             angle = PhaseAngle - angle;
             return RelativeInclination < 90.0 ? AngleHelper.Clamp360(angle) : AngleHelper.Clamp360(360.0 - (180.0 - angle));

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/SemiMajorAxis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/SemiMajorAxis.cs
@@ -21,6 +21,7 @@
 
 using System;
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -43,11 +44,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(Units.ToDistance(RendezvousProcessor.SemiMajorAxis, 3));
+                this.DrawLine(Units.ToDistance(RendezvousProcessor.SemiMajorAxis, 3), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/SemiMinorAxis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/SemiMinorAxis.cs
@@ -21,6 +21,7 @@
 
 using System;
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -43,11 +44,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(Units.ToDistance(RendezvousProcessor.SemiMajorAxis, 3));
+                this.DrawLine(Units.ToDistance(RendezvousProcessor.SemiMajorAxis, 3), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TargetSelector.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TargetSelector.cs
@@ -18,6 +18,8 @@
 // 
 
 #region Using Directives
+
+using KerbalEngineer.Flight.Sections;
 
 using UnityEngine;
 
@@ -59,7 +61,7 @@
         /// <summary>
         ///     Draws the target selector structure.
         /// </summary>
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (FlightGlobals.fetch.VesselTarget == null)
             {
@@ -83,7 +85,7 @@
             }
             else
             {
-                this.DrawTarget();
+                this.DrawTarget(section);
             }
 
             if (this.targetObject != FlightGlobals.fetch.VesselTarget)
@@ -199,7 +201,7 @@
         /// <summary>
         ///     Draws the target information when selected.
         /// </summary>
-        private void DrawTarget()
+        private void DrawTarget(SectionModule section)
         {
             if (GUILayout.Button("Go Back to Target Selection", this.ButtonStyle, GUILayout.Width(this.ContentWidth)))
             {
@@ -215,7 +217,7 @@
 
             GUILayout.Space(3f);
 
-            this.DrawLine("Selected Target", FlightGlobals.fetch.VesselTarget.GetName());
+            this.DrawLine("Selected Target", FlightGlobals.fetch.VesselTarget.GetName(), section.IsHud);
         }
 
         /// <summary>

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToApoapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToApoapsis.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.TimeToApoapsis));
+                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.TimeToApoapsis), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToPeriapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToPeriapsis.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.TimeToPeriapsis));
+                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.TimeToPeriapsis), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeAscendingNode.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.TimeToAscendingNode));
+                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.TimeToAscendingNode), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeDescendingNode.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (RendezvousProcessor.ShowDetails)
             {
-                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.TimeToDescendingNode));
+                this.DrawLine(TimeFormatter.ConvertToString(RendezvousProcessor.TimeToDescendingNode), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/AltitudeSeaLevel.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/AltitudeSeaLevel.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class AltitudeSeaLevel : ReadoutModule
     {
+        #region Constructors
+
         public AltitudeSeaLevel()
         {
             this.Name = "Altitude (Sea Level)";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_altitude.ToDistance());
+            this.DrawLine(FlightGlobals.ship_altitude.ToDistance(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/AltitudeTerrain.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/AltitudeTerrain.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class AltitudeTerrain : ReadoutModule
     {
+        #region Constructors
+
         public AltitudeTerrain()
         {
             this.Name = "Altitude (Terrain)";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine((FlightGlobals.ship_altitude - FlightGlobals.ActiveVessel.terrainAltitude).ToDistance());
+            this.DrawLine((FlightGlobals.ship_altitude - FlightGlobals.ActiveVessel.terrainAltitude).ToDistance(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/AtmosphericEfficiency.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/AtmosphericEfficiency.cs
@@ -17,7 +17,12 @@
 //     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // 
 
+#region Using Directives
+
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
+
+#endregion
 
 namespace KerbalEngineer.Flight.Readouts.Surface
 {
@@ -37,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (AtmosphericProcessor.ShowDetails)
             {
-                this.DrawLine(AtmosphericProcessor.Efficiency.ToPercent());
+                this.DrawLine(AtmosphericProcessor.Efficiency.ToPercent(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/AtmosphericProcessor.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/AtmosphericProcessor.cs
@@ -33,7 +33,13 @@
     {
         #region Instance
 
+        #region Fields
+
         private static readonly AtmosphericProcessor instance = new AtmosphericProcessor();
+
+        #endregion
+
+        #region Properties
 
         /// <summary>
         ///     Gets the current instance of the atmospheric processor.
@@ -45,19 +51,26 @@
 
         #endregion
 
+        #endregion
+
         #region Fields
 
+        private MethodInfo farTerminalVelocity;
         private bool hasCheckedAeroMods;
-        private MethodInfo farTerminalVelocity;
 
         #endregion
 
         #region Properties
 
         /// <summary>
-        ///     Gets whether the details are ready to be shown.
+        ///     Gets the deceleration caused by drag.
         /// </summary>
-        public static bool ShowDetails { get; private set; }
+        public static double Deceleration { get; private set; }
+
+        /// <summary>
+        ///     Gets the difference between current velocity and terminal velocity.
+        /// </summary>
+        public static double Efficiency { get; private set; }
 
         /// <summary>
         ///     Gets whether FAR is installed.
@@ -70,19 +83,14 @@
         public static bool NearInstalled { get; private set; }
 
         /// <summary>
+        ///     Gets whether the details are ready to be shown.
+        /// </summary>
+        public static bool ShowDetails { get; private set; }
+
+        /// <summary>
         ///     Gets the terminal velocity of the active vessel.
         /// </summary>
         public static double TerminalVelocity { get; private set; }
-
-        /// <summary>
-        ///     Gets the difference between current velocity and terminal velocity.
-        /// </summary>
-        public static double Efficiency { get; private set; }
-
-        /// <summary>
-        ///     Gets the deceleration caused by drag.
-        /// </summary>
-        public static double Deceleration { get; private set; }
 
         #endregion
 
@@ -142,6 +150,8 @@
 
         #endregion
 
+        #region Methods: public
+
         /// <summary>
         ///     Request an update to calculate the details.
         /// </summary>
@@ -149,6 +159,8 @@
         {
             instance.UpdateRequested = true;
         }
+
+        #endregion
 
         #region Private Methods
 
@@ -163,7 +175,7 @@
                     switch (loadedAssembly.name)
                     {
                         case "FerramAerospaceResearch":
-                            farTerminalVelocity = loadedAssembly.assembly.GetType("ferram4.FARAPI").GetMethod("GetActiveControlSys_TermVel");
+                            this.farTerminalVelocity = loadedAssembly.assembly.GetType("ferram4.FARAPI").GetMethod("GetActiveControlSys_TermVel");
                             FarInstalled = true;
                             Logger.Log("FAR detected!");
                             break;

--- a/KerbalEngineer/Flight/Readouts/Surface/Biome.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/Biome.cs
@@ -19,7 +19,7 @@
 
 #region Using Directives
 
-using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +27,8 @@
 {
     public class Biome : ReadoutModule
     {
+        #region Constructors
+
         public Biome()
         {
             this.Name = "Biome";
@@ -35,9 +37,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(ScienceUtil.GetExperimentBiome(FlightGlobals.ActiveVessel.mainBody, FlightGlobals.ActiveVessel.latitude, FlightGlobals.ActiveVessel.longitude));
+            this.DrawLine(ScienceUtil.GetExperimentBiome(FlightGlobals.ActiveVessel.mainBody, FlightGlobals.ActiveVessel.latitude, FlightGlobals.ActiveVessel.longitude), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/GeeForce.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/GeeForce.cs
@@ -17,13 +17,25 @@
 //     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // 
 
+#region Using Directives
+
+using KerbalEngineer.Flight.Sections;
+
 using UnityEngine;
+
+#endregion
 
 namespace KerbalEngineer.Flight.Readouts.Surface
 {
     public class GeeForce : ReadoutModule
     {
+        #region Fields
+
         private double maxGeeForce;
+
+        #endregion
+
+        #region Constructors
 
         public GeeForce()
         {
@@ -33,7 +45,11 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
             if (FlightGlobals.ship_geeForce > this.maxGeeForce)
             {
@@ -53,5 +69,7 @@
         {
             this.maxGeeForce = 0;
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/HorizontalAcceleration.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/HorizontalAcceleration.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,8 +28,15 @@
 {
     public class HorizontalAcceleration : ReadoutModule
     {
+        #region Fields
+
+        private double acceleration;
         private double speed;
-        private double acceleration;
+
+        #endregion
+
+        #region Constructors
+
         public HorizontalAcceleration()
         {
             this.Name = "Horizontal Acceleration";
@@ -37,15 +45,21 @@
             this.IsDefault = true;
         }
 
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
+        {
+            this.DrawLine(this.acceleration.ToAcceleration(), section.IsHud);
+        }
+
         public override void FixedUpdate()
         {
             this.acceleration = (FlightGlobals.ActiveVessel.horizontalSrfSpeed - this.speed) / TimeWarp.fixedDeltaTime;
             this.speed = FlightGlobals.ActiveVessel.horizontalSrfSpeed;
         }
 
-        public override void Draw()
-        {
-            this.DrawLine(this.acceleration.ToAcceleration());
-        }
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/HorizontalSpeed.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/HorizontalSpeed.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class HorizontalSpeed : ReadoutModule
     {
+        #region Constructors
+
         public HorizontalSpeed()
         {
             this.Name = "Horizontal Speed";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ActiveVessel.horizontalSrfSpeed.ToSpeed());
+            this.DrawLine(FlightGlobals.ActiveVessel.horizontalSrfSpeed.ToSpeed(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactAltitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactAltitude.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.DrawLine(ImpactProcessor.Altitude.ToDistance());
+                this.DrawLine(ImpactProcessor.Altitude.ToDistance(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactBiome.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactBiome.cs
@@ -19,7 +19,7 @@
 
 #region Using Directives
 
-
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +41,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.DrawLine(ImpactProcessor.Biome);
+                this.DrawLine(ImpactProcessor.Biome, section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactLatitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactLatitude.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.DrawLine(ImpactProcessor.Latitude.ToAngle());
+                this.DrawLine(ImpactProcessor.Latitude.ToAngle(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactLongitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactLongitude.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.DrawLine(ImpactProcessor.Longitude.ToAngle());
+                this.DrawLine(ImpactProcessor.Longitude.ToAngle(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactProcessor.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactProcessor.cs
@@ -33,8 +33,14 @@
     {
         #region Instance
 
+        #region Fields
+
         private static readonly ImpactProcessor instance = new ImpactProcessor();
 
+        #endregion
+
+        #region Properties
+
         /// <summary>
         ///     Gets the current instance of the impact processor.
         /// </summary>
@@ -42,6 +48,8 @@
         {
             get { return instance; }
         }
+
+        #endregion
 
         #endregion
 
@@ -58,6 +66,26 @@
         #region Properties
 
         /// <summary>
+        ///     Gets the altitude of the impact coordinates.
+        /// </summary>
+        public static double Altitude { get; private set; }
+
+        /// <summary>
+        ///     Gets the biome of the impact coordinates.
+        /// </summary>
+        public static string Biome { get; private set; }
+
+        /// <summary>
+        ///     Gets the latitude of the impact coordinates.
+        /// </summary>
+        public static double Latitude { get; private set; }
+
+        /// <summary>
+        ///     Gets the longitude of the impact coordinates.
+        /// </summary>
+        public static double Longitude { get; private set; }
+
+        /// <summary>
         ///     Gets whether the details are ready to be shown.
         /// </summary>
         public static bool ShowDetails { get; private set; }
@@ -66,26 +94,6 @@
         ///     Gets the time to impact.
         /// </summary>
         public static double Time { get; private set; }
-
-        /// <summary>
-        ///     Gets the longitude of the impact coordinates.
-        /// </summary>
-        public static double Longitude { get; private set; }
-
-        /// <summary>
-        ///     Gets the latitude of the impact coordinates.
-        /// </summary>
-        public static double Latitude { get; private set; }
-
-        /// <summary>
-        ///     Gets the altitude of the impact coordinates.
-        /// </summary>
-        public static double Altitude { get; private set; }
-
-        /// <summary>
-        ///     Gets the biome of the impact coordinates.
-        /// </summary>
-        public static string Biome { get; private set; }
 
         #endregion
 
@@ -196,12 +204,27 @@
 
         #endregion
 
+        #region Methods: public
+
         public static void RequestUpdate()
         {
             instance.UpdateRequested = true;
         }
 
+        #endregion
+
         #region Calculations
+
+        #region Methods: public
+
+        public static double ACosh(double x)
+        {
+            return (Math.Log(x + Math.Sqrt((x * x) - 1.0)));
+        }
+
+        #endregion
+
+        #region Methods: private
 
         private double NormAngle(double ang)
         {
@@ -239,11 +262,6 @@
             return result;
         }
 
-        public static double ACosh(double x)
-        {
-            return (Math.Log(x + Math.Sqrt((x * x) - 1.0)));
-        }
-
         private double TimeToPeriapsis(double theta)
         {
             var e = FlightGlobals.ActiveVessel.orbit.eccentricity;
@@ -278,5 +296,7 @@
         }
 
         #endregion
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactTime.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactTime.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.DrawLine(TimeFormatter.ConvertToString(ImpactProcessor.Time));
+                this.DrawLine(TimeFormatter.ConvertToString(ImpactProcessor.Time), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/Latitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/Latitude.cs
@@ -19,7 +19,7 @@
 
 #region Using Directives
 
-using KerbalEngineer.Helpers;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,9 +41,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(KSPUtil.PrintLatitude(FlightGlobals.ship_latitude));
+            this.DrawLine(KSPUtil.PrintLatitude(FlightGlobals.ship_latitude), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Surface/Longitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/Longitude.cs
@@ -19,7 +19,7 @@
 
 #region Using Directives
 
-using KerbalEngineer.Helpers;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,9 +41,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(KSPUtil.PrintLongitude(FlightGlobals.ship_longitude));
+            this.DrawLine(KSPUtil.PrintLongitude(FlightGlobals.ship_longitude), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Surface/Slope.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/Slope.cs
@@ -21,6 +21,7 @@
 
 using System;
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 using UnityEngine;
@@ -45,9 +46,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(this.GetSlopeAngleAndHeading());
+            this.DrawLine(this.GetSlopeAngleAndHeading(), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Surface/TerminalVelocity.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/TerminalVelocity.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (AtmosphericProcessor.ShowDetails)
             {
-                this.DrawLine(AtmosphericProcessor.TerminalVelocity.ToSpeed());
+                this.DrawLine(AtmosphericProcessor.TerminalVelocity.ToSpeed(), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/VerticalAcceleration.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/VerticalAcceleration.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,8 +28,15 @@
 {
     public class VerticalAcceleration : ReadoutModule
     {
+        #region Fields
+
+        private double acceleration;
         private double speed;
-        private double acceleration;
+
+        #endregion
+
+        #region Constructors
+
         public VerticalAcceleration()
         {
             this.Name = "Vertical Acceleration";
@@ -37,15 +45,21 @@
             this.IsDefault = true;
         }
 
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
+        {
+            this.DrawLine(this.acceleration.ToAcceleration(), section.IsHud);
+        }
+
         public override void FixedUpdate()
         {
             this.acceleration = (FlightGlobals.ship_verticalSpeed - this.speed) / TimeWarp.fixedDeltaTime;
             this.speed = FlightGlobals.ship_verticalSpeed;
         }
 
-        public override void Draw()
-        {
-            this.DrawLine(this.acceleration.ToAcceleration());
-        }
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/VerticalSpeed.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/VerticalSpeed.cs
@@ -20,6 +20,7 @@
 #region Using Directives
 
 using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -27,6 +28,8 @@
 {
     public class VerticalSpeed : ReadoutModule
     {
+        #region Constructors
+
         public VerticalSpeed()
         {
             this.Name = "Vertical Speed";
@@ -35,9 +38,15 @@
             this.IsDefault = true;
         }
 
-        public override void Draw()
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(FlightGlobals.ship_verticalSpeed.ToSpeed());
+            this.DrawLine(FlightGlobals.ship_verticalSpeed.ToSpeed(), section.IsHud);
         }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Vessel/Acceleration.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/Acceleration.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (SimulationProcessor.ShowDetails)
             {
-                this.DrawLine(Units.ToAcceleration(SimulationProcessor.LastStage.actualThrust / SimulationProcessor.LastStage.totalMass, SimulationProcessor.LastStage.thrust / SimulationProcessor.LastStage.totalMass));
+                this.DrawLine(Units.ToAcceleration(SimulationProcessor.LastStage.actualThrust / SimulationProcessor.LastStage.totalMass, SimulationProcessor.LastStage.thrust / SimulationProcessor.LastStage.totalMass), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Vessel/DeltaVCurrent.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/DeltaVCurrent.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (SimulationProcessor.ShowDetails)
             {
-                this.DrawLine(SimulationProcessor.LastStage.deltaV.ToString("N0") + "m/s (" + TimeFormatter.ConvertToString(SimulationProcessor.LastStage.time) + ")");
+                this.DrawLine(SimulationProcessor.LastStage.deltaV.ToString("N0") + "m/s (" + TimeFormatter.ConvertToString(SimulationProcessor.LastStage.time) + ")", section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Vessel/DeltaVStaged.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/DeltaVStaged.cs
@@ -21,6 +21,7 @@
 
 using System.Linq;
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -50,7 +51,7 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (!SimulationProcessor.ShowDetails)
             {
@@ -59,7 +60,7 @@
 
             foreach (var stage in SimulationProcessor.Stages.Where(stage => stage.deltaV > 0 || stage.number == Staging.CurrentStage))
             {
-                this.DrawLine("DeltaV (S" + stage.number + ")", stage.deltaV.ToString("N0") + "m/s (" + TimeFormatter.ConvertToString(stage.time) + ")");
+                this.DrawLine("DeltaV (S" + stage.number + ")", stage.deltaV.ToString("N0") + "m/s (" + TimeFormatter.ConvertToString(stage.time) + ")", section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Vessel/DeltaVTotal.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/DeltaVTotal.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -41,11 +42,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (SimulationProcessor.ShowDetails)
             {
-                this.DrawLine(SimulationProcessor.LastStage.totalDeltaV.ToString("N0") + "m/s (" + TimeFormatter.ConvertToString(SimulationProcessor.LastStage.totalTime) + ")");
+                this.DrawLine(SimulationProcessor.LastStage.totalDeltaV.ToString("N0") + "m/s (" + TimeFormatter.ConvertToString(SimulationProcessor.LastStage.totalTime) + ")", section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirDemand.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirDemand.cs
@@ -19,7 +19,7 @@
 
 #region Using Directives
 
-
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -47,9 +47,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(this.demand.ToString("F4"));
+            this.DrawLine(this.demand.ToString("F4"), section.IsHud);
         }
 
         public override void Update()

--- a/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirDemandSupply.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirDemandSupply.cs
@@ -20,6 +20,8 @@
 #region Using Directives
 
 using System.Linq;
+
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -84,9 +86,9 @@
                 .Sum(p => p.Resources["IntakeAir"].amount);
         }
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(this.demand.ToString("F4") + " / " + this.supply.ToString("F4"));
+            this.DrawLine(this.demand.ToString("F4") + " / " + this.supply.ToString("F4"), section.IsHud);
         }
 
         public override void Update()

--- a/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirSupply.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirSupply.cs
@@ -19,7 +19,7 @@
 
 #region Using Directives
 
-
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -47,9 +47,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(this.supply.ToString("F4"));
+            this.DrawLine(this.supply.ToString("F4"), section.IsHud);
         }
 
         public override void Update()

--- a/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirUsage.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/IntakeAirUsage.cs
@@ -21,12 +21,10 @@
 
 using System;
 
-using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
-
-
 
 namespace KerbalEngineer.Flight.Readouts.Vessel
 {
@@ -52,9 +50,9 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
-            this.DrawLine(Units.ToPercent(this.percentage));
+            this.DrawLine(Units.ToPercent(this.percentage), section.IsHud);
         }
 
         public override void Update()

--- a/KerbalEngineer/Flight/Readouts/Vessel/Mass.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/Mass.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -47,11 +48,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (SimulationProcessor.ShowDetails)
             {
-                this.DrawLine(Units.ToMass(SimulationProcessor.LastStage.mass, SimulationProcessor.LastStage.totalMass));
+                this.DrawLine(Units.ToMass(SimulationProcessor.LastStage.mass, SimulationProcessor.LastStage.totalMass), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Vessel/SimulationProcessor.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/SimulationProcessor.cs
@@ -1,16 +1,43 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+// 
+//     Kerbal Engineer Redux
+// 
+//     Copyright (C) 2014 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
+//     the Free Software Foundation, either version 3 of the License, or
+//     (at your option) any later version.
+// 
+//     This program is distributed in the hope that it will be useful,
+//     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;
 
 using KerbalEngineer.VesselSimulator;
+
+#endregion
 
 namespace KerbalEngineer.Flight.Readouts.Vessel
 {
     public class SimulationProcessor : IUpdatable, IUpdateRequest
     {
         #region Instance
+
+        #region Fields
+
         private static readonly SimulationProcessor instance = new SimulationProcessor();
+
+        #endregion
+
+        #region Properties
 
         /// <summary>
         ///     Gets the current instance of the simulation processor.
@@ -19,9 +46,17 @@
         {
             get { return instance; }
         }
+
+        #endregion
+
         #endregion
 
         #region Properties
+
+        /// <summary>
+        ///     Gets the currently active vessel stage.
+        /// </summary>
+        public static Stage LastStage { get; private set; }
 
         /// <summary>
         ///     Gets whether the details are ready to be shown.
@@ -33,12 +68,16 @@
         /// </summary>
         public static Stage[] Stages { get; private set; }
 
-        /// <summary>
-        ///     Gets the currently active vessel stage.
-        /// </summary>
-        public static Stage LastStage { get; private set; }
+        public bool UpdateRequested { get; set; }
 
         #endregion
+
+        #region Methods: public
+
+        public static void RequestUpdate()
+        {
+            instance.UpdateRequested = true;
+        }
 
         public void Update()
         {
@@ -57,12 +96,11 @@
                 ShowDetails = true;
             }
 
-
             if (FlightGlobals.ActiveVessel != null)
             {
                 SimManager.Gravity = FlightGlobals.ActiveVessel.mainBody.gravParameter /
-                                        Math.Pow(FlightGlobals.ActiveVessel.mainBody.Radius +
-                                                    FlightGlobals.ActiveVessel.mainBody.GetAltitude(FlightGlobals.ActiveVessel.CoM), 2);
+                                     Math.Pow(FlightGlobals.ActiveVessel.mainBody.Radius +
+                                              FlightGlobals.ActiveVessel.mainBody.GetAltitude(FlightGlobals.ActiveVessel.CoM), 2);
                 SimManager.Velocity = FlightGlobals.ActiveVessel.srfSpeed;
             }
             // Cybutek: We should be allowing this to be set too but not sure where you want to put the control
@@ -70,12 +108,6 @@
             SimManager.TryStartSimulation();
         }
 
-        public bool UpdateRequested { get; set; }
-
-        public static void RequestUpdate()
-        {
-            instance.UpdateRequested = true;
-        }
+        #endregion
     }
 }
-

--- a/KerbalEngineer/Flight/Readouts/Vessel/SpecificImpulse.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/SpecificImpulse.cs
@@ -19,6 +19,8 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
+
 #endregion
 
 namespace KerbalEngineer.Flight.Readouts.Vessel
@@ -39,11 +41,11 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (SimulationProcessor.ShowDetails)
             {
-                this.DrawLine(SimulationProcessor.LastStage.isp.ToString("F1") + "s");
+                this.DrawLine(SimulationProcessor.LastStage.isp.ToString("F1") + "s", section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Vessel/SurfaceThrustToWeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/SurfaceThrustToWeight.cs
@@ -20,6 +20,8 @@
 #region Using Directives
 
 using System;
+
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -49,7 +51,7 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (!SimulationProcessor.ShowDetails)
             {
@@ -58,7 +60,7 @@
             this.gravity = FlightGlobals.currentMainBody.gravParameter / Math.Pow(FlightGlobals.currentMainBody.Radius, 2);
             this.actual = (SimulationProcessor.LastStage.actualThrust / (SimulationProcessor.LastStage.totalMass * this.gravity)).ToString("F2");
             this.total = (SimulationProcessor.LastStage.thrust / (SimulationProcessor.LastStage.totalMass * this.gravity)).ToString("F2");
-            this.DrawLine("TWR (Surface)", this.actual + " / " + this.total);
+            this.DrawLine("TWR (Surface)", this.actual + " / " + this.total, section.IsHud);
         }
 
         public override void Reset()

--- a/KerbalEngineer/Flight/Readouts/Vessel/Thrust.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/Thrust.cs
@@ -19,6 +19,7 @@
 
 #region Using Directives
 
+using KerbalEngineer.Flight.Sections;
 using KerbalEngineer.Helpers;
 
 #endregion
@@ -27,8 +28,6 @@
 {
     public class Thrust : ReadoutModule
     {
-
-
         #region Constructors
 
         public Thrust()
@@ -43,13 +42,12 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (SimulationProcessor.ShowDetails)
             {
-                this.DrawLine(Units.ToForce(SimulationProcessor.LastStage.actualThrust, SimulationProcessor.LastStage.thrust));
+                this.DrawLine(Units.ToForce(SimulationProcessor.LastStage.actualThrust, SimulationProcessor.LastStage.thrust), section.IsHud);
             }
-
         }
 
         public override void Reset()

--- a/KerbalEngineer/Flight/Readouts/Vessel/ThrustToWeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Vessel/ThrustToWeight.cs
@@ -18,6 +18,8 @@
 // 
 
 #region Using Directives
+
+using KerbalEngineer.Flight.Sections;
 
 #endregion
 
@@ -47,7 +49,7 @@
 
         #region Methods: public
 
-        public override void Draw()
+        public override void Draw(SectionModule section)
         {
             if (!SimulationProcessor.ShowDetails)
             {
@@ -57,7 +59,7 @@
             this.gravity = FlightGlobals.getGeeForceAtPosition(FlightGlobals.ship_position).magnitude;
             this.actual = (SimulationProcessor.LastStage.actualThrust / (SimulationProcessor.LastStage.totalMass * this.gravity)).ToString("F2");
             this.total = (SimulationProcessor.LastStage.thrust / (SimulationProcessor.LastStage.totalMass * this.gravity)).ToString("F2");
-            this.DrawLine("TWR", this.actual + " / " + this.total);
+            this.DrawLine("TWR", this.actual + " / " + this.total, section.IsHud);
         }
 
         public override void Reset()

--- a/KerbalEngineer/Flight/Sections/SectionEditor.cs
+++ b/KerbalEngineer/Flight/Sections/SectionEditor.cs
@@ -221,6 +221,14 @@
                 {
                     DisplayStack.Instance.RequestResize();
                 }
+                if (GUILayout.Toggle(this.ParentSection.IsHud, "HUD", this.readoutButtonStyle, GUILayout.Width(50.0f)) != this.ParentSection.IsHud)
+                {
+                    this.ParentSection.IsHud = !this.ParentSection.IsHud;
+                    if (this.ParentSection.IsHud)
+                    {
+                        this.ParentSection.IsFloating = true;
+                    }
+                }
                 if (GUILayout.Button("DELETE SECTION", this.readoutButtonStyle, GUILayout.Width(150.0f)))
                 {
                     this.ParentSection.IsFloating = false;

--- a/KerbalEngineer/Flight/Sections/SectionLibrary.cs
+++ b/KerbalEngineer/Flight/Sections/SectionLibrary.cs
@@ -21,10 +21,11 @@
 
 using System.Collections.Generic;
 using System.Linq;
-using System.Runtime.InteropServices;
 
 using KerbalEngineer.Flight.Readouts;
 using KerbalEngineer.Settings;
+
+using UnityEngine;
 
 #endregion
 
@@ -69,6 +70,46 @@
                 Abbreviation = "RDZV",
                 ReadoutModules = ReadoutLibrary.GetCategory(ReadoutCategory.GetCategory("Rendezvous")).Where(r => r.IsDefault).ToList()
             });
+
+            var hud1 = new SectionModule
+            {
+                Name = "HUD 1",
+                Abbreviation = "HUD 1",
+                IsCustom = true,
+                IsVisible = true,
+                IsHud = true,
+                ReadoutModules = new List<ReadoutModule>
+                {
+                    ReadoutLibrary.GetReadout("ApoapsisHeight"),
+                    ReadoutLibrary.GetReadout("TimeToApoapsis"),
+                    ReadoutLibrary.GetReadout("PeriapsisHeight"),
+                    ReadoutLibrary.GetReadout("TimeToPeriapsis")
+                },
+            };
+            hud1.FloatingPositionX = Screen.width * 0.25f - (hud1.ReadoutModules.First().ContentWidth * 0.5f);
+            hud1.FloatingPositionY = 0.0f;
+            hud1.IsFloating = true;
+            CustomSections.Add(hud1);
+
+            var hud2 = new SectionModule
+            {
+                Name = "HUD 2",
+                Abbreviation = "HUD 2",
+                IsCustom = true,
+                IsVisible = true,
+                IsHud = true,
+                ReadoutModules = new List<ReadoutModule>
+                {
+                    ReadoutLibrary.GetReadout("AltitudeTerrain"),
+                    ReadoutLibrary.GetReadout("VerticalSpeed"),
+                    ReadoutLibrary.GetReadout("HorizontalSpeed"),
+                    ReadoutLibrary.GetReadout("Biome")
+                },
+            };
+            hud2.FloatingPositionX = Screen.width * 0.75f - (hud2.ReadoutModules.First().ContentWidth * 0.5f);
+            hud2.FloatingPositionY = 0.0f;
+            hud2.IsFloating = true;
+            CustomSections.Add(hud2);
         }
 
         #endregion
@@ -76,28 +117,30 @@
         #region Properties
 
         /// <summary>
+        ///     Gets and sets a list of custom sections.
+        /// </summary>
+        public static List<SectionModule> CustomSections { get; set; }
+
+        /// <summary>
+        ///     Gets the number of total sections that are stored in the library.
+        /// </summary>
+        public static int NumberOfSections { get; private set; }
+
+        /// <summary>
+        ///     Gets the number of sections that are being drawn on the display stack.
+        /// </summary>
+        public static int NumberOfStackSections { get; private set; }
+
+        /// <summary>
         ///     Gets and sets a list of stock sections
         /// </summary>
         public static List<SectionModule> StockSections { get; set; }
 
-        /// <summary>
-        ///     Gets and sets a list of custom sections.
-        /// </summary>
-        public static List<SectionModule> CustomSections { get; set; }
-
-        /// <summary>
-        ///     Gets the number of sections that are being drawn on the display stack.
-        /// </summary>
-        public static int NumberOfStackSections { get; private set; }
-
-        /// <summary>
-        ///     Gets the number of total sections that are stored in the library.
-        /// </summary>
-        public static int NumberOfSections { get; private set; }
-
         #endregion
 
         #region Updating
+
+        #region Methods: public
 
         /// <summary>
         ///     Fixed update all of the sections.
@@ -107,6 +150,22 @@
             FixedUpdateSections(StockSections);
             FixedUpdateSections(CustomSections);
         }
+
+        /// <summary>
+        ///     Update all of the sections and process section counts.
+        /// </summary>
+        public static void Update()
+        {
+            NumberOfStackSections = 0;
+            NumberOfSections = 0;
+
+            UpdateSections(StockSections);
+            UpdateSections(CustomSections);
+        }
+
+        #endregion
+
+        #region Methods: private
 
         /// <summary>
         ///     Fixed updates a list of sections.
@@ -120,18 +179,6 @@
                     section.FixedUpdate();
                 }
             }
-        }
-
-        /// <summary>
-        ///     Update all of the sections and process section counts.
-        /// </summary>
-        public static void Update()
-        {
-            NumberOfStackSections = 0;
-            NumberOfSections = 0;
-
-            UpdateSections(StockSections);
-            UpdateSections(CustomSections);
         }
 
         /// <summary>
@@ -176,7 +223,37 @@
 
         #endregion
 
+        #endregion
+
         #region Saving and Loading
+
+        /// <summary>
+        ///     Loads the state of all stored sections.
+        /// </summary>
+        public static void Load()
+        {
+            if (!SettingHandler.Exists("SectionLibrary.xml"))
+            {
+                return;
+            }
+
+            GetAllSections().ForEach(s =>
+            {
+                if (s.Window != null)
+                {
+                    Object.Destroy(s.Window);
+                }
+            });
+
+            var handler = SettingHandler.Load("SectionLibrary.xml", new[] {typeof(List<SectionModule>)});
+            StockSections = handler.Get("StockSections", StockSections);
+            CustomSections = handler.Get("CustomSections", CustomSections);
+
+            foreach (var section in GetAllSections())
+            {
+                section.ClearNullReadouts();
+            }
+        }
 
         /// <summary>
         ///     Saves the state of all the stored sections.
@@ -189,26 +266,30 @@
             handler.Save("SectionLibrary.xml");
         }
 
-        /// <summary>
-        ///     Loads the state of all stored sections.
-        /// </summary>
-        public static void Load()
-        {
-            var handler = SettingHandler.Load("SectionLibrary.xml", new[] {typeof(List<SectionModule>)});
-            StockSections = handler.Get("StockSections", StockSections);
-            CustomSections = handler.Get("CustomSections", CustomSections);
-
-            foreach (var section in StockSections)
-            {
-                section.ClearNullReadouts();
-            }
-        }
-
         #endregion
 
         #region Methods
 
         /// <summary>
+        ///     Gets a list containing all section modules.
+        /// </summary>
+        public static List<SectionModule> GetAllSections()
+        {
+            var sections = new List<SectionModule>();
+            sections.AddRange(StockSections);
+            sections.AddRange(CustomSections);
+            return sections;
+        }
+
+        /// <summary>
+        ///     Gets a custom section that has the specified name.
+        /// </summary>
+        public static SectionModule GetCustomSection(string name)
+        {
+            return CustomSections.FirstOrDefault(s => s.Name == name);
+        }
+
+        /// <summary>
         ///     Gets a section that has the specified name.
         /// </summary>
         public static SectionModule GetSection(string name)
@@ -225,11 +306,11 @@
         }
 
         /// <summary>
-        ///     Gets a custom section that has the specified name.
-        /// </summary>
-        public static SectionModule GetCustomSection(string name)
-        {
-            return CustomSections.FirstOrDefault(s => s.Name == name);
+        ///     Removes a custom section witht he specified name.
+        /// </summary>
+        public static bool RemoveCustomSection(string name)
+        {
+            return CustomSections.Remove(GetCustomSection(name));
         }
 
         /// <summary>
@@ -241,19 +322,11 @@
         }
 
         /// <summary>
-        ///     Removes as stock section with the specified name.
+        ///     Removes a stock section with the specified name.
         /// </summary>
         public static bool RemoveStockSection(string name)
         {
             return StockSections.Remove(GetStockSection(name));
-        }
-
-        /// <summary>
-        ///     Removes a custom section witht he specified name.
-        /// </summary>
-        public static bool RemoveCustomSection(string name)
-        {
-            return CustomSections.Remove(GetCustomSection(name));
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Sections/SectionModule.cs
+++ b/KerbalEngineer/Flight/Sections/SectionModule.cs
@@ -64,19 +64,29 @@
         #region Properties
 
         /// <summary>
-        ///     Gets and sets the name of the section.
-        /// </summary>
-        public string Name { get; set; }
-
-        /// <summary>
         ///     Gets and sets the abbreviation of the section.
         /// </summary>
         public string Abbreviation { get; set; }
 
         /// <summary>
-        ///     Gets and sets the visibility of the section.
-        /// </summary>
-        public bool IsVisible { get; set; }
+        ///     Gets and sets the X position of the editor window. (Only used for serialisation.)
+        /// </summary>
+        public float EditorPositionX { get; set; }
+
+        /// <summary>
+        ///     Gets and sets the Y position of the editor window. (Only used for serialisation.)
+        /// </summary>
+        public float EditorPositionY { get; set; }
+
+        /// <summary>
+        ///     Gets and sets the X position of the floating window. (Only used for serialisation.)
+        /// </summary>
+        public float FloatingPositionX { get; set; }
+
+        /// <summary>
+        ///     Gets and sets the Y position of the floating window. (Only used for serialisation.)
+        /// </summary>
+        public float FloatingPositionY { get; set; }
 
         /// <summary>
         ///     Gets and sets whether the section is custom.
@@ -84,14 +94,23 @@
         public bool IsCustom { get; set; }
 
         /// <summary>
-        ///     Gets and sets the X position of the floating window. (Only used for serialisation.)
-        /// </summary>
-        public float FloatingPositionX { get; set; }
-
-        /// <summary>
-        ///     Gets and sets the Y position of the floating window. (Only used for serialisation.)
-        /// </summary>
-        public float FloatingPositionY { get; set; }
+        ///     Gets and sets whether the section editor is visible.
+        /// </summary>
+        public bool IsEditorVisible
+        {
+            get { return this.editor != null; }
+            set
+            {
+                if (value && this.editor == null)
+                {
+                    this.editor = FlightEngineerCore.Instance.AddSectionEditor(this);
+                }
+                else if (!value && this.editor != null)
+                {
+                    Object.Destroy(this.editor);
+                }
+            }
+        }
 
         /// <summary>
         ///     Gets and sets whether the section is in a floating state.
@@ -113,33 +132,19 @@
         }
 
         /// <summary>
-        ///     Gets and sets the X position of the editor window. (Only used for serialisation.)
-        /// </summary>
-        public float EditorPositionX { get; set; }
-
-        /// <summary>
-        ///     Gets and sets the Y position of the editor window. (Only used for serialisation.)
-        /// </summary>
-        public float EditorPositionY { get; set; }
-
-        /// <summary>
-        ///     Gets and sets whether the section editor is visible.
-        /// </summary>
-        public bool IsEditorVisible
-        {
-            get { return this.editor != null; }
-            set
-            {
-                if (value && this.editor == null)
-                {
-                    this.editor = FlightEngineerCore.Instance.AddSectionEditor(this);
-                }
-                else if (!value && this.editor != null)
-                {
-                    Object.Destroy(this.editor);
-                }
-            }
-        }
+        ///     Gets and sets whether the section module is a HUD.
+        /// </summary>
+        public bool IsHud { get; set; }
+
+        /// <summary>
+        ///     Gets and sets the visibility of the section.
+        /// </summary>
+        public bool IsVisible { get; set; }
+
+        /// <summary>
+        ///     Gets and sets the name of the section.
+        /// </summary>
+        public string Name { get; set; }
 
         /// <summary>
         ///     Gets and sets the names of the installed readout modules. (Only used with serialisation.)
@@ -153,21 +158,27 @@
         /// <summary>
         ///     Gets and sets the list of readout modules.
         /// </summary>
-        [XmlIgnore] public List<ReadoutModule> ReadoutModules { get; set; }
+        [XmlIgnore]
+        public List<ReadoutModule> ReadoutModules { get; set; }
 
         /// <summary>
         ///     Gets and sets the floating window.
         /// </summary>
-        [XmlIgnore] public SectionWindow Window { get; set; }
+        [XmlIgnore]
+        public SectionWindow Window { get; set; }
 
         #endregion
 
         #region GUIStyles
+
+        #region Fields
 
         private GUIStyle boxStyle;
         private GUIStyle buttonStyle;
         private GUIStyle messageStyle;
         private GUIStyle titleStyle;
+
+        #endregion
 
         /// <summary>
         ///     Initialises all the styles required for this object.
@@ -280,6 +291,8 @@
 
         #region Drawing
 
+        #region Methods: public
+
         /// <summary>
         ///     Draws the section and all of the internal readout modules.
         /// </summary>
@@ -290,8 +303,46 @@
                 return;
             }
 
-            this.DrawSectionTitleBar();
+            if (!this.IsHud)
+            {
+                this.DrawSectionTitleBar();
+            }
+
             this.DrawReadoutModules();
+        }
+
+        #endregion
+
+        #region Methods: private
+
+        /// <summary>
+        ///     Draws all the readout modules.
+        /// </summary>
+        private void DrawReadoutModules()
+        {
+            if (!this.IsHud)
+            {
+                GUILayout.BeginVertical(this.boxStyle);
+            }
+
+            if (this.ReadoutModules.Count > 0)
+            {
+                foreach (var readout in this.ReadoutModules)
+                {
+                    readout.LineCountStart();
+                    readout.Draw(this);
+                    readout.LineCountEnd();
+                }
+            }
+            else
+            {
+                GUILayout.Label("No readouts are installed.", this.messageStyle);
+            }
+
+            if (!this.IsHud)
+            {
+                GUILayout.EndVertical();
+            }
         }
 
         /// <summary>
@@ -306,27 +357,7 @@
             GUILayout.EndHorizontal();
         }
 
-        /// <summary>
-        ///     Draws all the readout modules.
-        /// </summary>
-        private void DrawReadoutModules()
-        {
-            GUILayout.BeginVertical(this.boxStyle);
-            if (this.ReadoutModules.Count > 0)
-            {
-                foreach (var readout in this.ReadoutModules)
-                {
-                    readout.LineCountStart();
-                    readout.Draw();
-                    readout.LineCountEnd();
-                }
-            }
-            else
-            {
-                GUILayout.Label("No readouts are installed.", this.messageStyle);
-            }
-            GUILayout.EndVertical();
-        }
+        #endregion
 
         #endregion
 

--- a/KerbalEngineer/Flight/Sections/SectionWindow.cs
+++ b/KerbalEngineer/Flight/Sections/SectionWindow.cs
@@ -17,7 +17,7 @@
 //     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // 
 
-#region
+#region Using Directives
 
 using KerbalEngineer.Extensions;
 
@@ -34,21 +34,6 @@
         private bool resizeRequested;
         private int windowId;
         private Rect windowPosition;
-
-        #endregion
-
-        #region Constructors
-
-        /// <summary>
-        ///     Initialises the object's state on creation.
-        /// </summary>
-        private void Start()
-        {
-            this.windowId = this.GetHashCode();
-            this.InitialiseStyles();
-            RenderingManager.AddToPostDrawQueue(0, this.Draw);
-            GuiDisplaySize.OnSizeChanged += this.OnSizeChanged;
-        }
 
         #endregion
 
@@ -72,7 +57,12 @@
 
         #region GUIStyles
 
+        #region Fields
+
         private GUIStyle windowStyle;
+        private GUIStyle hudWindowStyle;
+
+        #endregion
 
         /// <summary>
         ///     Initialises all the styles required for this object.
@@ -83,6 +73,18 @@
             {
                 margin = new RectOffset(),
                 padding = new RectOffset(5, 5, 0, 5),
+            };
+
+            this.hudWindowStyle = new GUIStyle(this.windowStyle)
+            {
+                normal =
+                {
+                    background = null
+                },
+                onNormal =
+                {
+                    background = null
+                }
             };
         }
 
@@ -101,19 +103,21 @@
         /// </summary>
         private void Draw()
         {
-            if (!DisplayStack.Instance.Hidden && (this.ParentSection != null && this.ParentSection.IsVisible))
+            if (this.ParentSection == null || !this.ParentSection.IsVisible || (DisplayStack.Instance.Hidden && !this.ParentSection.IsHud))
             {
-                if (this.resizeRequested)
-                {
-                    this.windowPosition.width = 0;
-                    this.windowPosition.height = 0;
-                    this.resizeRequested = false;
-                }
-                GUI.skin = null;
-                this.windowPosition = GUILayout.Window(this.windowId, this.windowPosition, this.Window, string.Empty, this.windowStyle).ClampToScreen();
-                this.ParentSection.FloatingPositionX = this.windowPosition.x;
-                this.ParentSection.FloatingPositionY = this.windowPosition.y;
+                return;
             }
+
+            if (this.resizeRequested)
+            {
+                this.windowPosition.width = 0;
+                this.windowPosition.height = 0;
+                this.resizeRequested = false;
+            }
+            GUI.skin = null;
+            this.windowPosition = GUILayout.Window(this.windowId, this.windowPosition, this.Window, string.Empty, (!this.ParentSection.IsHud || this.ParentSection.IsEditorVisible) ? this.windowStyle : this.hudWindowStyle).ClampToScreen();
+            this.ParentSection.FloatingPositionX = this.windowPosition.x;
+            this.ParentSection.FloatingPositionY = this.windowPosition.y;
         }
 
         /// <summary>
@@ -123,7 +127,10 @@
         {
             this.ParentSection.Draw();
 
-            GUI.DragWindow();
+            if (!this.ParentSection.IsHud || this.ParentSection.IsEditorVisible)
+            {
+                GUI.DragWindow();
+            }
         }
 
         #endregion
@@ -152,5 +159,20 @@
         }
 
         #endregion
+
+        #region Methods: private
+
+        /// <summary>
+        ///     Initialises the object's state on creation.
+        /// </summary>
+        private void Start()
+        {
+            this.windowId = this.GetHashCode();
+            this.InitialiseStyles();
+            RenderingManager.AddToPostDrawQueue(0, this.Draw);
+            GuiDisplaySize.OnSizeChanged += this.OnSizeChanged;
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Settings/SettingHandler.cs
+++ b/KerbalEngineer/Settings/SettingHandler.cs
@@ -34,7 +34,7 @@
     /// </summary>
     public class SettingHandler
     {
-        #region Static Fields
+        #region Fields
 
         /// <summary>
         ///     Stores the root settings directory for where all files will be saved.
@@ -46,6 +46,19 @@
         #region Constructors
 
         /// <summary>
+        ///     Creates an empty handler for managing setting items.
+        /// </summary>
+        public SettingHandler()
+        {
+            if (settingsDirectory == null)
+            {
+                settingsDirectory = Path.Combine(EngineerGlobals.AssemblyPath, "Settings");
+            }
+
+            this.Items = new List<SettingItem>();
+        }
+
+        /// <summary>
         ///     Sets the root settings directory if statically loaded.
         /// </summary>
         static SettingHandler()
@@ -56,19 +69,6 @@
             }
         }
 
-        /// <summary>
-        ///     Creates an empty handler for managing setting items.
-        /// </summary>
-        public SettingHandler()
-        {
-            if (settingsDirectory == null)
-            {
-                settingsDirectory = Path.Combine(EngineerGlobals.AssemblyPath, "Settings");
-            }
-
-            this.Items = new List<SettingItem>();
-        }
-
         #endregion
 
         #region Properties
@@ -76,7 +76,10 @@
         /// <summary>
         ///     Gets the directory where settings files are saved/loaded.
         /// </summary>
-        public static string SettingsDirectory { get { return settingsDirectory; } }
+        public static string SettingsDirectory
+        {
+            get { return settingsDirectory; }
+        }
 
         /// <summary>
         ///     Gets and sets the list of items.
@@ -187,6 +190,8 @@
 
         #region Saving
 
+        #region Methods: public
+
         /// <summary>
         ///     Saves all the items in the handler into the specified file.
         /// </summary>
@@ -195,6 +200,22 @@
             fileName = Path.Combine(settingsDirectory, fileName);
 
             this.Serialise(fileName);
+        }
+
+        #endregion
+
+        #region Methods: private
+
+        /// <summary>
+        ///     Creates a directory if it does not already exist.
+        /// </summary>
+        private void CreateDirectory(string fileName)
+        {
+            var filePath = new FileInfo(fileName).DirectoryName;
+            if (!Directory.Exists(filePath))
+            {
+                Directory.CreateDirectory(filePath);
+            }
         }
 
         /// <summary>
@@ -210,21 +231,18 @@
             }
         }
 
-        /// <summary>
-        ///     Creates a directory if it does not already exist.
-        /// </summary>
-        private void CreateDirectory(string fileName)
-        {
-            var filePath = new FileInfo(fileName).DirectoryName;
-            if (!Directory.Exists(filePath))
-            {
-                Directory.CreateDirectory(filePath);
-            }
-        }
+        #endregion
 
         #endregion
 
         #region Loading
+
+        #region Methods: public
+
+        public static bool Exists(string fileName)
+        {
+            return File.Exists(Path.Combine(settingsDirectory, fileName));
+        }
 
         /// <summary>
         ///     Returns a SettingHandler object created from the specified file. (Optional extra types are required for
@@ -237,6 +255,10 @@
             return Deserialise(fileName, extraTypes);
         }
 
+        #endregion
+
+        #region Methods: private
+
         /// <summary>
         ///     Returns a SettingHandler object containing items deserialized from the specified file.
         /// </summary>
@@ -257,5 +279,7 @@
         }
 
         #endregion
+
+        #endregion
     }
 }

 Binary files a/Output/KerbalEngineer/KerbalEngineer.dll and b/Output/KerbalEngineer/KerbalEngineer.dll differ