Index: binary-improvements/7dtd-server-fixes/src/NetConnections/ConsoleOutputSeparator.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/NetConnections/ConsoleOutputSeparator.cs	(revision 213)
+++ binary-improvements/7dtd-server-fixes/src/NetConnections/ConsoleOutputSeparator.cs	(revision 224)
@@ -22,7 +22,8 @@
 		private static List<NetCommand> netCommandQueue = new List<NetCommand> ();
 		private static bool isCurrentCommandFromClient = false;
+		private static int issuerOfCurrentClientCommand = -1;
 		private static IConnection issuerOfCurrentCommand;
 
-		public static void C_ExecuteCmdFromClient (ConsoleSdtd console, NetworkPlayer _networkPlayer, string _playerName, string _playerID, string _command)
+		public static void C_ExecuteCmdFromClient (ConsoleSdtd console, int _entityId, string _playerName, string _playerID, string _command)
 		{
 			Log.Out ("Executed command \"" + _command + "\" from player \"" + _playerName + "\"");
@@ -30,6 +31,22 @@
 			lock (netCommandQueue) {
 				isCurrentCommandFromClient = true;
-				console.issuerOfCurrentClientCommand = _networkPlayer;
-				console.ExecuteClientCmdInternal (_playerName, _playerID, _command);
+				issuerOfCurrentClientCommand = _entityId;
+
+				string[] array = _command.Split (' ');
+				if (array.Length == 0) {
+					C_SendResult (console, "*** ERROR: empty command '" + _command + "'");
+				} else {
+					ConsoleCommand cmd = console.getCommand (_command);
+					if (cmd != null) {
+						string[] array2 = new string[array.Length - 1];
+						for (int i = 1; i < array.Length; i++) {
+							array2 [i - 1] = array [i];
+						}
+						cmd.ExecuteRemote (_playerID, array2);
+					} else {
+						C_SendResult (console, "*** ERROR: unknown command '" + array [0] + "'");
+					}
+				}
+
 				isCurrentCommandFromClient = false;
 			}
@@ -40,10 +57,5 @@
 		{
 			if (isCurrentCommandFromClient) {
-				console.gameManager.GetRPCNetworkView ().RPC ("RPC_Console", console.issuerOfCurrentClientCommand, new object[]
-			{
-				_line,
-				false
-			}
-				);
+				CommonMappingFunctions.GetConnectionManager ().SendPackage (new NetPackage_ConsoleCmdClient (_line, false), new PackageDestinationSingleEntityID (issuerOfCurrentClientCommand));
 			} else {
 				if (console.telnetServer != null && issuerOfCurrentCommand != null)
Index: binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs	(revision 213)
+++ binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs	(revision 224)
@@ -13,6 +13,4 @@
 		private readonly BlockingQueue<string> toClientQueue = new BlockingQueue<string> ();
 		private readonly Telnet telnet;
-		private readonly Thread receiveThread = null;
-		private readonly Thread sendThread = null;
 		private bool authenticated = false;
 		private readonly bool authEnabled;
@@ -44,8 +42,6 @@
 			Log.Out ("Telnet connection from: " + endpoint);
 
-			receiveThread = ThreadMaster.Create ("TelnetClientReceive_" + endpoint.ToString (), new ThreadStart (ReceiveThread));
-			receiveThread.Start ();
-			sendThread = ThreadMaster.Create ("TelnetClientSend" + endpoint.ToString (), new ThreadStart (SendThread));
-			sendThread.Start ();
+			ThreadManager.StartThread ("TelnetClientReceive_" + endpoint.ToString (), new ThreadManager.ThreadFunctionDelegate (ReceiveThread), System.Threading.ThreadPriority.BelowNormal);
+			ThreadManager.StartThread ("TelnetClientSend_" + endpoint.ToString (), new ThreadManager.ThreadFunctionDelegate (SendThread), System.Threading.ThreadPriority.BelowNormal);
 
 			if (authEnabled) {
@@ -77,5 +73,5 @@
 		}
 
-		private void ReceiveThread ()
+		private void ReceiveThread (ThreadManager.ThreadInfo _tInfo)
 		{
 			try {
@@ -116,8 +112,7 @@
 			if (!closed)
 				Close ();
-			ThreadMaster.Remove (Thread.CurrentThread.Name);
 		}
 
-		private void SendThread ()
+		private void SendThread (ThreadManager.ThreadInfo _tInfo)
 		{
 			try {
@@ -140,5 +135,4 @@
 			if (!closed)
 				Close ();
-			ThreadMaster.Remove (Thread.CurrentThread.Name);
 		}
 
