Index: src/uk/me/parabola/mkgmap/osmstyle/StyledConverter.java
===================================================================
--- src/uk/me/parabola/mkgmap/osmstyle/StyledConverter.java	(revision 2564)
+++ src/uk/me/parabola/mkgmap/osmstyle/StyledConverter.java	(working copy)
@@ -234,7 +234,7 @@
 
 	private void addConvertedWay(Way way, GType foundType) {
 		if (foundType.getFeatureKind() == FeatureKind.POLYLINE) {
-		    if(foundType.isRoad() &&
+		    if((foundType.isRoad() || foundType.isRoutable()) && 
 			   !MapObject.hasExtendedType(foundType.getType())){
 		    	roads.add(way);
 		    	roadTypes.add(new GType(foundType));
@@ -334,7 +334,10 @@
 			if (road == null)
 				continue;
 			GType gt = roadTypes.get(i);
-			addRoad(road, gt);
+			if (gt.isRoad())
+				addRoad(road, gt);
+			else 
+				addLine(road, gt);
 		}
 		roads = null;
 		roadTypes = null;
@@ -1752,8 +1755,8 @@
 	}
 	
 	/**
-	 * Increment the highway counter for each coord of each road.
-	 * As a result, all road junctions have a count > 1. 
+	 * Increment the highway counter for each coord of each road or way with a
+	 * routable type. As a result, all road junctions have a count > 1.
 	 */
 	private void setHighwayCounts(){
 		log.info("Maintaining highway counters");
Index: src/uk/me/parabola/mkgmap/reader/osm/GType.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/GType.java	(revision 2564)
+++ src/uk/me/parabola/mkgmap/reader/osm/GType.java	(working copy)
@@ -193,6 +193,10 @@
 	public boolean isRoad() {
 		return road;
 	}
+	
+	public boolean isRoutable() {
+		return type >= 0x01 && type <= 0x13 || type == 0x1a || type == 0x1b;
+	}
 
 	public boolean isContinueSearch() {
 		return continueSearch;
