Index: src/org/openstreetmap/josm/gui/dialogs/AnnotationPreset.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/AnnotationPreset.java	(revision 124)
+++ src/org/openstreetmap/josm/gui/dialogs/AnnotationPreset.java	(revision 125)
@@ -136,5 +136,5 @@
 		List<Item> current;
 		String currentName;
-		Class<?> currentType;
+		Collection<Class<?>> currentTypes;
 		private static int unknownCounter = 1;
 
@@ -149,7 +149,11 @@
 				if (a.getValue("type") != null) {
 					String s = a.getValue("type");
-					s = Character.toUpperCase(s.charAt(0))+s.substring(1);
 					try {
-						currentType = Class.forName("org.openstreetmap.josm.data.osm."+s);
+						for (String type : s.split(",")) {
+							type = Character.toUpperCase(type.charAt(0))+type.substring(1);
+							if (currentTypes == null)
+								currentTypes = new LinkedList<Class<?>>();
+							currentTypes.add(Class.forName("org.openstreetmap.josm.data.osm."+type));
+						}
 					} catch (ClassNotFoundException e) {
 						e.printStackTrace();
@@ -188,17 +192,21 @@
 
 		@Override public void endElement(String ns, String lname, String qname) {
-			if (qname.equals("item"))
-				data.add(new AnnotationPreset(current, currentName, currentType));
+			if (qname.equals("item")) {
+				data.add(new AnnotationPreset(current, currentName, currentTypes));
+				current = null;
+				currentName = null;
+				currentTypes = null;
+			}
 		}
 	}
 
 	private List<Item> data;
-	String name;
-	private Class<?> type;
-
-	public AnnotationPreset(List<Item> data, String name, Class<?> currentType) {
+	public final String name;
+	private Collection<Class<?>> types;
+
+	public AnnotationPreset(List<Item> data, String name, Collection<Class<?>> currentTypes) {
 		this.data = data;
 		this.name = name;
-		this.type = currentType;
+		this.types = currentTypes;
 	}
 
@@ -234,12 +242,8 @@
 	}
 
-	@Override public String toString() {
-		return name;
-	}
-
 	public Command createCommand(Collection<OsmPrimitive> participants) {
 		Collection<OsmPrimitive> sel = new LinkedList<OsmPrimitive>();
 		for (OsmPrimitive osm : participants)
-			if (osm.getClass() == type)
+			if (types == null || types.contains(osm.getClass()))
 				sel.add(osm);
 		if (sel.isEmpty())
