public synchronized Message parse(StringBuffer message)
	{
		resetParser();

		if(message.substring(0,1).equals(":"))
		{
			prefixPresent = true;
			message.delete(0, 1);
		}

		if(prefixPresent)
		{
			prefix = message.substring(0, message.indexOf(" "));
			message.delete(0, message.indexOf(" ") + 1);
			parsePrefix(prefix);
		}

		command = message.substring(0, message.indexOf(" "));
		message.delete(0, message.indexOf(" "));

		if(message.indexOf(" :") >= 0)
		{
			params = parseParams(message.substring(0, message.indexOf(" :")).trim());
			message.delete(0, message.indexOf(" :") + 2);

			content = message.substring(0, message.length());
		}
		else
		{
			params = parseParams(message.substring(0, message.length()).trim());
			message.delete(0, message.length());
			content = "";
		}

		printStuff();

		return(new Message(prefix, command, params, serverName, nickname, user, host, content));

	}