Index: /applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyles.java
===================================================================
--- /applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyles.java	(revision 3618)
+++ /applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyles.java	(revision 3619)
@@ -8,4 +8,6 @@
 {
 	HashMap<String, ElemStyle> styles;
+	static int nr = 0;
+
 
 	public ElemStyles()
@@ -16,4 +18,5 @@
 	public void add (String k, String v, ElemStyle style)
 	{
+		ElemStyle  old_style;
 		String key = k + "=" + v;
 		
@@ -30,5 +33,16 @@
 			key = key + "node";
 		}
-		styles.put(key, style);
+		/* avoid duplicates - for now */
+		old_style = styles.get(key);
+		if(old_style == null) {
+			/* new key/value, insert */
+			styles.put(key, style);
+		} else {
+			if(style.getMaxScale() < old_style.getMaxScale()) {
+				/* existing larger scale key/value, replace */
+				styles.remove(old_style);
+				styles.put(key, style);
+			}
+		}
 	}
 
@@ -38,4 +52,5 @@
 		{
 			String classname;
+			String kv = null;
 			
 			if(p instanceof org.openstreetmap.josm.data.osm.Node) {
@@ -48,5 +63,5 @@
 			{
 				String key = iterator.next();
-				String kv = key + "=" + p.keys.get(key) + classname;
+				kv = key + "=" + p.keys.get(key) + classname;
 				if(styles.containsKey(kv))
 				{
@@ -54,5 +69,40 @@
 				}
 			}
+
+            // not a known key/value combination
+			boolean first_line = true;
+
+            // filter out trivial tags and show the rest
+			iterator = p.keys.keySet().iterator();
+			while(iterator.hasNext())	
+			{
+				String key = iterator.next();
+				kv = key + "=" + p.keys.get(key);
+				if(	!kv.startsWith("created_by=") &&
+					!kv.startsWith("converted_by=") &&
+					!kv.startsWith("source=") &&
+					!kv.startsWith("note=") &&
+					!kv.startsWith("layer=") &&
+					!kv.startsWith("bridge=") &&
+					!kv.startsWith("tunnel=") &&
+					!kv.startsWith("oneway=") &&
+					!kv.startsWith("speedlimit=") &&
+					!kv.startsWith("motorcar=") &&
+					!kv.startsWith("horse=") &&
+					!kv.startsWith("bicycle=") &&
+					!kv.startsWith("foot=")
+					) {
+						
+					if (first_line) {
+						nr++;
+						//System.out.println("mappaint - rule not found[" + nr + "]: " + kv + " id:" + p.id);
+					} else {
+						//System.out.println("mappaint - rule not found[" + nr + "]: " + kv);
+					}
+					first_line=false;
+				}
+			}
 		}
+		
 		return null;
 	}
