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);
+			}
+		}
+	}
+}
+
