diff --git a/Source/Core/Data/WADReader.cs b/Source/Core/Data/WADReader.cs
index e817c0213ca26756746f72c2f0c8964bccfd058c..b73b54f530e82f4132bb2d41c55f0d60f161760a 100644
--- a/Source/Core/Data/WADReader.cs
+++ b/Source/Core/Data/WADReader.cs
@@ -898,8 +898,7 @@ namespace CodeImp.DoomBuilder.Data
 
         //mxd
         internal override bool FileExists(string name) {
-            Lump l = file.FindLump(name);
-            return l != null;
+			return file.FindLumpIndex(name) != -1;
         }
 
 		#endregion
diff --git a/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs b/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs
index c80ae155f5a35dc486c45ed45b7debe0c02286f5..4e19600f532473481066812a33470909f322dc49 100644
--- a/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs
+++ b/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs
@@ -44,10 +44,9 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
             base.Parse(stream, sourcefilename);
 
             //already parsed this?
-            if (parsedLumps.IndexOf(sourcefilename) != -1) return false;
+            if (parsedLumps.Contains(sourcefilename)) return false;
             parsedLumps.Add(sourcefilename);
-            if (isinclude)
-               includes.Add(sourcefilename);
+			if (isinclude) includes.Add(sourcefilename);
 
             // Keep local data
             Stream localstream = datastream;
@@ -104,7 +103,9 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
                         string includeLump = StripTokenQuotes(ReadToken()).ToLowerInvariant();
 
                         if (!string.IsNullOrEmpty(includeLump)) {
-                            if (includeLump == "zcommon.acs" || includeLump == "common.acs")
+                            string includeName = Path.GetFileName(includeLump);
+
+                            if (includeName == "zcommon.acs" || includeName == "common.acs" || includes.Contains(includeName))
                                 continue;
                             
                             // Callback to parse this file
diff --git a/Source/Core/General/MapManager.cs b/Source/Core/General/MapManager.cs
index 7006695313a9dd9ad5380ae74923cb67a3fa6416..879a5459057e936e49a9cf4cea3d40b6fcec35e9 100644
--- a/Source/Core/General/MapManager.cs
+++ b/Source/Core/General/MapManager.cs
@@ -1719,7 +1719,6 @@ namespace CodeImp.DoomBuilder {
 					foreach(Thing t in General.Map.Map.Things) t.TranslateToUDMF();
 				}
 				General.Map.Map.UpdateCustomLinedefColors();
-				UpdateScriptNames(); //mxd
 
                 // Update interface
                 General.MainWindow.SetupInterface();
@@ -1728,6 +1727,7 @@ namespace CodeImp.DoomBuilder {
 
                 // Reload resources
                 ReloadResources();
+				UpdateScriptNames(); //mxd
 
                 // Done
                 General.MainWindow.DisplayReady();
diff --git a/Source/Core/IO/UniversalMapSetIO.cs b/Source/Core/IO/UniversalMapSetIO.cs
index 750894dfd746ac3574306ce18fdd265802508bab..223ab718d50fb8727ce9397a416b970d238cc96b 100644
--- a/Source/Core/IO/UniversalMapSetIO.cs
+++ b/Source/Core/IO/UniversalMapSetIO.cs
@@ -38,14 +38,16 @@ namespace CodeImp.DoomBuilder.IO
 
 		#region ================== Variables
 
-		private Configuration config;
+		//private Configuration config;
 		
 		#endregion
 		
 		#region ================== Constructor / Disposer
 
 		// Constructor
-		public UniversalMapSetIO(WAD wad, MapManager manager) : base(wad, manager)
+		public UniversalMapSetIO(WAD wad, MapManager manager) : base(wad, manager) { }
+
+		/*public UniversalMapSetIO(WAD wad, MapManager manager) : base(wad, manager)
 		{
 			if((manager != null) && (manager.Config != null))
 			{
@@ -81,6 +83,14 @@ namespace CodeImp.DoomBuilder.IO
 						// Add thing flags
 						foreach(KeyValuePair<string, string> flag in manager.Config.ThingFlags)
 							config.WriteSetting("managedfields.thing." + flag.Key, true);
+
+						//mxd. Add sector flags
+						foreach(KeyValuePair<string, string> flag in manager.Config.SectorFlags)
+							config.WriteSetting("managedfields.sector." + flag.Key, true);
+
+						//mxd. Add sidedef flags
+						foreach(KeyValuePair<string, string> flag in manager.Config.SidedefFlags)
+							config.WriteSetting("managedfields.sidedef." + flag.Key, true);
 						
 						// Done
 						udmfcfgreader.Dispose();
@@ -89,7 +99,7 @@ namespace CodeImp.DoomBuilder.IO
 					}
 				}
 			}
-		}
+		}*/
 
 		#endregion
 
diff --git a/Source/Core/Rendering/World3DShader.cs b/Source/Core/Rendering/World3DShader.cs
index cff9185c2d93673542b9ea5f3a00941977796910..d9139d210b6e8ef5d00e36410ea4d77ee928686e 100644
--- a/Source/Core/Rendering/World3DShader.cs
+++ b/Source/Core/Rendering/World3DShader.cs
@@ -104,15 +104,22 @@ namespace CodeImp.DoomBuilder.Rendering
 			}
 
 			// Initialize world vertex declaration
-            vertexElements = new VertexElement[]
-			{
-				new VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),
-				new VertexElement(0, 12, DeclarationType.Color, DeclarationMethod.Default, DeclarationUsage.Color, 0),
-				new VertexElement(0, 16, DeclarationType.Float2, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),
-				//mxd
-                new VertexElement(0, 24, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Normal, 0),
-                VertexElement.VertexDeclarationEnd
-			};
+			if (manager.Enabled){ //mxd
+				vertexElements = new VertexElement[] {
+					new VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),
+					new VertexElement(0, 12, DeclarationType.Color, DeclarationMethod.Default, DeclarationUsage.Color, 0),
+					new VertexElement(0, 16, DeclarationType.Float2, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),
+					new VertexElement(0, 24, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Normal, 0), //mxd
+					VertexElement.VertexDeclarationEnd
+				};
+			} else {
+				vertexElements = new VertexElement[] {
+					new VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0),
+					new VertexElement(0, 12, DeclarationType.Color, DeclarationMethod.Default, DeclarationUsage.Color, 0),
+					new VertexElement(0, 16, DeclarationType.Float2, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),
+					VertexElement.VertexDeclarationEnd
+				};
+			}
             vertexdecl = new VertexDeclaration(General.Map.Graphics.Device, vertexElements);
 
 			// We have no destructor
