Index: src/uk/me/parabola/mkgmap/build/MapBuilder.java
===================================================================
--- src/uk/me/parabola/mkgmap/build/MapBuilder.java	(revision 3627)
+++ src/uk/me/parabola/mkgmap/build/MapBuilder.java	(working copy)
@@ -570,8 +570,9 @@
 		String OSMId = mep.getOSMId();
 		if(ref != null) {
 			Highway hw = highways.get(ref);
-			if(hw == null)
-				hw = makeHighway(map, ref);
+			if(hw == null){
+				hw = makeHighway(map, ref, mep.getCountry(), mep.getRegion());
+			}
 			if(hw == null) {
 			    log.warn("Can't create exit", mep.getName(), "(OSM id", OSMId, ") on unknown highway", ref);
 			    return;
@@ -1146,15 +1147,21 @@
 		}
 	}
 
-	Highway makeHighway(Map map, String ref) {
-		if(getDefaultRegion(null) == null) {
-			log.warn("Highway " + ref + " has no region (define a default region to zap this warning)");
-		}
+	Highway makeHighway(Map map, String ref, String countryStr, String regionStr) {
+		
 		Highway hw = highways.get(ref);
 		if(hw == null) {
 			LBLFile lblFile = map.getLblFile();
-			log.info("creating highway " + ref);
-			hw = lblFile.createHighway(getDefaultRegion(null), ref);
+			Country country = (countryStr == null)? getDefaultCountry() : lblFile.createCountry(countryStr, locator.getCountryISOCode(countryStr));
+			Region region = (regionStr == null)? getDefaultRegion(country) : lblFile.createRegion(country, regionStr, null);
+			if (region == null)
+				region = getDefaultRegion(null);
+			if(region == null) {
+				log.warn("Highway " + ref + " has no region (define a default region to zap this warning)");
+			}
+			
+			log.info("creating highway", ref);
+			hw = lblFile.createHighway(region, ref);
 			highways.put(ref, hw);
 		}
 
