Moved all configuration items to ARConfiguration, because that makes sense.
Moved all configuration items to ARConfiguration, because that makes sense.

file:b/.gitattributes (new)
--- /dev/null
+++ b/.gitattributes
@@ -1,1 +1,13 @@
+* text=auto
+* eol=lf
 
+# These files are text and should be normalized (convert crlf => lf)
+*.cs      text diff=csharp
+*.cfg     text
+*.csproj  text
+*.sln     text
+
+# Images should be treated as binary
+# (binary is a macro for -text -diff)
+*.png     binary
+

--- a/ARConfiguration.cs
+++ b/ARConfiguration.cs
@@ -13,6 +13,30 @@
 	[KSPAddon(KSPAddon.Startup.SpaceCentre, false)]
 	public class ARConfiguration : MonoBehaviour
 	{
+		public static bool RequireLineOfSight
+		{
+			get;
+			private set;
+		}
+
+		public static double RadiusRatio
+		{
+			get;
+			private set;
+		}
+
+		public static bool RequireConnectionForControl
+		{
+			get;
+			private set;
+		}
+
+		public static bool FixedPowerCost
+		{
+			get;
+			private set;
+		}
+
 		private bool showConfigWindow;
 		private Rect configWindowPos;
 
@@ -47,15 +71,15 @@
 
 			this.configWindowPos = this.LoadConfigValue("configWindowPos", this.configWindowPos);
 
-			AntennaRelay.requireLineOfSight = this.LoadConfigValue("requireLineOfSight", false);
-
-			AntennaRelay.radiusRatio = (1 - this.LoadConfigValue("graceRatio", .05d));
-			AntennaRelay.radiusRatio *= AntennaRelay.radiusRatio;
-
-			ARFlightController.requireConnectionForControl =
+			ARConfiguration.RequireLineOfSight = this.LoadConfigValue("requireLineOfSight", false);
+
+			ARConfiguration.RadiusRatio = (1 - this.LoadConfigValue("graceRatio", .05d));
+			ARConfiguration.RadiusRatio *= ARConfiguration.RadiusRatio;
+
+			ARConfiguration.RequireConnectionForControl =
 				this.LoadConfigValue("requireConnectionForControl", false);
 
-			ModuleLimitedDataTransmitter.fixedPowerCost = this.LoadConfigValue("fixedPowerCost", false);
+			ARConfiguration.FixedPowerCost = this.LoadConfigValue("fixedPowerCost", false);
 
 			GameEvents.onGameSceneLoadRequested.Add(this.onSceneChangeRequested);
 
@@ -125,10 +149,10 @@
 
 			GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
 
-			bool requireLineOfSight = GUILayout.Toggle(AntennaRelay.requireLineOfSight, "Require Line of Sight");
-			if (requireLineOfSight != AntennaRelay.requireLineOfSight)
-			{
-				AntennaRelay.requireLineOfSight = requireLineOfSight;
+			bool requireLineOfSight = GUILayout.Toggle(ARConfiguration.RequireLineOfSight, "Require Line of Sight");
+			if (requireLineOfSight != ARConfiguration.RequireLineOfSight)
+			{
+				ARConfiguration.RequireLineOfSight = requireLineOfSight;
 				this.SaveConfigValue("requireLineOfSight", requireLineOfSight);
 			}
 
@@ -138,12 +162,12 @@
 
 			bool requireConnectionForControl =
 				GUILayout.Toggle(
-					ARFlightController.requireConnectionForControl,
+					ARConfiguration.RequireConnectionForControl,
 					"Require Connection for Probe Control"
 				);
-			if (requireConnectionForControl != ARFlightController.requireConnectionForControl)
-			{
-				ARFlightController.requireConnectionForControl = requireConnectionForControl;
+			if (requireConnectionForControl != ARConfiguration.RequireConnectionForControl)
+			{
+				ARConfiguration.RequireConnectionForControl = requireConnectionForControl;
 				this.SaveConfigValue("requireConnectionForControl", requireConnectionForControl);
 			}
 
@@ -151,10 +175,10 @@
 
 			GUILayout.BeginHorizontal();
 
-			bool fixedPowerCost = GUILayout.Toggle(ModuleLimitedDataTransmitter.fixedPowerCost, "Use Fixed Power Cost");
-			if (fixedPowerCost != ModuleLimitedDataTransmitter.fixedPowerCost)
-			{
-				ModuleLimitedDataTransmitter.fixedPowerCost = fixedPowerCost;
+			bool fixedPowerCost = GUILayout.Toggle(ARConfiguration.FixedPowerCost, "Use Fixed Power Cost");
+			if (fixedPowerCost != ARConfiguration.FixedPowerCost)
+			{
+				ARConfiguration.FixedPowerCost = fixedPowerCost;
 				this.SaveConfigValue("fixedPowerCost", fixedPowerCost);
 			}
 
@@ -164,7 +188,7 @@
 			{
 				GUILayout.BeginHorizontal();
 
-				double graceRatio = 1d - Math.Sqrt(AntennaRelay.radiusRatio);
+				double graceRatio = 1d - Math.Sqrt(ARConfiguration.RadiusRatio);
 				double newRatio;
 
 				GUILayout.Label(string.Format("Line of Sight 'Fudge Factor': {0:P0}", graceRatio));
@@ -178,7 +202,7 @@
 
 				if (newRatio != graceRatio)
 				{
-					AntennaRelay.radiusRatio = (1d - newRatio) * (1d - newRatio);
+					ARConfiguration.RadiusRatio = (1d - newRatio) * (1d - newRatio);
 					this.SaveConfigValue("graceRatio", newRatio);
 				}
 

--- a/ARFlightController.cs
+++ b/ARFlightController.cs
@@ -37,10 +37,6 @@
 	[KSPAddon(KSPAddon.Startup.Flight, false)]
 	public class ARFlightController : MonoBehaviour
 	{
-		#region Static Members
-		public static bool requireConnectionForControl;
-		#endregion
-
 		#region Fields
 		protected Dictionary<ConnectionStatus, string> connectionTextures;
 		protected Dictionary<ConnectionStatus, Texture> appLauncherTextures;
@@ -162,7 +158,7 @@
 
 			VesselCommand availableCommand;
 
-			if (requireConnectionForControl)
+			if (ARConfiguration.RequireConnectionForControl)
 			{
 				availableCommand = this.vessel.CurrentCommand();
 			}
@@ -185,7 +181,7 @@
 			// and the vessel does not have any connected relays...
 			if (
 				HighLogic.LoadedSceneIsFlight &&
-				requireConnectionForControl &&
+				ARConfiguration.RequireConnectionForControl &&
 				this.vessel != null &&
 				this.vessel.vesselType != VesselType.EVA &&
 				!(

--- a/AntennaRelay.cs
+++ b/AntennaRelay.cs
@@ -35,9 +35,6 @@
 {
 	public class AntennaRelay
 	{
-		public static bool requireLineOfSight;
-		public static double radiusRatio;
-
 		// We don't have a Bard, so we'll hide Kerbin here.
 		protected CelestialBody Kerbin;
 
@@ -150,9 +147,9 @@
 			if (
 				this.transmitDistance > this.maxTransmitDistance ||
 				(
-					requireLineOfSight &&
+					ARConfiguration.RequireLineOfSight &&
 					this.nearestRelay == null &&
-					!this.vessel.hasLineOfSightTo(this.Kerbin, out this._firstOccludingBody, radiusRatio)
+					!this.vessel.hasLineOfSightTo(this.Kerbin, out this._firstOccludingBody, ARConfiguration.RadiusRatio)
 				)
 			)
 			{
@@ -232,8 +229,8 @@
 				}
 
 				// Skip vessels to which we do not have line of sight.
-				if (requireLineOfSight &&
-					!this.vessel.hasLineOfSightTo(potentialVessel, out this._firstOccludingBody, radiusRatio))
+				if (ARConfiguration.RequireLineOfSight &&
+					!this.vessel.hasLineOfSightTo(potentialVessel, out this._firstOccludingBody, ARConfiguration.RadiusRatio))
 				{
 					Tools.PostDebugMessage(
 						this,
@@ -306,17 +303,6 @@
 			// we hope it is safe enough.
 			this.Kerbin = FlightGlobals.Bodies.FirstOrDefault(b => b.name == "Kerbin");
 		}
-
-		static AntennaRelay()
-		{
-			var config = KSP.IO.PluginConfiguration.CreateForType<AntennaRelay>();
-
-			config.load();
-
-			AntennaRelay.requireLineOfSight = config.GetValue<bool>("requireLineOfSight", false);
-
-			config.save();
-		}
 	}
 }
 

--- a/GameData/AntennaRange/AntennaRange.cfg
+++ b/GameData/AntennaRange/AntennaRange.cfg
@@ -127,7 +127,7 @@
 	!name = DELETE
 }
 
-@SUBCATEGORY[*]:HAS[#title[Data?Transmitter]]:FOR[AntennaRange:]NEEDS[FilterExtensions]
+@SUBCATEGORY[*]:HAS[#title[Data?Transmitter]]:FOR[AntennaRange]:NEEDS[FilterExtensions]
 {
 	FILTER
 	{

--- a/ModuleLimitedDataTransmitter.cs
+++ b/ModuleLimitedDataTransmitter.cs
@@ -54,10 +54,6 @@
 	 * */
 	public class ModuleLimitedDataTransmitter : ModuleDataTransmitter, IScienceDataTransmitter, IAntennaRelay
 	{
-		// If true, use a fixed power cost at the configured value and degrade data rates instead of increasing power
-		// requirements.
-		public static bool fixedPowerCost;
-
 		// Stores the packetResourceCost as defined in the .cfg file.
 		protected float _basepacketResourceCost;
 
@@ -303,7 +299,7 @@
 		// transmission fails (see CanTransmit).
 		protected void PreTransmit_SetPacketResourceCost()
 		{
-			if (fixedPowerCost || this.transmitDistance <= this.nominalRange)
+			if (ARConfiguration.FixedPowerCost || this.transmitDistance <= this.nominalRange)
 			{
 				base.packetResourceCost = this._basepacketResourceCost;
 			}
@@ -329,7 +325,7 @@
 		// distance.  packetSize maxes out at _basepacketSize * maxDataFactor.
 		protected void PreTransmit_SetPacketSize()
 		{
-			if (!fixedPowerCost && this.transmitDistance >= this.nominalRange)
+			if (!ARConfiguration.FixedPowerCost && this.transmitDistance >= this.nominalRange)
 			{
 				base.packetSize = this._basepacketSize;
 			}

--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -39,7 +39,7 @@
 // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
 // The form "{Major}.{Minor}.*" will automatically update the build and revision,
 // and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("1.6.*")]
+[assembly: AssemblyVersion("1.7.*")]
 // The following attributes are used to specify the signing key for the assembly,
 // if desired. See the Mono documentation for more information about signing.
 //[assembly: AssemblyDelaySign(false)]