Added readout line count and resize.
Added readout line count and resize.

--- a/KerbalEngineer/Flight/Readouts/ReadoutModule.cs
+++ b/KerbalEngineer/Flight/Readouts/ReadoutModule.cs
@@ -29,9 +29,6 @@
     {
         #region Constructors
 
-        /// <summary>
-        ///     Creates a new readout module.
-        /// </summary>
         protected ReadoutModule()
         {
             this.InitialiseStyles();
@@ -43,66 +40,155 @@
         #region Properties
 
         /// <summary>
+        ///     Gets and sets the button style.
+        /// </summary>
+        public GUIStyle ButtonStyle { get; set; }
+
+        /// <summary>
+        ///     Gets ans sets the readout category.
+        /// </summary>
+        public ReadoutCategory Category { get; set; }
+
+        /// <summary>
+        ///     Gets and sets whether the readout can be added to a section multiple times.
+        /// </summary>
+        public bool Cloneable { get; set; }
+
+        /// <summary>
+        ///     Gets the width of the content. (Sum of NameStyle + ValueStyle widths.)
+        /// </summary>
+        public float ContentWidth
+        {
+            get { return 230.0f * GuiDisplaySize.Offset; }
+        }
+
+        /// <summary>
+        ///     Gets and sets the flexible label style.
+        /// </summary>
+        public GUIStyle FlexiLabelStyle { get; set; }
+
+        /// <summary>
+        ///     Gets and sets the help string which is shown in the editor.
+        /// </summary>
+        public string HelpString { get; set; }
+
+        /// <summary>
+        ///     Gets and sets whether the readout should be shown on new installs.
+        /// </summary>
+        public bool IsDefault { get; set; }
+
+        /// <summary>
+        ///     Gets and sets the message style.
+        /// </summary>
+        public GUIStyle MessageStyle { get; set; }
+
+        /// <summary>
         ///     Gets and sets the readout name.
         /// </summary>
         public string Name { get; set; }
 
-        public string HelpString { get; set; }
-
+        /// <summary>
+        ///     Gets and sets the name style.
+        /// </summary>
+        public GUIStyle NameStyle { get; set; }
+
+        /// <summary>
+        ///     Gets and sets whether the readout has requested a section resize.
+        /// </summary>
+        public bool ResizeRequested { get; set; }
+
+        /// <summary>
+        ///     Gets and sets whether the help string is being shown in the editor.
+        /// </summary>
         public bool ShowHelp { get; set; }
 
-        public bool ResizeRequested { get; set; }
-
-        public bool IsDefault { get; set; }
-
-        public bool Cloneable { get; set; }
-
-        /// <summary>
-        ///     Gets ans sets the readout category.
-        /// </summary>
-        public ReadoutCategory Category { get; set; }
-
-        /// <summary>
-        ///     Gets the width of the content. (Sum of NameStyle + ValueStyle widths.)
-        /// </summary>
-        public float ContentWidth
-        {
-            get { return 230.0f * GuiDisplaySize.Offset; }
-        }
-
-        #endregion
-
-        #region GUIStyles
-
-        /// <summary>
-        ///     Gets and sets the name style.
-        /// </summary>
-        public GUIStyle NameStyle { get; set; }
+        /// <summary>
+        ///     Gets and sets the text field style.
+        /// </summary>
+        public GUIStyle TextFieldStyle { get; set; }
 
         /// <summary>
         ///     Gets and sets the value style.
         /// </summary>
         public GUIStyle ValueStyle { get; set; }
 
-        /// <summary>
-        ///     Gets and sets the message style.
-        /// </summary>
-        public GUIStyle MessageStyle { get; set; }
-
-        /// <summary>
-        ///     Gets and sets the flexible label style.
-        /// </summary>
-        public GUIStyle FlexiLabelStyle { get; set; }
-
-        /// <summary>
-        ///     Gets and sets the button style.
-        /// </summary>
-        public GUIStyle ButtonStyle { get; set; }
-
-        /// <summary>
-        ///     Gets and sets the text field style.
-        /// </summary>
-        public GUIStyle TextFieldStyle { get; set; }
+        #endregion
+
+        #region Methods: public
+
+        /// <summary>
+        ///     Called when a readout is asked to draw its self.
+        /// </summary>
+        public virtual void Draw() { }
+
+        /// <summary>
+        ///     Called on each fixed update frame where the readout is visible.
+        /// </summary>
+        public virtual void FixedUpdate() { }
+
+        /// <summary>
+        ///     Called when FlightEngineerCore is started.
+        /// </summary>
+        public virtual void Reset() { }
+
+        /// <summary>
+        ///     Called on each update frame when the readout is visible.
+        /// </summary>
+        public virtual void Update() { }
+
+
+        public void LineCountStart()
+        {
+            this.lineCountStart = this.lineCountEnd;
+            this.lineCountEnd = 0;
+        }
+
+        public void LineCountEnd()
+        {
+            if (this.lineCountEnd.CompareTo(this.lineCountStart) < 0)
+            {
+                this.ResizeRequested = true;
+            }
+        }
+
+        #endregion
+
+        #region Methods: protected
+
+        private int lineCountEnd;
+        private int lineCountStart;
+
+        protected void DrawLine(string name, string value)
+        {
+            GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
+            GUILayout.Label(name, this.NameStyle);
+            GUILayout.FlexibleSpace();
+            GUILayout.Label(value, this.ValueStyle);
+            GUILayout.EndHorizontal();
+            this.lineCountEnd++;
+        }
+
+        protected void DrawLine(string value)
+        {
+            GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
+            GUILayout.Label(this.Name, this.NameStyle);
+            GUILayout.FlexibleSpace();
+            GUILayout.Label(value, this.ValueStyle);
+            GUILayout.EndHorizontal();
+            this.lineCountEnd++;
+        }
+
+        protected void DrawMessageLine(string value)
+        {
+            GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
+            GUILayout.Label(value, this.MessageStyle);
+            GUILayout.EndHorizontal();
+            this.lineCountEnd++;
+        }
+
+        #endregion
+
+        #region Methods: private
 
         /// <summary>
         ///     Initialises all the styles required for this object.
@@ -184,64 +270,5 @@
         }
 
         #endregion
-
-        #region Protected Methods
-
-        /// <summary>
-        ///     Draws a single data line.
-        /// </summary>
-        protected void DrawLine(string name, string value)
-        {
-            GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
-            GUILayout.Label(name, this.NameStyle);
-            GUILayout.FlexibleSpace();
-            GUILayout.Label(value, this.ValueStyle);
-            GUILayout.EndHorizontal();
-        }
-
-        /// <summary>
-        ///     Draws a single data line.
-        /// </summary>
-        protected void DrawLine(string value)
-        {
-            GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
-            GUILayout.Label(this.Name, this.NameStyle);
-            GUILayout.FlexibleSpace();
-            GUILayout.Label(value, this.ValueStyle);
-            GUILayout.EndHorizontal();
-        }
-
-        protected void DrawMessageLine(string value)
-        {
-            GUILayout.BeginHorizontal(GUILayout.Width(this.ContentWidth));
-            GUILayout.Label(value, this.MessageStyle);
-            GUILayout.EndHorizontal();
-        }
-
-        #endregion
-
-        #region Virtual Methods
-
-        /// <summary>
-        ///     Called on each fixed update frame where the readout is visible.
-        /// </summary>
-        public virtual void FixedUpdate() { }
-
-        /// <summary>
-        ///     Called on each update frame where the readout is visible.
-        /// </summary>
-        public virtual void Update() { }
-
-        /// <summary>
-        ///     Called when a readout is asked to draw its self.
-        /// </summary>
-        public virtual void Draw() { }
-
-        /// <summary>
-        ///     Called when the active vessel changes.
-        /// </summary>
-        public virtual void Reset() { }
-
-        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/AltitudeSeaLevel.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/AltitudeSeaLevel.cs
@@ -27,6 +27,8 @@
 {
     public class AltitudeSeaLevel : ReadoutModule
     {
+        #region Constructors
+
         public AltitudeSeaLevel()
         {
             this.Name = "Altitude (Sea Level)";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.AltitudeSeaLevel.ToDistance());
             }
-
-            this.DrawLine(RendezvousProcessor.AltitudeSeaLevel.ToDistance());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeAscendingNode.cs
@@ -27,6 +27,8 @@
 {
     public class AngleToRelativeAscendingNode : ReadoutModule
     {
+        #region Constructors
+
         public AngleToRelativeAscendingNode()
         {
             this.Name = "Angle to Rel. AN";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.AngleToAscendingNode.ToAngle());
             }
-
-            this.DrawLine(RendezvousProcessor.AngleToAscendingNode.ToAngle());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/AngleToRelativeDescendingNode.cs
@@ -27,6 +27,8 @@
 {
     public class AngleToRelativeDescendingNode : ReadoutModule
     {
+        #region Constructors
+
         public AngleToRelativeDescendingNode()
         {
             this.Name = "Angle to Rel. DN";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.AngleToDescendingNode.ToAngle());
             }
-
-            this.DrawLine(RendezvousProcessor.AngleToDescendingNode.ToAngle());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/ApoapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/ApoapsisHeight.cs
@@ -27,6 +27,8 @@
 {
     public class ApoapsisHeight : ReadoutModule
     {
+        #region Constructors
+
         public ApoapsisHeight()
         {
             this.Name = "Apoapsis Height";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.ApoapsisHeight.ToDistance());
             }
-
-            this.DrawLine(RendezvousProcessor.ApoapsisHeight.ToDistance());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/Distance.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/Distance.cs
@@ -27,6 +27,8 @@
 {
     public class Distance : ReadoutModule
     {
+        #region Constructors
+
         public Distance()
         {
             this.Name = "Distance";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.Distance.ToDistance());
             }
-
-            this.DrawLine(RendezvousProcessor.Distance.ToDistance());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/InterceptAngle.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/InterceptAngle.cs
@@ -27,6 +27,8 @@
 {
     public class InterceptAngle : ReadoutModule
     {
+        #region Constructors
+
         public InterceptAngle()
         {
             this.Name = "Intercept Angle";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.InterceptAngle.ToAngle());
             }
-
-            this.DrawLine(RendezvousProcessor.InterceptAngle.ToAngle());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/OrbitalPeriod.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/OrbitalPeriod.cs
@@ -27,6 +27,8 @@
 {
     public class OrbitalPeriod : ReadoutModule
     {
+        #region Constructors
+
         public OrbitalPeriod()
         {
             this.Name = "Orbital Period";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.OrbitalPeriod.ToTime("F3"));
             }
-
-            this.DrawLine(RendezvousProcessor.OrbitalPeriod.ToTime("F3"));
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/PeriapsisHeight.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/PeriapsisHeight.cs
@@ -27,6 +27,8 @@
 {
     public class PeriapsisHeight : ReadoutModule
     {
+        #region Constructors
+
         public PeriapsisHeight()
         {
             this.Name = "Periapsis Height";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.PeriapsisHeight.ToDistance());
             }
-
-            this.DrawLine(RendezvousProcessor.PeriapsisHeight.ToDistance());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/PhaseAngle.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/PhaseAngle.cs
@@ -27,6 +27,8 @@
 {
     public class PhaseAngle : ReadoutModule
     {
+        #region Constructors
+
         public PhaseAngle()
         {
             this.Name = "Phase Angle";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.PhaseAngle.ToAngle());
             }
-
-            this.DrawLine(RendezvousProcessor.PhaseAngle.ToAngle());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/RelativeInclination.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/RelativeInclination.cs
@@ -27,6 +27,8 @@
 {
     public class RelativeInclination : ReadoutModule
     {
+        #region Constructors
+
         public RelativeInclination()
         {
             this.Name = "Relative Inclination";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.RelativeInclination.ToAngle());
             }
-
-            this.DrawLine(RendezvousProcessor.RelativeInclination.ToAngle());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToApoapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToApoapsis.cs
@@ -27,6 +27,8 @@
 {
     public class TimeToApoapsis : ReadoutModule
     {
+        #region Constructors
+
         public TimeToApoapsis()
         {
             this.Name = "Time to Apoapsis";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.TimeToApoapsis.ToTime());
             }
-
-            this.DrawLine(RendezvousProcessor.TimeToApoapsis.ToTime());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToPeriapsis.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToPeriapsis.cs
@@ -27,6 +27,8 @@
 {
     public class TimeToPeriapsis : ReadoutModule
     {
+        #region Constructors
+
         public TimeToPeriapsis()
         {
             this.Name = "Time to Periapsis";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.TimeToPeriapsis.ToTime());
             }
-
-            this.DrawLine(RendezvousProcessor.TimeToPeriapsis.ToTime());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeAscendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeAscendingNode.cs
@@ -27,6 +27,8 @@
 {
     public class TimeToRelativeAscendingNode : ReadoutModule
     {
+        #region Constructors
+
         public TimeToRelativeAscendingNode()
         {
             this.Name = "Time to Rel. AN";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.TimeToAscendingNode.ToTime());
             }
-
-            this.DrawLine(RendezvousProcessor.TimeToAscendingNode.ToTime());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeDescendingNode.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/TimeToRelativeDescendingNode.cs
@@ -27,6 +27,8 @@
 {
     public class TimeToRelativeDescendingNode : ReadoutModule
     {
+        #region Constructors
+
         public TimeToRelativeDescendingNode()
         {
             this.Name = "Time to Rel. DN";
@@ -35,24 +37,28 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            RendezvousProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            if (!RendezvousProcessor.ShowDetails)
+            if (RendezvousProcessor.ShowDetails)
             {
-                return;
+                this.DrawLine(RendezvousProcessor.TimeToDescendingNode.ToTime());
             }
-
-            this.DrawLine(RendezvousProcessor.TimeToDescendingNode.ToTime());
         }
 
         public override void Reset()
         {
             FlightEngineerCore.Instance.AddUpdatable(RendezvousProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            RendezvousProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/AtmosphericEfficiency.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/AtmosphericEfficiency.cs
@@ -21,7 +21,7 @@
 {
     public class AtmosphericEfficiency : ReadoutModule
     {
-        private bool showing;
+        #region Constructors
 
         public AtmosphericEfficiency()
         {
@@ -31,22 +31,15 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            AtmosphericProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
             if (AtmosphericProcessor.ShowDetails)
             {
-                this.showing = true;
                 this.DrawLine(AtmosphericProcessor.Efficiency.ToString("F2"));
-            }
-            else if (this.showing)
-            {
-                this.showing = false;
-                this.ResizeRequested = true;
             }
         }
 
@@ -54,5 +47,12 @@
         {
             FlightEngineerCore.Instance.AddUpdatable(AtmosphericProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            AtmosphericProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactAltitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactAltitude.cs
@@ -27,7 +27,7 @@
 {
     public class ImpactAltitude : ReadoutModule
     {
-        private bool showing;
+        #region Constructors
 
         public ImpactAltitude()
         {
@@ -37,22 +37,15 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            ImpactProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.showing = true;
                 this.DrawLine(ImpactProcessor.Altitude.ToDistance());
-            }
-            else if (this.showing)
-            {
-                this.showing = false;
-                this.ResizeRequested = true;
             }
         }
 
@@ -60,5 +53,12 @@
         {
             FlightEngineerCore.Instance.AddUpdatable(ImpactProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            ImpactProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactBiome.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactBiome.cs
@@ -19,7 +19,7 @@
 
 #region Using Directives
 
-using KerbalEngineer.Extensions;
+
 
 #endregion
 
@@ -27,7 +27,7 @@
 {
     public class ImpactBiome : ReadoutModule
     {
-        private bool showing;
+        #region Constructors
 
         public ImpactBiome()
         {
@@ -37,22 +37,15 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            ImpactProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.showing = true;
                 this.DrawLine(ImpactProcessor.Biome);
-            }
-            else if (this.showing)
-            {
-                this.showing = false;
-                this.ResizeRequested = true;
             }
         }
 
@@ -60,5 +53,12 @@
         {
             FlightEngineerCore.Instance.AddUpdatable(ImpactProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            ImpactProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactLatitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactLatitude.cs
@@ -27,7 +27,7 @@
 {
     public class ImpactLatitude : ReadoutModule
     {
-        private bool showing;
+        #region Constructors
 
         public ImpactLatitude()
         {
@@ -37,22 +37,15 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            ImpactProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.showing = true;
                 this.DrawLine(ImpactProcessor.Latitude.ToAngle());
-            }
-            else if (this.showing)
-            {
-                this.showing = false;
-                this.ResizeRequested = true;
             }
         }
 
@@ -60,5 +53,12 @@
         {
             FlightEngineerCore.Instance.AddUpdatable(ImpactProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            ImpactProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactLongitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactLongitude.cs
@@ -27,7 +27,7 @@
 {
     public class ImpactLongitude : ReadoutModule
     {
-        private bool showing;
+        #region Constructors
 
         public ImpactLongitude()
         {
@@ -37,22 +37,15 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            ImpactProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.showing = true;
                 this.DrawLine(ImpactProcessor.Longitude.ToAngle());
-            }
-            else if (this.showing)
-            {
-                this.showing = false;
-                this.ResizeRequested = true;
             }
         }
 
@@ -60,5 +53,12 @@
         {
             FlightEngineerCore.Instance.AddUpdatable(ImpactProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            ImpactProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactTime.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactTime.cs
@@ -27,7 +27,7 @@
 {
     public class ImpactTime : ReadoutModule
     {
-        private bool showing;
+        #region Constructors
 
         public ImpactTime()
         {
@@ -37,22 +37,15 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            ImpactProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.showing = true;
                 this.DrawLine(ImpactProcessor.Time.ToTime());
-            }
-            else if (this.showing)
-            {
-                this.showing = false;
-                this.ResizeRequested = true;
             }
         }
 
@@ -60,5 +53,12 @@
         {
             FlightEngineerCore.Instance.AddUpdatable(ImpactProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            ImpactProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/TerminalVelocity.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/TerminalVelocity.cs
@@ -27,7 +27,7 @@
 {
     public class TerminalVelocity : ReadoutModule
     {
-        private bool showing;
+        #region Constructors
 
         public TerminalVelocity()
         {
@@ -37,25 +37,15 @@
             this.IsDefault = true;
         }
 
-        public override void Update()
-        {
-            AtmosphericProcessor.RequestUpdate();
-        }
+        #endregion
+
+        #region Methods: public
 
         public override void Draw()
         {
-            var tempShowing = this.showing;
-            this.showing = false;
-
-            if (FlightGlobals.ActiveVessel.atmDensity > 0)
+            if (AtmosphericProcessor.ShowDetails)
             {
-                this.showing = true;
                 this.DrawLine(AtmosphericProcessor.TerminalVelocity.ToSpeed());
-            }
-
-            if (this.showing != tempShowing)
-            {
-                this.ResizeRequested = true;
             }
         }
 
@@ -63,5 +53,12 @@
         {
             FlightEngineerCore.Instance.AddUpdatable(AtmosphericProcessor.Instance);
         }
+
+        public override void Update()
+        {
+            AtmosphericProcessor.RequestUpdate();
+        }
+
+        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Sections/SectionModule.cs
+++ b/KerbalEngineer/Flight/Sections/SectionModule.cs
@@ -316,7 +316,9 @@
             {
                 foreach (var readout in this.ReadoutModules)
                 {
+                    readout.LineCountStart();
                     readout.Draw();
+                    readout.LineCountEnd();
                 }
             }
             else

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