Index: binary-improvements/MapRendering/API.cs
===================================================================
--- binary-improvements/MapRendering/API.cs	(revision 373)
+++ binary-improvements/MapRendering/API.cs	(revision 420)
@@ -9,5 +9,4 @@
 			ModEvents.GameStartDone.RegisterHandler (GameStartDone);
 			ModEvents.GameShutdown.RegisterHandler (GameShutdown);
-			ModEvents.CalcChunkColorsDone.RegisterHandler (CalcChunkColorsDone);
 		}
 
@@ -28,9 +27,4 @@
 		private void GameShutdown () {
 			webInstance?.Shutdown ();
-			MapRendering.MapRendering.Shutdown ();
-		}
-
-		private void CalcChunkColorsDone (Chunk _chunk) {
-			MapRendering.MapRendering.RenderSingleChunk (_chunk);
 		}
 	}
Index: binary-improvements/MapRendering/Commands/EnableOpenIDDebug.cs
===================================================================
--- binary-improvements/MapRendering/Commands/EnableOpenIDDebug.cs	(revision 373)
+++ 	(revision )
@@ -1,25 +1,0 @@
-using System;
-using System.Collections.Generic;
-using AllocsFixes.NetConnections.Servers.Web;
-
-namespace AllocsFixes.CustomCommands {
-	public class EnableOpenIDDebug : ConsoleCmdAbstract {
-		public override string GetDescription () {
-			return "enable/disable OpenID debugging";
-		}
-
-		public override string[] GetCommands () {
-			return new[] {"openiddebug"};
-		}
-
-		public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
-			if (_params.Count != 1) {
-				SdtdConsole.Instance.Output ("Current state: " + OpenID.debugOpenId);
-				return;
-			}
-
-			OpenID.debugOpenId = _params [0].Equals ("1");
-			SdtdConsole.Instance.Output ("Set OpenID debugging to " + _params [0].Equals ("1"));
-		}
-	}
-}
Index: binary-improvements/MapRendering/Commands/EnableRendering.cs
===================================================================
--- binary-improvements/MapRendering/Commands/EnableRendering.cs	(revision 373)
+++ 	(revision )
@@ -1,24 +1,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace AllocsFixes.CustomCommands {
-	public class EnableRendering : ConsoleCmdAbstract {
-		public override string GetDescription () {
-			return "enable/disable live map rendering";
-		}
-
-		public override string[] GetCommands () {
-			return new[] {"enablerendering"};
-		}
-
-		public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
-			if (_params.Count != 1) {
-				SdtdConsole.Instance.Output ("Current state: " + MapRendering.MapRendering.renderingEnabled);
-				return;
-			}
-
-			MapRendering.MapRendering.renderingEnabled = _params [0].Equals ("1");
-			SdtdConsole.Instance.Output ("Set live map rendering to " + _params [0].Equals ("1"));
-		}
-	}
-}
Index: binary-improvements/MapRendering/Commands/ReloadWebPermissions.cs
===================================================================
--- binary-improvements/MapRendering/Commands/ReloadWebPermissions.cs	(revision 373)
+++ binary-improvements/MapRendering/Commands/ReloadWebPermissions.cs	(revision 420)
@@ -5,10 +5,10 @@
 namespace AllocsFixes.CustomCommands {
 	public class ReloadWebPermissions : ConsoleCmdAbstract {
-		public override string GetDescription () {
+		protected override string getDescription () {
 			return "force reload of web permissions file";
 		}
 
-		public override string[] GetCommands () {
-			return new[] {"reloadwebpermissions"};
+		protected override string[] getCommands () {
+			return new[] {"reloadwebpermissions_legacy"};
 		}
 
Index: binary-improvements/MapRendering/Commands/RenderMap.cs
===================================================================
--- binary-improvements/MapRendering/Commands/RenderMap.cs	(revision 373)
+++ 	(revision )
@@ -1,20 +1,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace AllocsFixes.CustomCommands {
-	public class RenderMap : ConsoleCmdAbstract {
-		public override string GetDescription () {
-			return "render the current map to a file";
-		}
-
-		public override string[] GetCommands () {
-			return new[] {"rendermap"};
-		}
-
-		public override void Execute (List<string> _params, CommandSenderInfo _senderInfo) {
-			MapRendering.MapRendering.Instance.RenderFullMap ();
-
-			SdtdConsole.Instance.Output ("Render map done");
-		}
-	}
-}
Index: binary-improvements/MapRendering/Commands/WebPermissionsCmd.cs
===================================================================
--- binary-improvements/MapRendering/Commands/WebPermissionsCmd.cs	(revision 373)
+++ binary-improvements/MapRendering/Commands/WebPermissionsCmd.cs	(revision 420)
@@ -4,19 +4,19 @@
 namespace AllocsFixes.CustomCommands {
 	public class WebPermissionsCmd : ConsoleCmdAbstract {
-		public override string[] GetCommands () {
-			return new[] {"webpermission"};
+		protected override string[] getCommands () {
+			return new[] {"webpermission_legacy"};
 		}
 
-		public override string GetDescription () {
+		protected override string getDescription () {
 			return "Manage web permission levels";
 		}
 
-		public override string GetHelp () {
+		protected override string getHelp () {
 			return "Set/get permission levels required to access a given web functionality. Default\n" +
 			       "level required for functions that are not explicitly specified is 0.\n" +
 			       "Usage:\n" +
-			       "   webpermission add <webfunction> <level>\n" +
-			       "   webpermission remove <webfunction>\n" +
-			       "   webpermission list";
+			       "   webpermission_legacy add <webfunction> <level>\n" +
+			       "   webpermission_legacy remove <webfunction>\n" +
+			       "   webpermission_legacy list";
 		}
 
Index: binary-improvements/MapRendering/Commands/WebTokens.cs
===================================================================
--- binary-improvements/MapRendering/Commands/WebTokens.cs	(revision 373)
+++ binary-improvements/MapRendering/Commands/WebTokens.cs	(revision 420)
@@ -7,18 +7,18 @@
 		private static readonly Regex validNameTokenMatcher = new Regex (@"^\w+$");
 
-		public override string[] GetCommands () {
-			return new[] {"webtokens"};
+		protected override string[] getCommands () {
+			return new[] {"webtokens_legacy"};
 		}
 
-		public override string GetDescription () {
+		protected override string getDescription () {
 			return "Manage web tokens";
 		}
 
-		public override string GetHelp () {
+		protected override string getHelp () {
 			return "Set/get webtoken permission levels. A level of 0 is maximum permission.\n" +
 			       "Usage:\n" +
-			       "   webtokens add <username> <usertoken> <level>\n" +
-			       "   webtokens remove <username>\n" +
-			       "   webtokens list";
+			       "   webtokens_legacy add <username> <usertoken> <level>\n" +
+			       "   webtokens_legacy remove <username>\n" +
+			       "   webtokens_legacy list";
 		}
 
Index: binary-improvements/MapRendering/Commands/webstat.cs
===================================================================
--- binary-improvements/MapRendering/Commands/webstat.cs	(revision 373)
+++ binary-improvements/MapRendering/Commands/webstat.cs	(revision 420)
@@ -5,10 +5,10 @@
 namespace AllocsFixes.CustomCommands {
 	public class webstat : ConsoleCmdAbstract {
-		public override string GetDescription () {
+		protected override string getDescription () {
 			return "DEBUG PURPOSES ONLY";
 		}
 
-		public override string[] GetCommands () {
-			return new[] {"webstat"};
+		protected override string[] getCommands () {
+			return new[] {"webstat_legacy"};
 		}
 
Index: binary-improvements/MapRendering/Web/API/ExecuteConsoleCommand.cs
===================================================================
--- binary-improvements/MapRendering/Web/API/ExecuteConsoleCommand.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/API/ExecuteConsoleCommand.cs	(revision 420)
@@ -31,5 +31,5 @@
 			}
 
-			int commandPermissionLevel = GameManager.Instance.adminTools.GetCommandPermissionLevel (command.GetCommands ());
+			int commandPermissionLevel = GameManager.Instance.adminTools.Commands.GetCommandPermissionLevel (command.GetCommands ());
 
 			if (_permissionLevel > commandPermissionLevel) {
Index: binary-improvements/MapRendering/Web/API/GetAllowedCommands.cs
===================================================================
--- binary-improvements/MapRendering/Web/API/GetAllowedCommands.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/API/GetAllowedCommands.cs	(revision 420)
@@ -9,5 +9,5 @@
 			JSONArray entries = new JSONArray ();
 			foreach (IConsoleCommand cc in SdtdConsole.Instance.GetCommands ()) {
-				int commandPermissionLevel = GameManager.Instance.adminTools.GetCommandPermissionLevel (cc.GetCommands ());
+				int commandPermissionLevel = GameManager.Instance.adminTools.Commands.GetCommandPermissionLevel (cc.GetCommands ());
 				if (_permissionLevel <= commandPermissionLevel) {
 					string cmd = string.Empty;
Index: binary-improvements/MapRendering/Web/API/GetLandClaims.cs
===================================================================
--- binary-improvements/MapRendering/Web/API/GetLandClaims.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/API/GetLandClaims.cs	(revision 420)
@@ -23,5 +23,5 @@
 
 			JSONObject result = new JSONObject ();
-			result.Add ("claimsize", new JSONNumber (GamePrefs.GetInt (EnumUtils.Parse<EnumGamePrefs> ("LandClaimSize"))));
+			result.Add ("claimsize", new JSONNumber (GamePrefs.GetInt (EnumUtils.Parse<EnumGamePrefs> (nameof(EnumGamePrefs.LandClaimSize)))));
 
 			JSONArray claimOwners = new JSONArray ();
Index: binary-improvements/MapRendering/Web/API/GetPlayerList.cs
===================================================================
--- binary-improvements/MapRendering/Web/API/GetPlayerList.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/API/GetPlayerList.cs	(revision 420)
@@ -68,5 +68,5 @@
 					pJson.Add ("ping", new JSONNumber (p.IsOnline ? p.ClientInfo.ping : -1));
 
-					JSONBoolean banned = admTools != null ? new JSONBoolean (admTools.IsBanned (kvp.Key, out _, out _)) : new JSONBoolean (false);
+					JSONBoolean banned = admTools != null ? new JSONBoolean (admTools.Blacklist.IsBanned (kvp.Key, out _, out _)) : new JSONBoolean (false);
 
 					pJson.Add ("banned", banned);
Index: binary-improvements/MapRendering/Web/API/GetPlayersLocation.cs
===================================================================
--- binary-improvements/MapRendering/Web/API/GetPlayersLocation.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/API/GetPlayersLocation.cs	(revision 420)
@@ -24,5 +24,5 @@
 			foreach (KeyValuePair<PlatformUserIdentifierAbs, Player> kvp in playersList.Dict) {
 				if (admTools != null) {
-					if (admTools.IsBanned (kvp.Key, out _, out _)) {
+					if (admTools.Blacklist.IsBanned (kvp.Key, out _, out _)) {
 						continue;
 					}
Index: binary-improvements/MapRendering/Web/Handlers/ItemIconHandler.cs
===================================================================
--- binary-improvements/MapRendering/Web/Handlers/ItemIconHandler.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/Handlers/ItemIconHandler.cs	(revision 420)
@@ -89,5 +89,5 @@
 						loadIconsFromFolder (modIconsPath, tintedIcons);
 					} catch (Exception e) {
-						Log.Error ("Failed loading icons from mod " + mod.ModInfo.Name.Value);
+						Log.Error ("Failed loading icons from mod " + mod.Name);
 						Log.Exception (e);
 					}
Index: binary-improvements/MapRendering/Web/Handlers/StaticHandler.cs
===================================================================
--- binary-improvements/MapRendering/Web/Handlers/StaticHandler.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/Handlers/StaticHandler.cs	(revision 420)
@@ -1,5 +1,5 @@
 using System.IO;
 using System.Net;
-using AllocsFixes.FileCache;
+using Webserver.FileCache;
 
 namespace AllocsFixes.NetConnections.Servers.Web.Handlers {
Index: binary-improvements/MapRendering/Web/OpenID.cs
===================================================================
--- binary-improvements/MapRendering/Web/OpenID.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/OpenID.cs	(revision 420)
@@ -26,13 +26,7 @@
 
 		private const bool verboseSsl = false;
-		public static bool debugOpenId;
+		private static bool debugOpenId => Webserver.OpenID.debugOpenId;
 
 		static OpenID () {
-			for (int i = 0; i < Environment.GetCommandLineArgs ().Length; i++) {
-				if (Environment.GetCommandLineArgs () [i].EqualsCaseInsensitive ("-debugopenid")) {
-					debugOpenId = true;
-				}
-			}
-
 			ServicePointManager.ServerCertificateValidationCallback = (_srvPoint, _certificate, _chain, _errors) => {
 				if (_errors == SslPolicyErrors.None) {
Index: binary-improvements/MapRendering/Web/Web.cs
===================================================================
--- binary-improvements/MapRendering/Web/Web.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/Web.cs	(revision 420)
@@ -7,8 +7,8 @@
 using System.Text;
 using System.Threading;
-using AllocsFixes.FileCache;
 using AllocsFixes.NetConnections.Servers.Web.Handlers;
 using AllocsFixes.NetConnections.Servers.Web.SSE;
 using UnityEngine;
+using Webserver.FileCache;
 
 namespace AllocsFixes.NetConnections.Servers.Web {
@@ -25,13 +25,13 @@
 		public Web () {
 			try {
-				int webPort = GamePrefs.GetInt (EnumUtils.Parse<EnumGamePrefs> ("ControlPanelPort"));
+				int webPort = GamePrefs.GetInt (EnumUtils.Parse<EnumGamePrefs> (nameof(EnumGamePrefs.WebDashboardPort)));
 				if (webPort < 1 || webPort > 65533) {
-					Log.Out ("Webserver not started (ControlPanelPort not within 1-65533)");
+					Log.Out ("Webserver not started (WebDashboardPort not within 1-65533)");
 					return;
 				}
 
 				if (!Directory.Exists (Path.GetDirectoryName (Assembly.GetExecutingAssembly ().Location) +
-				                       "/webserver")) {
-					Log.Out ("Webserver not started (folder \"webserver\" not found in WebInterface mod folder)");
+				                       "/webserver_legacy")) {
+					Log.Out ("Webserver not started (folder \"webserver_legacy\" not found in WebInterface mod folder)");
 					return;
 				}
@@ -40,5 +40,5 @@
 				bool useStaticCache = false;
 
-				string dataFolder = Path.GetDirectoryName (Assembly.GetExecutingAssembly ().Location) + "/webserver";
+				string dataFolder = Path.GetDirectoryName (Assembly.GetExecutingAssembly ().Location) + "/webserver_legacy";
 
 				if (!HttpListener.IsSupported) {
@@ -60,5 +60,5 @@
 				RegisterPathHandler ("/map/", new StaticHandler (
 						GameIO.GetSaveGameDir () + "/map",
-						MapRendering.MapRendering.GetTileCache (),
+						MapRendering.MapRenderer.GetTileCache (),
 						false,
 						"web.map")
@@ -248,5 +248,5 @@
 				if (con != null) {
 					_con = con;
-					return GameManager.Instance.adminTools.GetUserPermissionLevel (_con.UserId);
+					return GameManager.Instance.adminTools.Users.GetUserPermissionLevel (_con.UserId);
 				}
 			}
@@ -270,5 +270,5 @@
 						WebConnection con = connectionHandler.LogIn (id, _req.RemoteEndPoint.Address);
 						_con = con;
-						int level = GameManager.Instance.adminTools.GetUserPermissionLevel (con.UserId);
+						int level = GameManager.Instance.adminTools.Users.GetUserPermissionLevel (con.UserId);
 						Log.Out ("Steam OpenID login from {0} with ID {1}, permission level {2}",
 							remoteEndpointString, con.UserId, level);
Index: binary-improvements/MapRendering/Web/WebPermissions.cs
===================================================================
--- binary-improvements/MapRendering/Web/WebPermissions.cs	(revision 373)
+++ binary-improvements/MapRendering/Web/WebPermissions.cs	(revision 420)
@@ -171,5 +171,5 @@
 
 		private string GetFilePath () {
-			return GamePrefs.GetString (EnumUtils.Parse<EnumGamePrefs> ("SaveGameFolder"));
+			return GamePrefs.GetString (EnumUtils.Parse<EnumGamePrefs> (nameof(EnumGamePrefs.SaveGameFolder)));
 		}
 
Index: binary-improvements/MapRendering/WebAndMapRendering.csproj
===================================================================
--- binary-improvements/MapRendering/WebAndMapRendering.csproj	(revision 373)
+++ binary-improvements/MapRendering/WebAndMapRendering.csproj	(revision 420)
@@ -9,5 +9,5 @@
     <OutputType>Library</OutputType>
     <RootNamespace>MapRendering</RootNamespace>
-    <AssemblyName>MapRendering</AssemblyName>
+    <AssemblyName>AllocsWeb</AssemblyName>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
   </PropertyGroup>
@@ -39,6 +39,14 @@
       <Private>False</Private>
     </Reference>
+    <Reference Include="com.rlabrecque.steamworks.net, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
+      <HintPath>..\7dtd-binaries\com.rlabrecque.steamworks.net.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
     <Reference Include="LogLibrary">
       <HintPath>..\7dtd-binaries\LogLibrary.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="MapRendering, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
+      <HintPath>..\7dtd-binaries\MapRendering.dll</HintPath>
       <Private>False</Private>
     </Reference>
@@ -75,12 +83,11 @@
       <Private>False</Private>
     </Reference>
+    <Reference Include="WebServer, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
+      <HintPath>..\7dtd-binaries\WebServer.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="AssemblyInfo.cs" />
-    <Compile Include="MapRendering\MapRendering.cs" />
-    <Compile Include="MapRendering\MapRenderBlockBuffer.cs" />
-    <Compile Include="MapRendering\Constants.cs" />
-    <Compile Include="Commands\RenderMap.cs" />
-    <Compile Include="Commands\EnableRendering.cs" />
     <Compile Include="API.cs" />
     <Compile Include="Web\API\GetAnimalsLocation.cs" />
@@ -121,5 +128,4 @@
     <Compile Include="Web\WebCommandResult.cs" />
     <Compile Include="Web\API\GetAllowedCommands.cs" />
-    <Compile Include="Commands\EnableOpenIDDebug.cs" />
     <Compile Include="Web\API\GetPlayerInventories.cs" />
   </ItemGroup>
