Index: src/uk/me/parabola/mkgmap/build/MapBuilder.java
===================================================================
--- src/uk/me/parabola/mkgmap/build/MapBuilder.java	(revision 2753)
+++ src/uk/me/parabola/mkgmap/build/MapBuilder.java	(working copy)
@@ -1023,7 +1023,7 @@
 		
 		if (mergeLines) {
 			LineMergeFilter merger = new LineMergeFilter();
-			lines = merger.merge(lines, doRoads && res == 24);
+			lines = merger.merge(lines, doRoads && div.getZoom().getLevel() == 0);
 		}
 
 		LayerFilterChain filters = new LayerFilterChain(config);
@@ -1030,11 +1030,12 @@
 		if (enableLineCleanFilters && (res < 24)) {
 			filters.addFilter(new PreserveHorizontalAndVerticalLinesFilter());
 			filters.addFilter(new RoundCoordsFilter());
-			filters.addFilter(new SizeFilter(MIN_SIZE_LINE));
+			if (!doRoads || div.getZoom().getLevel() != 0)
+				filters.addFilter(new SizeFilter(MIN_SIZE_LINE));
 			if(reducePointError > 0)
 				filters.addFilter(new DouglasPeuckerFilter(reducePointError));
 		}
-		filters.addFilter(new LineSplitterFilter(doRoads && res == 24));
+		filters.addFilter(new LineSplitterFilter(doRoads && div.getZoom().getLevel() == 0));
 		filters.addFilter(new RemoveEmpty());
 		filters.addFilter(new LinePreparerFilter(div));
 		filters.addFilter(new LineAddFilter(div, map, doRoads));
@@ -1122,6 +1123,10 @@
 		return 24 - minShift;
 	}
 
+	/**
+	 * Enable/disable the creation of a routable map 
+	 * @param doRoads 
+	 */
 	public void setDoRoads(boolean doRoads) {
 		this.doRoads = doRoads;
 	}
@@ -1238,17 +1243,17 @@
 					pl.setRoadDef(roaddef);
 					roaddef.addPolylineRef(pl);
 					List<Coord> points = line.getPoints();
-					if (div.getResolution() == 24
+					if (div.getZoom().getLevel() == 0 
 							&& (points.get(0) instanceof CoordNode == false
 							|| points.get(points.size() - 1) instanceof CoordNode == false)) {
 						log.error("possible routing problem: road end-points not both coordNodes: " + roaddef);
 					}
 				} else if (routingErrorMsgPrinted == false){
-					if (div.getResolution() == 24 && GType.isRoutableLineType(line.getType())){
+					if (div.getZoom().getLevel() == 0 && GType.isRoutableLineType(line.getType())){
 						Coord start = line.getPoints().get(0);
 						log.error("Non-routable way with routable type " + GType.formatType(line.getType()) + " starting at " +
-					start.toOSMURL() + 
-					" is used for a routable map. This leads to routing errors. Try --check-styles to check the style.");
+								start.toOSMURL() + 
+								" is used for a routable map. This leads to routing errors. Try --check-styles to check the style.");
 						
 						routingErrorMsgPrinted = true;
 					}
Index: src/uk/me/parabola/mkgmap/osmstyle/TypeReader.java
===================================================================
--- src/uk/me/parabola/mkgmap/osmstyle/TypeReader.java	(revision 2753)
+++ src/uk/me/parabola/mkgmap/osmstyle/TypeReader.java	(working copy)
@@ -120,15 +120,15 @@
 						msg += typeOverlaidMsg;
 					System.out.println(msg);
 				}
-				if (kind == FeatureKind.POLYLINE && gt.getMaxResolution() == 24 && GType.isRoutableLineType(usedType)){
+				if (kind == FeatureKind.POLYLINE && gt.getMinLevel() == 0 && GType.isRoutableLineType(usedType)){
 					if (gt.isRoad() == false){
-						String msg = "Warning: routable type " + type  + " is used for non-routable line with resolution 24. This may break routing. Style file "+ ts.getFileName() + ", line " + ts.getLinenumber();
+						String msg = "Warning: routable type " + type  + " is used for non-routable line with level 0. This may break routing. Style file "+ ts.getFileName() + ", line " + ts.getLinenumber();
 						if (fromOverlays)
 							msg += typeOverlaidMsg;
 						System.out.println(msg);
 					}
 					else if (i > 0){
-						System.out.println("Warning: routable type " + type + " is used for non-routable line with resolution 24. " +
+						System.out.println("Warning: routable type " + type + " is used for non-routable line with level 0. " +
 								"This may break routing. Style file " + ts.getFileName() + ", line " + ts.getLinenumber() + 
 								typeOverlaidMsg +
 								" which is used for adding the non-routable copy of the way.");
