Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 5017)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 5018)
@@ -66,4 +66,6 @@
     private SideButton downButton;
 
+    private EnableFilterAction enableFilterAction;
+    private HidingFilterAction hidingFilterAction;
 
     public FilterDialog(){
@@ -72,7 +74,8 @@
                 KeyEvent.VK_F, Shortcut.ALT_SHIFT), 162);
         build();
-
-        MultikeyActionsHandler.getInstance().addAction(new EnableFilterAction());
-        MultikeyActionsHandler.getInstance().addAction(new HidingFilterAction());
+        enableFilterAction = new EnableFilterAction();
+        hidingFilterAction = new HidingFilterAction();
+        MultikeyActionsHandler.getInstance().addAction(enableFilterAction);
+        MultikeyActionsHandler.getInstance().addAction(hidingFilterAction);
     }
 
@@ -195,4 +198,11 @@
     }
 
+    @Override
+    public void destroy() {
+        MultikeyActionsHandler.getInstance().removeAction(enableFilterAction);
+        MultikeyActionsHandler.getInstance().removeAction(hidingFilterAction);
+        super.destroy();
+    }
+    
     static class StringRenderer extends DefaultTableCellRenderer {
         @Override
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 5017)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 5018)
@@ -90,7 +90,4 @@
         instance = new LayerListDialog(mapFrame);
 
-        MultikeyActionsHandler.getInstance().addAction(instance.new ShowHideLayerAction(false));
-        MultikeyActionsHandler.getInstance().addAction(instance.new ActivateLayerAction());
-        JumpToMarkerActions.initialize();
     }
 
@@ -120,5 +117,6 @@
 
     ActivateLayerAction activateLayerAction;
-
+    ShowHideLayerAction showHideLayerAction;
+    
     //TODO This duplicates ShowHide actions functionality
     /** stores which layer index to toggle and executes the ShowHide action if the layer is present */
@@ -240,8 +238,12 @@
         activateLayerAction = new ActivateLayerAction();
         activateLayerAction.updateEnabledState();
+        MultikeyActionsHandler.getInstance().addAction(activateLayerAction);
         adaptTo(activateLayerAction, selectionModel);
+    
+        JumpToMarkerActions.initialize();
 
         // -- show hide action
-        ShowHideLayerAction showHideLayerAction = new ShowHideLayerAction();
+        showHideLayerAction = new ShowHideLayerAction();
+        MultikeyActionsHandler.getInstance().addAction(showHideLayerAction);
         adaptTo(showHideLayerAction, selectionModel);
 
@@ -345,4 +347,7 @@
             Main.unregisterActionShortcut(visibilityToggleActions[i], visibilityToggleShortcuts[i]);
         }
+        MultikeyActionsHandler.getInstance().removeAction(activateLayerAction);
+        MultikeyActionsHandler.getInstance().removeAction(showHideLayerAction);
+        JumpToMarkerActions.unregisterActions();
         super.destroy();
         instance = null;
Index: /trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 5017)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 5018)
@@ -23,7 +23,17 @@
     }
 
+    private static JumpToNextMarker jumpToNextMarkerAction;
+    private static JumpToPreviousMarker jumpToPreviousMarkerAction;
+            
     public static void initialize() {
-        MultikeyActionsHandler.getInstance().addAction(new JumpToNextMarker(null));
-        MultikeyActionsHandler.getInstance().addAction(new JumpToPreviousMarker(null));
+        jumpToNextMarkerAction = new JumpToNextMarker(null);
+        jumpToPreviousMarkerAction = new JumpToPreviousMarker(null);
+        MultikeyActionsHandler.getInstance().addAction(jumpToNextMarkerAction);
+        MultikeyActionsHandler.getInstance().addAction(jumpToPreviousMarkerAction);
+    }
+    
+    public static void unregisterActions() {
+        MultikeyActionsHandler.getInstance().removeAction(jumpToNextMarkerAction);
+        MultikeyActionsHandler.getInstance().removeAction(jumpToPreviousMarkerAction);
     }
 
Index: /trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 5017)
+++ /trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 5018)
@@ -9,4 +9,6 @@
 import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -31,4 +33,6 @@
     private static final String STATUS_BAR_ID = new String("multikeyShortcut");
 
+    private Map<MultikeyShortcutAction, MyAction> myActions = new HashMap<MultikeyShortcutAction,MyAction>();
+            
     private class MyKeyEventDispatcher implements KeyEventDispatcher {
         @Override
@@ -203,6 +207,16 @@
         if(action.getMultikeyShortcut() != null) {
             MyAction myAction = new MyAction(action);
+            myActions.put(action, myAction);
             Main.registerActionShortcut(myAction, myAction.shortcut);
         }
     }
+    
+    // unregister action and its shortcut completely
+    public void removeAction(MultikeyShortcutAction action) {
+        MyAction a = myActions.get(action);
+        if (a!=null) {
+            Main.unregisterActionShortcut(a, a.shortcut);
+            myActions.remove(a);
+        }
+    }
 }
