private boolean sendMessage(String message) {

		String currMessageMD5;
		boolean isStatus=false;
		try
		{
			//check if output got shutdown, this probably will never evaluate but worth a shot
			if (siriSocket.isOutputShutdown())
			{
				throw new Exception("Output Shutdown");
			}
			if (!siriSocket.isConnected())
			{
				throw new Exception("Disconnected");
			}
			if (siriSocket.isClosed())
			{
				throw new Exception("Closed");
			}
			
			//send data to the socket
			if (message.equals("status"))
			{
				isStatus=true;
				message=SiriStatusMessage.buildSiriMessage();
			}
			out.println(message);
			if (isStatus)
			{
				System.out.println("SS 0 INFO: Sent status request");
				if (!getResponse())
				{
					throw new Exception("Timeout");
				}
			}
		}catch (Exception e)
		{
			//we had a problem
			//only compute md5 in the case of an error
			currMessageMD5=MD5(message);
			//if we don't match the last error's message md5 we should alert the user, otherwise its redundant
			if (!(currMessageMD5.equals(lastErrorMD5)))
			{
				//logQueue.add("SS 0 ERROR: Could not send message " +message+ "!::" + e.getMessage());
				lastErrorMD5=currMessageMD5;
			}
			return false;
		}
		return true;
	}