Index: applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/AdjacentNodesAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/AdjacentNodesAction.java	(revision 25814)
+++ applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/AdjacentNodesAction.java	(revision 25817)
@@ -9,5 +9,5 @@
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.LinkedHashSet;
+import java.util.HashSet;
 import java.util.Set;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -30,5 +30,5 @@
     }
 
-    private  Set<Way> activeWays = new LinkedHashSet<Way>();
+    private  Set<Way> activeWays = new HashSet<Way>();
 
     public void actionPerformed(ActionEvent e) {
Index: applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/AdjacentWaysAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/AdjacentWaysAction.java	(revision 25814)
+++ applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/AdjacentWaysAction.java	(revision 25817)
@@ -8,5 +8,5 @@
 import java.awt.event.KeyEvent;
 import java.util.Collection;
-import java.util.LinkedHashSet;
+import java.util.HashSet;
 import java.util.Set;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -37,5 +37,5 @@
 
         // select ways attached to already selected ways
-        Set<Way> newWays = new LinkedHashSet<Way>();
+        Set<Way> newWays = new HashSet<Way>();
         newWays.addAll(selectedWays);
         for (Way w : selectedWays){
Index: applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/ConnectedWaysAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/ConnectedWaysAction.java	(revision 25814)
+++ applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/ConnectedWaysAction.java	(revision 25817)
@@ -8,5 +8,5 @@
 import java.awt.event.KeyEvent;
 import java.util.Collection;
-import java.util.LinkedHashSet;
+import java.util.HashSet;
 import java.util.Set;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -32,5 +32,5 @@
         Set<Way> selectedWays = OsmPrimitive.getFilteredSet(getCurrentDataSet().getSelected(), Way.class);
 
-        Set<Way> newWays = new LinkedHashSet<Way>();
+        Set<Way> newWays = new HashSet<Way>();
 
         // selecting ways attached to selected nodes
Index: applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/IntersectedWaysAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/IntersectedWaysAction.java	(revision 25814)
+++ applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/IntersectedWaysAction.java	(revision 25817)
@@ -8,5 +8,5 @@
 import java.awt.event.KeyEvent;
 import java.util.Collection;
-import java.util.LinkedHashSet;
+import java.util.HashSet;
 import java.util.Set;
 import javax.swing.JOptionPane;
@@ -32,5 +32,5 @@
         Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
         Set<Node> selectedNodes = OsmPrimitive.getFilteredSet(selection, Node.class);
-        Set<Way> activeWays = new LinkedHashSet<Way>();
+        Set<Way> activeWays = new HashSet<Way>();
 
         Set<Way> selectedWays = OsmPrimitive.getFilteredSet(getCurrentDataSet().getSelected(), Way.class);
@@ -38,5 +38,5 @@
         // select ways attached to already selected ways
         if (!selectedWays.isEmpty()) {
-            Set<Way> newWays = new LinkedHashSet<Way>();
+            Set<Way> newWays = new HashSet<Way>();
             NodeWayUtils.addWaysIntersectingWays(
                     getCurrentDataSet().getWays(),
Index: applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/IntersectedWaysRecursiveAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/IntersectedWaysRecursiveAction.java	(revision 25814)
+++ applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/IntersectedWaysRecursiveAction.java	(revision 25817)
@@ -8,5 +8,5 @@
 import java.awt.event.KeyEvent;
 import java.util.Collection;
-import java.util.LinkedHashSet;
+import java.util.HashSet;
 import java.util.Set;
 import javax.swing.JOptionPane;
@@ -25,5 +25,5 @@
         super(tr("All intersecting ways"), "intwayall", tr("Select all intersecting ways"),
                 Shortcut.registerShortcut("tools:intwayall", tr("Tool: {0}","All intersecting ways"),
-                KeyEvent.VK_I, Shortcut.GROUP_MENU), true);
+                KeyEvent.VK_I, Shortcut.GROUP_MENU, KeyEvent.SHIFT_DOWN_MASK|KeyEvent.CTRL_DOWN_MASK), true);
         putValue("help", ht("/Action/SelectAllIntersectingWays"));
 
@@ -33,10 +33,10 @@
         Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
         Set<Node> selectedNodes = OsmPrimitive.getFilteredSet(selection, Node.class);
-        Set<Way> activeWays = new LinkedHashSet<Way>();
+        Set<Way> activeWays = new HashSet<Way>();
 
         Set<Way> selectedWays = OsmPrimitive.getFilteredSet(getCurrentDataSet().getSelected(), Way.class);
 
         if (!selectedWays.isEmpty()) {
-            Set<Way> newWays = new LinkedHashSet<Way>();
+            Set<Way> newWays = new HashSet<Way>();
             NodeWayUtils.addWaysIntersectingWaysRecursively(
                     getCurrentDataSet().getWays(),
Index: applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/NodeWayUtils.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/NodeWayUtils.java	(revision 25814)
+++ applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/NodeWayUtils.java	(revision 25817)
@@ -3,5 +3,5 @@
 
 import java.util.Collection;
-import java.util.LinkedHashSet;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -25,5 +25,5 @@
     static final int maxLevel = Main.pref.getInteger("selection.maxrecursion", 5);
     static final int maxWays = Main.pref.getInteger("selection.maxfoundways", 2000);
-    static final int maxWays1 = Main.pref.getInteger("selection.maxfoundwaysrec", 200);
+    static final int maxWays1 = Main.pref.getInteger("selection.maxfoundways.intersection", 500);
 
     /**
@@ -168,13 +168,13 @@
             (Collection<Way> allWays, Collection<Way> initWays, Set<Way> newWays)
     {
-            Set<Way> foundWays = new LinkedHashSet<Way>();
+            Set<Way> foundWays = new HashSet<Way>();
             foundWays.addAll(initWays);
             newWays.addAll(initWays);
-            Set<Way> newFoundWays = new LinkedHashSet<Way>();
+            Set<Way> newFoundWays = new HashSet<Way>();
 
             int level=0,c;
             do {
                  c=0;
-                 newFoundWays = new LinkedHashSet<Way>();
+                 newFoundWays = new HashSet<Way>();
                  for (Way w : foundWays){
                       c+=addWaysIntersectingWay(allWays, w, newFoundWays,newWays);
@@ -198,9 +198,10 @@
             (Collection<Way> initWays, Set<Way> newWays)
     {
+            //long t = System.currentTimeMillis();
             int level=0,c;
             newWays.addAll(initWays);
             do {
                  c=0;
-                 Set<Way> foundWays = new LinkedHashSet<Way>();
+                 Set<Way> foundWays = new HashSet<Way>();
                  foundWays.addAll(newWays);
                  for (Way w : foundWays){
@@ -217,4 +218,5 @@
                  }
             } while ( c >0 && level < maxLevel );
+           // System.out.println("time = "+(System.currentTimeMillis()-t)+" ways = "+newWays.size());
             return;
     }
Index: applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/UtilsPlugin2.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/UtilsPlugin2.java	(revision 25814)
+++ applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/UtilsPlugin2.java	(revision 25817)
@@ -31,5 +31,5 @@
         splitObject = MainMenu.add(Main.main.menu.toolsMenu, new SplitObjectAction());
         Main.main.menu.toolsMenu.addSeparator();
-        JMenu m1 = Main.main.menu.addMenu(marktr("Selection"), KeyEvent.VK_S, Main.main.menu.defaultMenuPos, "help");
+        JMenu m1 = Main.main.menu.addMenu(marktr("Selection"), KeyEvent.VK_N, Main.main.menu.defaultMenuPos, "help");
 
         selectWayNodes = MainMenu.add(m1, new SelectWayNodesAction());
