private synchronized void parseMessage(Message2 m)
	{
		if(m.isRequest()) {  
			switch(state)
			{
				case IN_CS: // if they are going in the same direction send ack, else queue the request
					if(direction == m.getDirection())
						sendAckTo(m.sender());
					else
						pending[m.sender()] = true;
					break;
				case WAITING: // only send ack if timestamp is before our own or going in same direction, else queue it
					if(m.getTimestamp().before(reqStamp) || direction == m.getDirection())
						sendAckTo(m.sender());
					else
						pending[m.sender()] = true;
					break;
				case NEITHER: // send ack automatically
					sendAckTo(m.sender());
					break;
			}
		} else if(m.isAck()) {
			acks[m.sender()] = true; // record the ack we receive
		}

	}