Index: /binary-improvements/7dtd-server-fixes/7dtd-server-fixes.csproj
===================================================================
--- /binary-improvements/7dtd-server-fixes/7dtd-server-fixes.csproj	(revision 141)
+++ /binary-improvements/7dtd-server-fixes/7dtd-server-fixes.csproj	(revision 142)
@@ -28,4 +28,17 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_Version|AnyCPU' ">
+    <DebugType>none</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CustomCommands>
+      <CustomCommands>
+        <Command type="AfterBuild" command="bash -c &quot;monodis --assembly ${TargetFile} | grep Version &gt; ${TargetDir}/${ProjectName}_version.txt&quot;" />
+      </CustomCommands>
+    </CustomCommands>
     <ConsolePause>false</ConsolePause>
   </PropertyGroup>
@@ -80,4 +93,7 @@
     <Compile Include="src\NetConnections\Servers\Web\MimeType.cs" />
     <Compile Include="src\CustomCommands\EnableRendering.cs" />
+    <Compile Include="src\PersistentData\PersistentContainer.cs" />
+    <Compile Include="src\PersistentData\KnownPlayers.cs" />
+    <Compile Include="src\StateManager.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
@@ -90,4 +106,5 @@
     <Folder Include="src\NetConnections\Servers\Telnet\" />
     <Folder Include="src\NetConnections\Servers\Web\" />
+    <Folder Include="src\PersistentData\" />
   </ItemGroup>
 </Project>
Index: /binary-improvements/7dtd-server-fixes/src/MapRendering/MapRenderBlockBuffer.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/MapRendering/MapRenderBlockBuffer.cs	(revision 141)
+++ /binary-improvements/7dtd-server-fixes/src/MapRendering/MapRenderBlockBuffer.cs	(revision 142)
@@ -37,6 +37,5 @@
 				Directory.CreateDirectory (folder);
 				if (!fileName.Equals (currentBlockMap)) {
-					if (currentBlockMap.Length > 0)
-						saveTextureToFile (currentBlockMap);
+					SaveBlock();
 					loadTextureFromFile (fileName);
 				}
