public Road createReverseRoad()
	{
		Road r = new Road();
		r.aName = this.bName;
		r.bName = this.aName;
		r.aPoint = this.bPoint;
		r.bPoint = this.aPoint;
		r.kFactor = this.kFactor;
		r.length = this.length;
		
		switch(this.direction)
		{
		case NONE:
			r.direction = Direction.NONE;
			break;
		case NORTH:
			r.direction = Direction.SOUTH;
			break;
		case SOUTH:
			r.direction = Direction.NORTH;
			break;
		case WEST:
			r.direction = Direction.EAST;
			break;
		case EAST:
			r.direction = Direction.WEST;
			break;
		case NORTH_WEST:
			r.direction = Direction.SOUTH_EAST;
			break;
		case NORTH_EAST:
			r.direction = Direction.SOUTH_WEST;
			break;
		case SOUTH_WEST:
			r.direction = Direction.NORTH_EAST;
			break;
		case SOUTH_EAST:
			r.direction = Direction.NORTH_WEST;
			break;	
		}
		
		for(Point p : this.road)
		{
			r.road.addFirst(p);
		}
		
		return r;
	}