private void routeReplyReceived(RREP rrep, int senderNodeAddress) {
		//rrepRoutePrecursorAddress is an local int used to hold the next-hop address from the forward route 
		int rrepRoutePrecursorAddress = -1;
		//Create route to previous node with unknown seqNum (neighbour)
		if(routeTableManager.createForwardRouteEntry(	senderNodeAddress,
													senderNodeAddress,
													Constants.UNKNOWN_SEQUENCE_NUMBER, 1, true)){
			Debug.print("Receiver: RREP where received and route to: "+senderNodeAddress+" where created with destSeq: "+Constants.UNKNOWN_SEQUENCE_NUMBER);
		}
		rrep.incrementHopCount();

		if (rrep.getSourceAddress() != nodeAddress) {
			//forward the RREP, since this node is not the one which requested a route
			sender.queuePDUmessage(rrep);
		
			// handle the first part of the route (reverse route) - from this node to the one which originated a RREQ
			try {
				//add the sender node to precursors list of the reverse route
				ForwardRouteEntry reverseRoute = routeTableManager.getForwardRouteEntry(rrep.getSourceAddress());
				reverseRoute.addPrecursorAddress(senderNodeAddress);
				rrepRoutePrecursorAddress = reverseRoute.getNextHop();
			} catch (AodvException e) {
				//no reverse route is currently known so the RREP is not sure to reach the originator of the RREQ
			}
		}
		// handle the second part of the route - from this node to the destination address in the RREP
		try {
			ForwardRouteEntry oldRoute = routeTableManager.getForwardRouteEntry(rrep.getDestinationAddress());
			if(rrepRoutePrecursorAddress != -1){
				oldRoute.addPrecursorAddress(rrepRoutePrecursorAddress);
			}
			//see if the RREP contains updates (better seqNum or hopCountNum) to the old route
				routeTableManager.updateForwardRouteEntry(oldRoute,
						new ForwardRouteEntry(	rrep.getDestinationAddress(),
												senderNodeAddress,
												rrep.getHopCount(),
												rrep.getDestinationSequenceNumber(),
												oldRoute.getPrecursors()));
		} catch (NoSuchRouteException e) {
			ArrayList<Integer> precursorNode = new ArrayList<Integer>();
			if(rrepRoutePrecursorAddress != -1){
				precursorNode.add(rrepRoutePrecursorAddress);
			}
			routeTableManager.createForwardRouteEntry(	rrep.getDestinationAddress(), 
														senderNodeAddress, 
														rrep.getDestinationSequenceNumber(),
														rrep.getHopCount(),
														precursorNode, true);
		} catch (RouteNotValidException e) {
			//FIXME den er gal paa den
			Debug.print("Receiver: FATAL ERROR");
			try {
				//update the previously known route with the better route contained in the RREP
				routeTableManager.setValid(rrep.getDestinationAddress(), rrep.getDestinationSequenceNumber());
				if(rrepRoutePrecursorAddress != -1){
					routeTableManager.getForwardRouteEntry(rrep.getDestinationAddress()).addPrecursorAddress(rrepRoutePrecursorAddress);
				}
			}catch (AodvException e1) {
				 
			}
		}
	}