Some Tools->Logging
Some Tools->Logging

--- a/API/VOIDCore.cs
+++ b/API/VOIDCore.cs
@@ -43,6 +43,8 @@
 		public abstract int ConfigVersion { get; }
 		public virtual bool configNeedsUpdate { get; set; }
 
+		public abstract string SceneKey { get; }
+
 		public abstract int WindowID { get; }
 		public abstract bool configDirty { get; set; }
 		public abstract bool powerAvailable	{ get; protected set; }
@@ -79,9 +81,9 @@
 
 		public abstract void SaveConfig();
 
-		public override void Save(KSP.IO.PluginConfiguration config)
+		public override void Save(KSP.IO.PluginConfiguration config, string sceneKey)
 		{
-			base.Save(config);
+			base.Save(config, sceneKey);
 		}
 	}
 

--- a/API/VOID_HUDModule.cs
+++ b/API/VOID_HUDModule.cs
@@ -161,9 +161,9 @@
 			}
 		}
 
-		public override void Save(KSP.IO.PluginConfiguration config)
-		{
-			base.Save(config);
+		public override void Save(KSP.IO.PluginConfiguration config, string sceneKey)
+		{
+			base.Save(config, sceneKey);
 
 			HUDWindow window;
 			for (int idx = 0; idx < this.Windows.Count; idx++)

--- a/API/VOID_Module.cs
+++ b/API/VOID_Module.cs
@@ -116,7 +116,7 @@
 			{
 				if (this.validModes == null)
 				{
-					Tools.PostDebugMessage(this, "validModes is null when checking inValidGame; fetching attribute.");
+					Logging.PostDebugMessage(this, "validModes is null when checking inValidGame; fetching attribute.");
 
 					object[] attributes = this.GetType().GetCustomAttributes(false);
 					object attr;
@@ -130,7 +130,7 @@
 
 							this.validModes = addonAttr.ValidModes;
 
-							Tools.PostDebugMessage("Found VOID_GameModesAttribute; validScenes set.");
+							Logging.PostDebugMessage("Found VOID_GameModesAttribute; validScenes set.");
 
 							break;
 						}
@@ -147,7 +147,7 @@
 							Game.Modes.SCIENCE_SANDBOX
 						};
 
-						Tools.PostDebugMessage("No VOID_GameModesAttribute found; validScenes defaulted to flight.");
+						Logging.PostDebugMessage("No VOID_GameModesAttribute found; validScenes defaulted to flight.");
 					}
 				}
 
@@ -161,7 +161,7 @@
 			{
 				if (this.validScenes == null)
 				{
-					Tools.PostDebugMessage(this, "validScenes is null when checking inValidScene; fetching attribute.");
+					Logging.PostDebugMessage(this, "validScenes is null when checking inValidScene; fetching attribute.");
 					object[] attributes = this.GetType().GetCustomAttributes(false);
 					object attr;
 					for (int idx = 0; idx < attributes.Length; idx++)
@@ -174,7 +174,7 @@
 
 							this.validScenes = addonAttr.ValidScenes;
 
-							Tools.PostDebugMessage("Found VOID_ScenesAttribute; validScenes set.");
+							Logging.PostDebugMessage("Found VOID_ScenesAttribute; validScenes set.");
 
 							break;
 						}
@@ -183,7 +183,7 @@
 					if (this.validScenes == null)
 					{
 						this.validScenes = new GameScenes[] { GameScenes.FLIGHT };
-						Tools.PostDebugMessage("No VOID_ScenesAttribute found; validScenes defaulted to flight.");
+						Logging.PostDebugMessage("No VOID_ScenesAttribute found; validScenes defaulted to flight.");
 					}
 				}
 
@@ -228,7 +228,7 @@
 				return;
 			}
 
-			Tools.PostDebugMessage (string.Format("Adding {0} to the draw queue.", this.GetType().Name));
+			Logging.PostDebugMessage (string.Format("Adding {0} to the draw queue.", this.GetType().Name));
 			RenderingManager.AddToPostDrawQueue (3, this.DrawGUI);
 		}
 
@@ -238,7 +238,7 @@
 			{
 				return;
 			}
-			Tools.PostDebugMessage (string.Format("Removing {0} from the draw queue.", this.GetType().Name));
+			Logging.PostDebugMessage (string.Format("Removing {0} from the draw queue.", this.GetType().Name));
 			RenderingManager.RemoveFromPostDrawQueue (3, this.DrawGUI);
 		}
 
@@ -326,7 +326,7 @@
 					);
 				}
 
