internal void ClearCommand()
		{
			currentCommand = null;
		}
		internal async Task<string> SendCommand(Command command, int timeout)
		{
			var result = string.Empty;

			await transmitRunner.InvokeAsync(() =>
			{
				SetCommand(command);

				if (DebugMode)
				{
					console.WriteLine("[Sending] " + command.Encode());
				}

				input.WriteLine(command.Encode());
				input.Flush();

				result = WaitForResponse(timeout);

				ClearCommand();
			});

			return result;
		}
		internal Command SetCommand(Command command)
		{
			if (currentCommand != null)
			{
				console.WriteLine("Serious error.");
			}

			currentCommand = command;
			return command;
		}