Index: /binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/Telnet.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/Telnet.cs	(revision 141)
+++ /binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/Telnet.cs	(revision 142)
@@ -113,5 +113,5 @@
 			string res = "";
 			for (int i = 0; i < line.Length; i++) {
-				if (line [i] >= ' ' && line [i] != '\'' && line [i] <= '~') {
+				if (line [i] >= ' ' && line [i] != '\'') {
 					res += line [i];
 				}
Index: /binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs	(revision 141)
+++ /binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs	(revision 142)
@@ -2,4 +2,5 @@
 using System.Net;
 using System.Net.Sockets;
+using System.Text;
 
 namespace AllocsFixes.NetConnections.Servers.Telnet
@@ -11,5 +12,6 @@
 		private TcpClient client;
 		private NetworkStream stream;
-		private string lineBuffer = string.Empty;
+		private int lineBufferLength = 0;
+		private byte[] lineBuffer = new byte[200];
 		private EndPoint endpoint;
 
@@ -38,7 +40,6 @@
 			try {
 				if (!IsClosed () && stream.CanWrite) {
-					for (int i = 0; i < s.Length; i++) {
-						WriteByte ((byte)s [i]);
-					}
+					byte[] utfData = Encoding.UTF8.GetBytes (s);
+					stream.Write(utfData, 0, utfData.Length);
 					WriteByte (13);
 					WriteByte (10);
@@ -79,8 +80,9 @@
 				int b = stream.ReadByte ();
 				if (b == '\r' || b == '\n') {
-					if (lineBuffer.Length > 0)
+					if (lineBufferLength > 0)
 						return true;
-				} else {
-					lineBuffer += (char)b;
+				} else if (b >= 0) {
+					lineBuffer[lineBufferLength] = (byte)b;
+					lineBufferLength++;
 				}
 			}
@@ -90,6 +92,6 @@
 		public string GetLine ()
 		{
-			string res = lineBuffer;
-			lineBuffer = string.Empty;
+			string res = Encoding.UTF8.GetString(lineBuffer, 0, lineBufferLength);;
+			lineBufferLength = 0;
 			return res;
 		}
Index: /binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Web/Web.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Web/Web.cs	(revision 141)
+++ /binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Web/Web.cs	(revision 142)
@@ -113,5 +113,5 @@
 		{
 			try {
-				Log.Out ("NOT IMPLEMENTED: Web.WriteToClient");
+				//Log.Out ("NOT IMPLEMENTED: Web.WriteToClient");
 			} catch (Exception e) {
 				Log.Out ("Error in Web.WriteToClient: " + e);
@@ -122,5 +122,5 @@
 		{
 			try {
-				Log.Out ("NOT IMPLEMENTED: Web.WriteToClient_Single");
+				//Log.Out ("NOT IMPLEMENTED: Web.WriteToClient_Single");
 			} catch (Exception e) {
 				Log.Out ("Error in Web.WriteToClient_Single: " + e);
Index: /binary-improvements/7dtd-server-fixes/src/PersistentData/KnownPlayers.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/PersistentData/KnownPlayers.cs	(revision 142)
+++ /binary-improvements/7dtd-server-fixes/src/PersistentData/KnownPlayers.cs	(revision 142)
@@ -0,0 +1,28 @@
+using System;
+using System.Runtime.Serialization;
+
+namespace AllocsFixes.PersistentData
+{
+	[Serializable()]
+	public class KnownPlayers : ISerializable
+	{
+		private int entityId;
+		private string name;
+
+		public KnownPlayers ()
+		{
+		}
+
+		public KnownPlayers (SerializationInfo info, StreamingContext ctxt)
+		{
+			this.entityId = info.GetInt32("entityId");
+			this.name = info.GetString("name");
+		}
+
+		public void GetObjectData (SerializationInfo info, StreamingContext context)
+		{
+			info.AddValue("name", this.name);
+		}
+}
+}
+
Index: /binary-improvements/7dtd-server-fixes/src/PersistentData/PersistentContainer.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/PersistentData/PersistentContainer.cs	(revision 142)
+++ /binary-improvements/7dtd-server-fixes/src/PersistentData/PersistentContainer.cs	(revision 142)
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters.Binary;
+
+namespace AllocsFixes.PersistentData
+{
+	[Serializable()]
+	public class PersistentContainer : ISerializable
+	{
+		public Dictionary<string, KnownPlayers> players = new Dictionary<string, KnownPlayers> ();
+		private static PersistentContainer instance;
+
+		public static PersistentContainer Instance {
+			get {
+				if (instance == null) {
+					instance = new PersistentContainer ();
+				}
+				return instance;
+			}
+		}
+
+		private PersistentContainer ()
+		{
+			Log.Out ("new PersistentContainer()");
+		}
+
+		public void Save ()
+		{
+			Stream stream = File.Open (StaticDirectories.GetSaveGameDir () + "/AllocsPeristentData.bin", FileMode.Create);
+			BinaryFormatter bFormatter = new BinaryFormatter ();
+			bFormatter.Serialize (stream, this);
+			stream.Close ();
+		}
+
+		public static bool Load ()
+		{
+			if (File.Exists (StaticDirectories.GetSaveGameDir () + "/AllocsPeristentData.bin")) {
+				PersistentContainer obj;
+				Stream stream = File.Open (StaticDirectories.GetSaveGameDir () + "/AllocsPeristentData.bin", FileMode.Open);
+				BinaryFormatter bFormatter = new BinaryFormatter ();
+				obj = (PersistentContainer)bFormatter.Deserialize (stream);
+				stream.Close ();
+				instance = obj;
+				return true;
+			} else
+				return false;
+		}
+
+		public PersistentContainer (SerializationInfo info, StreamingContext ctxt)
+		{
+			this.players = (Dictionary<string, KnownPlayers>)info.GetValue ("players", typeof(Dictionary<string, KnownPlayers>));
+		}
+
+		public void GetObjectData (SerializationInfo info, StreamingContext context)
+		{
+			info.AddValue ("players", this.players);
+		}
+
+	}
+}
+
Index: /binary-improvements/7dtd-server-fixes/src/StateManager.cs
===================================================================
--- /binary-improvements/7dtd-server-fixes/src/StateManager.cs	(revision 142)
+++ /binary-improvements/7dtd-server-fixes/src/StateManager.cs	(revision 142)
@@ -0,0 +1,28 @@
+using System;
+
+namespace AllocsFixes
+{
+	public class StateManager
+	{
+		public static void Awake (GameManager manager)
+		{
+			try {
+				CommandExtensions.InitCommandExtensions (manager);
+				PersistentData.PersistentContainer.Load ();
+				PersistentData.PersistentContainer.Instance.players.Add("123", new AllocsFixes.PersistentData.KnownPlayers());
+			} catch (Exception e) {
+				Log.Out ("Error in StateManager.Awake: " + e);
+			}
+		}
+
+		public static void Shutdown (GameManager manager)
+		{
+			try {
+				PersistentData.PersistentContainer.Instance.Save ();
+			} catch (Exception e) {
+				Log.Out ("Error in StateManager.Shutdown: " + e);
+			}
+		}
+	}
+}
+
Index: /binary-improvements/assembly-patcher/Assembly-Patcher.csproj
===================================================================
--- /binary-improvements/assembly-patcher/Assembly-Patcher.csproj	(revision 141)
+++ /binary-improvements/assembly-patcher/Assembly-Patcher.csproj	(revision 142)
@@ -31,4 +31,11 @@
     <Externalconsole>true</Externalconsole>
   </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_Version|AnyCPU' ">
+    <DebugType>none</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\bin\Release</OutputPath>
+    <WarningLevel>4</WarningLevel>
+    <Externalconsole>true</Externalconsole>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
Index: /binary-improvements/assembly-patcher/Main.cs
===================================================================
--- /binary-improvements/assembly-patcher/Main.cs	(revision 141)
+++ /binary-improvements/assembly-patcher/Main.cs	(revision 142)
@@ -50,5 +50,6 @@
 			TypeDefinition type = module.GetType ("GameManager");
 			addHook (type, "SavePlayerData", true, 2, true, typeof(AllocsFixes.PlayerDataStuff).GetMethod ("GM_SavePlayerData"));
-			addHook (type, "Awake", true, 0, true, typeof(AllocsFixes.CommandExtensions).GetMethod ("InitCommandExtensions"));
+			addHook (type, "Awake", true, 0, true, typeof(AllocsFixes.StateManager).GetMethod ("Awake"));
+			addHook (type, "Shutdown", true, 0, false, typeof(AllocsFixes.StateManager).GetMethod ("Shutdown"));
 		}
 
Index: /binary-improvements/bin/Release/7dtd-server-fixes_version.txt
===================================================================
--- /binary-improvements/bin/Release/7dtd-server-fixes_version.txt	(revision 142)
+++ /binary-improvements/bin/Release/7dtd-server-fixes_version.txt	(revision 142)
@@ -0,0 +1,1 @@
+Version:       0.91.5354.28918
Index: /binary-improvements/server-fixes.sln
===================================================================
--- /binary-improvements/server-fixes.sln	(revision 141)
+++ /binary-improvements/server-fixes.sln	(revision 142)
@@ -12,8 +12,11 @@
 		Debug|x86 = Debug|x86
 		Release|x86 = Release|x86
+		Release_Version|Any CPU = Release_Version|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{81DA7F87-1A66-4920-AADA-6EAF1971F8D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{81DA7F87-1A66-4920-AADA-6EAF1971F8D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{81DA7F87-1A66-4920-AADA-6EAF1971F8D0}.Release_Version|Any CPU.ActiveCfg = Release_Version|Any CPU
+		{81DA7F87-1A66-4920-AADA-6EAF1971F8D0}.Release_Version|Any CPU.Build.0 = Release_Version|Any CPU
 		{81DA7F87-1A66-4920-AADA-6EAF1971F8D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{81DA7F87-1A66-4920-AADA-6EAF1971F8D0}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -22,4 +25,6 @@
 		{FFDBEC4C-E28E-4BF5-A271-33D9368F7F6D}.Debug|x86.ActiveCfg = Debug|x86
 		{FFDBEC4C-E28E-4BF5-A271-33D9368F7F6D}.Debug|x86.Build.0 = Debug|x86
+		{FFDBEC4C-E28E-4BF5-A271-33D9368F7F6D}.Release_Version|Any CPU.ActiveCfg = Release_Version|Any CPU
+		{FFDBEC4C-E28E-4BF5-A271-33D9368F7F6D}.Release_Version|Any CPU.Build.0 = Release_Version|Any CPU
 		{FFDBEC4C-E28E-4BF5-A271-33D9368F7F6D}.Release|Any CPU.ActiveCfg = Release|x86
 		{FFDBEC4C-E28E-4BF5-A271-33D9368F7F6D}.Release|Any CPU.Build.0 = Release|x86
Index: /binary-improvements/server-fixes.userprefs
===================================================================
--- /binary-improvements/server-fixes.userprefs	(revision 141)
+++ /binary-improvements/server-fixes.userprefs	(revision 142)
@@ -1,13 +1,17 @@
 ﻿<Properties>
-  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release" />
-  <MonoDevelop.Ide.Workbench ActiveDocument="7dtd-server-fixes/src/NetConnections/Servers/Web/Web.cs">
+  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release_Version" />
+  <MonoDevelop.Ide.Workbench ActiveDocument="assembly-patcher/Main.cs">
     <Files>
-      <File FileName="assembly-patcher/Main.cs" Line="73" Column="85" />
-      <File FileName="7dtd-server-fixes/src/NetConnections/NetTelnetServer.cs" Line="28" Column="27" />
+      <File FileName="assembly-patcher/Main.cs" Line="21" Column="4" />
+      <File FileName="7dtd-server-fixes/src/NetConnections/NetTelnetServer.cs" Line="28" Column="1" />
       <File FileName="7dtd-server-fixes/src/NetConnections/IServer.cs" Line="7" Column="21" />
-      <File FileName="7dtd-server-fixes/src/NetConnections/Servers/Telnet/Telnet.cs" Line="31" Column="1" />
-      <File FileName="7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs" Line="5" Column="52" />
-      <File FileName="7dtd-server-fixes/src/MapRendering/MapRendering.cs" Line="75" Column="18" />
-      <File FileName="7dtd-server-fixes/src/NetConnections/Servers/Web/Web.cs" Line="53" Column="1" />
+      <File FileName="7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs" Line="95" Column="1" />
+      <File FileName="7dtd-server-fixes/src/MapRendering/MapRendering.cs" Line="21" Column="1" />
+      <File FileName="7dtd-server-fixes/src/MapRendering/MapRenderBlockBuffer.cs" Line="40" Column="1" />
+      <File FileName="7dtd-server-fixes/src/NetConnections/Servers/Web/Web.cs" Line="77" Column="59" />
+      <File FileName="7dtd-server-fixes/src/NetConnections/Servers/Web/StaticHandler.cs" Line="54" Column="1" />
+      <File FileName="7dtd-server-fixes/src/PersistentData/PersistentContainer.cs" Line="45" Column="19" />
+      <File FileName="7dtd-server-fixes/src/PersistentData/KnownPlayers.cs" Line="20" Column="6" />
+      <File FileName="7dtd-server-fixes/src/StateManager.cs" Line="28" Column="1" />
     </Files>
     <Pads>
