Index: doc/options.txt
===================================================================
--- doc/options.txt	(revision 3175)
+++ doc/options.txt	(working copy)
@@ -562,7 +562,8 @@
 (NSIS) to create a Windows Mapsource Installer.
 
 ;--make-all-cycleways
-: 	Turn on all of the options that make cycleways.
+: 	Deprecated, use --make-opposite-cycleways instead. Former meaning:
+    Turn on all of the options that make cycleways.
 
 ;--make-opposite-cycleways
 : 	Some oneway streets allow bicycle traffic in the reverse
@@ -570,7 +571,8 @@
 the original that allows bicycle traffic (in both directions).
 
 ;--make-cycleways
-: 	Some streets have a separate cycleway track/lane just for
+:   Now ignored, former meaning:   	
+    Some streets have a separate cycleway track/lane just for
 bicycle traffic and this option makes a way with the same
 points as the original that allows bicycle traffic. Also,
 bicycle traffic is prohibited from using the original way
Index: doc/styles/rules.txt
===================================================================
--- doc/styles/rules.txt	(revision 3175)
+++ doc/styles/rules.txt	(working copy)
@@ -656,7 +656,7 @@
 | +mkgmap:exit_hint_ref+  | The +ref+ tag value of the links exit node | 'process-exits'    
 | +mkgmap:exit_hint_exit_to+  | The +exit_to+ tag value of the links exit node | 'process-exits'    
 | +mkgmap:dest_hint+  | +true+ for the part on link roads that should contain destination information about the link | 'process-destination'    
-| +mkgmap:synthesised+  | The value is +yes+ if the way was added by the make-cycleways option | 'make-cycleways' or 'make-opposite-cycleways'
+| +mkgmap:synthesised+  | The value is +yes+ if the way was added by the make-opposite-cycleways option | 'make-opposite-cycleways'
 | +mkgmap:mp_created+  | The value is +true+ if the way was created by the internal multi-polygon-relation handling | none
 |=========================================================
 
Index: resources/help/en/options
===================================================================
--- resources/help/en/options	(revision 3175)
+++ resources/help/en/options	(working copy)
@@ -549,6 +549,7 @@
 	(NSIS) to create a Windows Mapsource Installer.
 
 --make-all-cycleways
+  Deprecated, use --make-opposite-cycleways instead. Former meaning: 
 	Turn on all of the options that make cycleways.
 
 --make-opposite-cycleways
@@ -557,6 +558,7 @@
 	the original that allows bicycle traffic (in both directions).
 
 --make-cycleways
+  Now ignored, former meaning:
 	Some streets have a separate cycleway track/lane just for
 	bicycle traffic and this option makes a way with the same
 	points as the original that allows bicycle traffic. Also,
Index: src/uk/me/parabola/mkgmap/reader/osm/HighwayHooks.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/HighwayHooks.java	(revision 3175)
+++ src/uk/me/parabola/mkgmap/reader/osm/HighwayHooks.java	(working copy)
@@ -36,7 +36,6 @@
 	private final List<Node> exits = new ArrayList<Node>();
 
 	private boolean makeOppositeCycleways;
-	private boolean makeCycleways;
 	private ElementSaver saver;
 	private boolean linkPOIsToWays;
 
@@ -66,25 +65,24 @@
 	public boolean init(ElementSaver saver, EnhancedProperties props) {
 		this.saver = saver;
 		if(props.getProperty("make-all-cycleways", false)) {
-			makeOppositeCycleways = makeCycleways = true;
+			log.error("option make-all-cycleways is deprecated, please use make-opposite-cycleways");
+			makeOppositeCycleways = true;
 		}
 		else {
 			makeOppositeCycleways = props.getProperty("make-opposite-cycleways", false);
-			makeCycleways = props.getProperty("make-cycleways", false);
 		}
+		
 		linkPOIsToWays = props.getProperty("link-pois-to-ways", false);
 		currentNodeInWay = null;
 
-		if (makeCycleways || makeOppositeCycleways) {
-			// need the additional two tags 
+		if (makeOppositeCycleways) {
+			// need the additional tags 
 			usedTags.add("cycleway");
 			usedTags.add("bicycle");
-		}
-		
-		if (makeOppositeCycleways) {
-			// need the additional two tags 
 			usedTags.add("oneway:bicycle");
 			usedTags.add("bicycle:oneway");
+			usedTags.add("cycleway:left");
+			usedTags.add("cycleway:right");
 		}
 		
 		// add addr:street and addr:housenumber if housenumber search is enabled
@@ -169,39 +167,34 @@
 				}
 			}
 
-			String onewayTag = way.getTag("oneway");
-			boolean oneway = way.isBoolTag("oneway");
-			if (!oneway & onewayTag != null && ("-1".equals(onewayTag) || "reverse".equals(onewayTag)))
-				oneway = true;
-			String cycleway = way.getTag("cycleway");
-			if (makeOppositeCycleways && cycleway != null && !"cycleway".equals(highway) && oneway &&
-			   ("opposite".equals(cycleway) ||
-				"opposite_lane".equals(cycleway) ||
-				"opposite_track".equals(cycleway) ||
-				"no".equals(way.getTag("oneway:bicycle")) ||
-				"no".equals(way.getTag("bicycle:oneway"))))
-			{
-				// what we have here is a oneway street
-				// that allows bicycle traffic in both
-				// directions -- to enable bicycle routing
-				// in the reverse direction, we will synthesise
-				// a cycleway that has the same points as
-				// the original way
-				way.addTag("mkgmap:make-cycle-way", "yes");
-
-			} else if (makeCycleways && cycleway != null && !"cycleway".equals(highway) &&
-					("track".equals(cycleway) ||
-					 "lane".equals(cycleway) ||
-					 "both".equals(cycleway) ||
-					 "left".equals(cycleway) ||
-					 "right".equals(cycleway)))
-			{
-				// what we have here is a highway with a
-				// separate track for cycles -- to enable
-				// bicycle routing, we will synthesise a cycleway
-				// that has the same points as the original
-				// way
-				way.addTag("mkgmap:make-cycle-way", "yes");
+			if (makeOppositeCycleways && !"cycleway".equals(highway)){
+				String onewayTag = way.getTag("oneway");
+				boolean oneway = way.isBoolTag("oneway");
+				if (!oneway & onewayTag != null && ("-1".equals(onewayTag) || "reverse".equals(onewayTag)))
+					oneway = true;
+				if (oneway){
+					String cycleway = way.getTag("cycleway");
+					boolean addCycleWay = false;
+					// we have a oneway street, check if it allows bicycles to travel in opposite direction
+					if ("no".equals(way.getTag("oneway:bicycle")) || "no".equals(way.getTag("bicycle:oneway"))){
+						if (cycleway == null)
+							log.error("check1:",way);
+						addCycleWay = true;
+					}
+					else if (cycleway != null && ("opposite".equals(cycleway) || "opposite_lane".equals(cycleway) || "opposite_track".equals(cycleway))){
+						addCycleWay = true;	
+					}
+					else if ("opposite_lane".equals(way.getTag("cycleway:left")) || "opposite_lane".equals(way.getTag("cycleway:right"))){
+						log.error("check2:",way);
+						addCycleWay = true;
+					}
+					else if ("opposite_track".equals(way.getTag("cycleway:left")) || "opposite_track".equals(way.getTag("cycleway:right"))){
+						log.error("check3:",way);
+						addCycleWay = true;
+					}
+					if (addCycleWay)
+						way.addTag("mkgmap:make-cycle-way", "yes");
+				} 
 			}
 		}
 