diff --git a/Source/Core/VisualModes/VisualMode.cs b/Source/Core/VisualModes/VisualMode.cs
index d128395acf76529c70dafd464e6a79ebc65fcdc7..209bcc481240ac8997ba13ec479ce83fa20b026d 100644
--- a/Source/Core/VisualModes/VisualMode.cs
+++ b/Source/Core/VisualModes/VisualMode.cs
@@ -1052,9 +1052,7 @@ namespace CodeImp.DoomBuilder.VisualModes
 		/// </summary>
 		protected virtual void FillBlockMap()
 		{
-			if(blockmap != null) blockmap.Dispose();
-			blockmap = new VisualBlockMap();
-			
+			blockmap.Clear();//mxd
 			blockmap.AddLinedefsSet(General.Map.Map.Linedefs);
 			blockmap.AddThingsSet(General.Map.Map.Things);
 			blockmap.AddSectorsSet(General.Map.Map.Sectors);
diff --git a/Source/Core/Windows/MainForm.cs b/Source/Core/Windows/MainForm.cs
index 5ba9e247edd061fe6a70d249fd36b9a85461f767..5b34747c8b39a10eecf33824edb102d3e6cde664 100644
--- a/Source/Core/Windows/MainForm.cs
+++ b/Source/Core/Windows/MainForm.cs
@@ -1446,6 +1446,7 @@ namespace CodeImp.DoomBuilder.Windows
         //mxd
         private void engineItem_Click(object sender, EventArgs e) {
             General.Map.ConfigSettings.CurrentEngineIndex = (int)(((ToolStripMenuItem)sender).Tag);
+			UpdateSkills();
         }
 		
 		// Event handler for testing at a specific skill
@@ -3126,8 +3127,11 @@ namespace CodeImp.DoomBuilder.Windows
 		//mxd
 		private void blinkTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
 			if(warningsCount > 0) {
-				if(!this.Disposing && blinkTimer != null)
-					this.Invoke(new CallBlink(blink));
+				if (!this.Disposing && blinkTimer != null) {
+					try {
+						this.Invoke(new CallBlink(blink));
+					} catch(ObjectDisposedException oe) { } //la-la-la. We don't care.
+				}
 			} else {
 				//get rid of timer
 				blinkTimer.Stop();