-				Tools.PostDebugMessage(string.Format("{0}: Loading field {1}.", this.GetType().Name, fieldName));
+				Logging.PostDebugMessage(string.Format("{0}: Loading field {1}.", this.GetType().Name, fieldName));
 
 				object fieldValue;
 
@@ -365,11 +365,11 @@
 					(member as PropertyInfo).SetValue(this, fieldValue, null);
 				}
 
-				Tools.PostDebugMessage(string.Format("{0}: Loaded field {1}.", this.GetType().Name, fieldName));
-			}
-		}
-
-		public virtual void Save(KSP.IO.PluginConfiguration config)
+				Logging.PostDebugMessage(string.Format("{0}: Loaded field {1}.", this.GetType().Name, fieldName));
+			}
+		}
+
+		public virtual void Save(KSP.IO.PluginConfiguration config, string sceneKey)
 		{
 			MemberInfo[] members = this.GetType().GetMembers(
 				BindingFlags.NonPublic |
@@ -407,7 +407,7 @@
 					fieldName = string.Format(
 						"{0}_{1}_{2}",
 						this.GetType().Name,
-						Enum.GetName(typeof(GameScenes), HighLogic.LoadedScene),
+						sceneKey,
 						attr.Name
 					);
 				}
@@ -430,7 +430,7 @@
 
 				config.SetValue(fieldName, fieldValue);
 
-				Tools.PostDebugMessage(string.Format("{0}: Saved field {1}.", this.GetType().Name, fieldName));
+				Logging.PostDebugMessage(string.Format("{0}: Saved field {1}.", this.GetType().Name, fieldName));
 			}
 		}
 	}

--- a/VOIDCore_Editor.cs
+++ b/VOIDCore_Editor.cs
@@ -38,6 +38,15 @@
 	[VOID_Scenes(GameScenes.EDITOR)]
 	public class VOIDCore_Editor : VOIDCore_Generic<VOIDCore_Editor>
 	{
+		public override string SceneKey
+		{
+			get
+			{
+				return "EDITOR";
+			}
+		}
+
+
 		public override void FixedUpdate() {}
 	}
 }

--- a/VOIDCore_Flight.cs
+++ b/VOIDCore_Flight.cs
@@ -36,6 +36,15 @@
 	[VOID_Scenes(GameScenes.FLIGHT)]
 	public class VOIDCore_Flight : VOIDCore_Generic<VOIDCore_Flight>
 	{
+		public override string SceneKey
+		{
+			get
+			{
+				return "FLIGHT";
+			}
+		}
+
+
 		public override void DrawConfigurables()
 		{
 			if (HighLogic.LoadedSceneIsFlight)

--- a/VOIDCore_Generic.cs
+++ b/VOIDCore_Generic.cs
@@ -1130,14 +1130,14 @@
 
 			config.load();
 
-			this.Save(config);
+			this.Save(config, this.SceneKey);
 
 			IVOID_Module module;
 			for (int idx = 0; idx < this.modules.Count; idx++)
 			{
 				module = this.modules[idx];
 
-				module.Save(config);
+				module.Save(config, this.SceneKey);
 			}
 
 			config.save();

--- a/VOIDCore_SpaceCentre.cs
+++ b/VOIDCore_SpaceCentre.cs
@@ -32,6 +32,14 @@
 	[VOID_Scenes(GameScenes.SPACECENTER)]
 	public class VOIDCore_SpaceCentre : VOIDCore_Generic<VOIDCore_SpaceCentre>
 	{
+		public override string SceneKey
+		{
+			get
+			{
+				return "SPACECENTER";
+			}
+		}
+
 		public override void FixedUpdate() {}
 	}
 }

--- a/VOID_Orbital.cs
+++ b/VOID_Orbital.cs
@@ -123,11 +123,11 @@
 			this.precisionValues = new IntCollection (4, this._precisionValues);
 		}
 
-		public override void Save (KSP.IO.PluginConfiguration config)
+		public override void Save (KSP.IO.PluginConfiguration config, string sceneKey)
 		{
 			this._precisionValues.value = this.precisionValues.collection;
 
-			base.Save (config);
+			base.Save (config, sceneKey);
 		}
 	}
 }

--- a/VOID_SurfAtmo.cs
+++ b/VOID_SurfAtmo.cs
@@ -105,11 +105,11 @@
 			this.precisionValues = new IntCollection(4, this._precisionValues);
 		}
 
-		public override void Save(KSP.IO.PluginConfiguration config)
+		public override void Save(KSP.IO.PluginConfiguration config, string sceneKey)
 		{
 			this._precisionValues.value = this.precisionValues.collection;
 
-			base.Save(config);
+			base.Save(config, sceneKey);
 		}
 	}
 }