diff --git a/r/org.eclipse.statet.nico.ui/META-INF/MANIFEST.MF b/r/org.eclipse.statet.nico.ui/META-INF/MANIFEST.MF
index 0caf382..102baa5 100644
--- a/r/org.eclipse.statet.nico.ui/META-INF/MANIFEST.MF
+++ b/r/org.eclipse.statet.nico.ui/META-INF/MANIFEST.MF
@@ -30,6 +30,7 @@
  org.eclipse.statet.ecommons.runtime.ui;bundle-version="[4.4.0,4.5.0)";visibility:=reexport
 Import-Package: com.ibm.icu.text;version="67.1.0",
  org.eclipse.statet.ecommons.collections;version="4.4.0",
+ org.eclipse.statet.ecommons.commands.core;version="4.4.0",
  org.eclipse.statet.ecommons.databinding,
  org.eclipse.statet.ecommons.databinding.core.observable;version="4.4.0",
  org.eclipse.statet.ecommons.debug.core.util,
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsolePage.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsolePage.java
index 2b22368..1127062 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsolePage.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsolePage.java
@@ -14,8 +14,6 @@
 
 package org.eclipse.statet.nico.ui.console;
 
-import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
-
 import static org.eclipse.statet.ecommons.ui.SharedUIResources.FIND_NEXT_COMMAND_ID;
 import static org.eclipse.statet.ecommons.ui.SharedUIResources.FIND_PREVIOUS_COMMAND_ID;
 import static org.eclipse.statet.ecommons.ui.actions.UIActions.ADDITIONS_GROUP_ID;
@@ -92,7 +90,6 @@
 import org.eclipse.ui.console.TextConsoleViewer;
 import org.eclipse.ui.console.actions.ClearOutputAction;
 import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.menus.CommandContributionItem;
 import org.eclipse.ui.menus.CommandContributionItemParameter;
 import org.eclipse.ui.part.IPageBookViewPage;
@@ -112,13 +109,13 @@
 import org.eclipse.statet.jcommons.ts.core.ActiveToolListener.ActiveToolEvent;
 import org.eclipse.statet.jcommons.ts.core.ToolProvider;
 
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.preferences.PreferencesUtil;
 import org.eclipse.statet.ecommons.preferences.SettingsChangeNotifier.ChangeListener;
 import org.eclipse.statet.ecommons.text.ui.TextViewerAction;
 import org.eclipse.statet.ecommons.text.ui.TextViewerEditorColorUpdater;
 import org.eclipse.statet.ecommons.ui.ISettingsChangedHandler;
 import org.eclipse.statet.ecommons.ui.SharedMessages;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.actions.SimpleContributionItem;
 import org.eclipse.statet.ecommons.ui.actions.UIActions;
@@ -655,12 +652,8 @@
 		this.inputServices= new NestedServices(pageServiceLocator, "ConsoleInput");
 		this.inputServices.bindToFocus(inputControl);
 		
-		final IHandlerService pageHandlerService= nonNullAssert(pageServiceLocator
-				.getService(IHandlerService.class) );
-		this.pageHandlers= new ContextHandlers(pageHandlerService);
-		final IHandlerService inputHandlerService= nonNullAssert(this.inputServices.getLocator()
-				.getService(IHandlerService.class) );
-		this.inputHandlers= new ContextHandlers(inputHandlerService);
+		this.pageHandlers= new ContextHandlers(pageServiceLocator);
+		this.inputHandlers= new ContextHandlers(this.inputServices.getLocator());
 		
 		this.multiActionHandler= new MultiActionHandler();
 		
diff --git a/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/variables/AppVarView.java b/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/variables/AppVarView.java
index 5f1f3c6..6e62a82 100644
--- a/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/variables/AppVarView.java
+++ b/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/variables/AppVarView.java
@@ -53,7 +53,6 @@
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.commands.IElementUpdater;
 import org.eclipse.ui.handlers.CollapseAllHandler;
-import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.menus.CommandContributionItemParameter;
 import org.eclipse.ui.menus.UIElement;
 import org.eclipse.ui.part.ViewPart;
@@ -67,10 +66,10 @@
 import org.eclipse.statet.jcommons.ts.core.Tool;
 import org.eclipse.statet.jcommons.ts.core.ToolProvider;
 
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.ts.ui.workbench.WorkbenchToolRegistry;
 import org.eclipse.statet.ecommons.ts.ui.workbench.WorkbenchToolRegistryListener;
 import org.eclipse.statet.ecommons.ts.ui.workbench.WorkbenchToolSessionData;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.actions.UIActions;
 import org.eclipse.statet.ecommons.ui.components.StatusInfo;
@@ -257,7 +256,7 @@
 		final IViewSite site= getViewSite();
 		site.setSelectionProvider(treeSelectionProvider);
 		this.actionUtil= new ViewActionUtil(this);
-		this.handlers= new ContextHandlers(site.getService(IHandlerService.class));
+		this.handlers= new ContextHandlers(site);
 		initActions(site, this.handlers);
 		contributeToActionBars(site, site.getActionBars(), this.handlers);
 		hookContextMenu();
diff --git a/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/viewer/AppBrowserPage.java b/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/viewer/AppBrowserPage.java
index 536b9a9..1bdac26 100644
--- a/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/viewer/AppBrowserPage.java
+++ b/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/viewer/AppBrowserPage.java
@@ -33,7 +33,7 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.mpbv.PageBookBrowserPage;
 import org.eclipse.statet.ecommons.ui.workbench.ContextHandlers;
diff --git a/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/viewer/AppBrowserView.java b/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/viewer/AppBrowserView.java
index babafbd..c51324b 100644
--- a/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/viewer/AppBrowserView.java
+++ b/r/org.eclipse.statet.r.apps/src/org/eclipse/statet/internal/r/apps/ui/viewer/AppBrowserView.java
@@ -24,7 +24,7 @@
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.UIActions;
 import org.eclipse.statet.ecommons.ui.mpbv.BrowserSession;
 import org.eclipse.statet.ecommons.ui.mpbv.PageBookBrowserPage;
diff --git a/r/org.eclipse.statet.r.console.ui/META-INF/MANIFEST.MF b/r/org.eclipse.statet.r.console.ui/META-INF/MANIFEST.MF
index a0a4393..93e2f95 100644
--- a/r/org.eclipse.statet.r.console.ui/META-INF/MANIFEST.MF
+++ b/r/org.eclipse.statet.r.console.ui/META-INF/MANIFEST.MF
@@ -27,6 +27,7 @@
  org.eclipse.jdt.launching,
  org.eclipse.jdt.debug.ui
 Import-Package: com.ibm.icu.text;version="67.1.0",
+ org.eclipse.statet.ecommons.commands.core;version="4.4.0",
  org.eclipse.statet.ecommons.databinding,
  org.eclipse.statet.ecommons.databinding.core.validation;version="4.4.0",
  org.eclipse.statet.ecommons.debug.core.util,
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/page/RConsolePage.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/page/RConsolePage.java
index 53cbca9..77106a6 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/page/RConsolePage.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/page/RConsolePage.java
@@ -37,7 +37,7 @@
 
 import org.eclipse.statet.jcommons.collections.ImCollections;
 
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
@@ -143,7 +143,7 @@
 		
 		menuManager.insertBefore(ADDITIONS_GROUP_ID, new Separator("view")); //$NON-NLS-1$
 		
-		final RProcess process= (RProcess) getConsole().getProcess();
+		final RProcess process= getConsole().getProcess();
 		final REnv rEnv= process.getREnv();
 		if (process.isProvidingFeatureSet(RConsoleTool.R_DATA_FEATURESET_ID) && rEnv != null) {
 			menuManager.appendToGroup(NICO_CONTROL_MENU_ID,
diff --git a/r/org.eclipse.statet.r.ui/META-INF/MANIFEST.MF b/r/org.eclipse.statet.r.ui/META-INF/MANIFEST.MF
index bfaa459..41444b3 100644
--- a/r/org.eclipse.statet.r.ui/META-INF/MANIFEST.MF
+++ b/r/org.eclipse.statet.r.ui/META-INF/MANIFEST.MF
@@ -47,6 +47,7 @@
  org.eclipse.jetty.servlet;version="[10.0.2,10.1.0)",
  org.eclipse.jetty.util;version="[10.0.2,10.1.0)",
  org.eclipse.statet.ecommons.collections;version="4.4.0",
+ org.eclipse.statet.ecommons.commands.core;version="4.4.0",
  org.eclipse.statet.ecommons.databinding,
  org.eclipse.statet.ecommons.databinding.core.util;version="4.4.0",
  org.eclipse.statet.ecommons.databinding.core.validation;version="4.4.0",
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/dataeditor/RDataEditor.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/dataeditor/RDataEditor.java
index d0ae15a..a059db4 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/dataeditor/RDataEditor.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/dataeditor/RDataEditor.java
@@ -35,7 +35,6 @@
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchPartSite;
 import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.part.EditorPart;
 import org.eclipse.ui.part.IShowInTargetList;
 import org.eclipse.ui.services.IServiceLocator;
@@ -238,7 +237,7 @@
 		final IWorkbenchPartSite site= getSite();
 		site.setSelectionProvider(this.viewer);
 		initActions(site,
-				this.handlers= new ContextHandlers(site.getService(IHandlerService.class)) );
+				this.handlers= new ContextHandlers(site) );
 		
 		initStatusLine();
 		initTableInput();
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/FilterClient.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/FilterClient.java
index 6cb3c4e..4e65081 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/FilterClient.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/FilterClient.java
@@ -75,6 +75,15 @@
 		});
 	}
 	
+	protected void onDispose() {
+		{	final var listener= this.resizeListener;
+			if (listener != null) {
+				this.resizeListener= null;
+				getParent().getContainer().getComposite().removeListener(SWT.Resize, listener);
+			}
+		}
+	}
+	
 	
 	@Override
 	@SuppressWarnings("null")
@@ -224,14 +233,4 @@
 		super.layout(changed, flags);
 	}
 	
-	
-	protected void onDispose() {
-		{	final var listener= this.resizeListener;
-			if (listener != null) {
-				this.resizeListener= null;
-				getParent().getContainer().getComposite().removeListener(SWT.Resize, listener);
-			}
-		}
-	}
-	
 }
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/LevelFilterClient.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/LevelFilterClient.java
index f1a4ed7..70185a2 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/LevelFilterClient.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/LevelFilterClient.java
@@ -32,9 +32,9 @@
 
 import org.eclipse.statet.ecommons.databinding.jface.DataBindingSupport;
 import org.eclipse.statet.ecommons.ui.actions.ControlServicesUtil;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.util.AutoCheckController;
+import org.eclipse.statet.ecommons.ui.workbench.ContextHandlers;
 
 import org.eclipse.statet.internal.r.ui.datafilter.LevelVariableFilter;
 import org.eclipse.statet.rj.data.RStore;
@@ -52,7 +52,7 @@
 	
 	private CheckboxTableViewer valueListViewer= nonNullLateInit();
 	
-	private final HandlerCollection valueListHandlers= new HandlerCollection();
+	private ContextHandlers valueListHandlers= nonNullLateInit();
 	private MenuManager valueListMenuManager= nonNullLateInit();
 	
 	
@@ -64,6 +64,20 @@
 		init(1);
 	}
 	
+	@Override
+	protected void onDispose() {
+		if (this.valueListMenuManager != null) {
+			this.valueListMenuManager.dispose();
+			this.valueListMenuManager= null;
+		}
+		if (this.valueListHandlers != null) {
+			this.valueListHandlers.dispose();
+			this.valueListHandlers= null;
+		}
+		
+		super.onDispose();
+	}
+	
 	
 	@Override
 	public LevelVariableFilter getFilter() {
@@ -84,12 +98,15 @@
 		final ControlServicesUtil servicesUtil= new ControlServicesUtil(serviceLocator,
 				getClass().getName() + "/ValueList#" + hashCode(), this ); //$NON-NLS-1$
 		servicesUtil.addControl(this.valueListViewer.getTable());
+		final var handlers= new ContextHandlers(serviceLocator);
+		handlers.setDefaultActivationExpression(servicesUtil.getExpression());
+		handlers.setDeactivateOnDisposal(true);
+		this.valueListHandlers= handlers;
 		
 		final AutoCheckController<?> autoCheckController= new AutoCheckController<>(
 				this.valueListViewer, this.filter.getSelectedValues() );
 		{	final IHandler2 handler= autoCheckController.createSelectAllHandler();
-			this.valueListHandlers.add(SELECT_ALL_COMMAND_ID, handler);
-			servicesUtil.activateHandler(SELECT_ALL_COMMAND_ID, handler);
+			handlers.addActivate(SELECT_ALL_COMMAND_ID, handler);
 		}
 		
 		this.valueListMenuManager= new MenuManager();
@@ -133,14 +150,4 @@
 		return updateLayout(this.valueListViewer, (int)this.availableValues.getLength());
 	}
 	
-	
-	@Override
-	protected void onDispose() {
-		if (this.valueListMenuManager != null) {
-			this.valueListMenuManager.dispose();
-			this.valueListMenuManager= null;
-		}
-		super.onDispose();
-	}
-	
 }
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/TextFilterClient.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/TextFilterClient.java
index bc13817..a5e7a3c 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/TextFilterClient.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/TextFilterClient.java
@@ -43,7 +43,6 @@
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IWorkbenchCommandConstants;
 import org.eclipse.ui.commands.IElementUpdater;
 import org.eclipse.ui.menus.CommandContributionItemParameter;
 import org.eclipse.ui.menus.UIElement;
@@ -54,13 +53,13 @@
 
 import org.eclipse.statet.ecommons.databinding.jface.DataBindingSupport;
 import org.eclipse.statet.ecommons.ui.actions.ControlServicesUtil;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.components.DropDownButton;
 import org.eclipse.statet.ecommons.ui.components.SearchText;
 import org.eclipse.statet.ecommons.ui.util.AutoCheckController;
 import org.eclipse.statet.ecommons.ui.util.LayoutUtils;
 import org.eclipse.statet.ecommons.ui.viewers.ViewerUtils;
+import org.eclipse.statet.ecommons.ui.workbench.ContextHandlers;
 import org.eclipse.statet.ecommons.ui.workbench.WorkbenchUIUtils;
 
 import org.eclipse.statet.internal.r.ui.datafilter.TextSearchType;
@@ -72,6 +71,9 @@
 public class TextFilterClient extends FilterClient<TextVariableFilter> {
 	
 	
+	private static final int SELECTION_DEPENDENT= 1 << 1;
+	
+	
 	private class RemoveHandler extends AbstractHandler implements IElementUpdater {
 		
 		@Override
@@ -155,7 +157,7 @@
 	
 	private CheckboxTableViewer valueListViewer= nonNullLateInit();
 	
-	private final HandlerCollection valueListHandlers= new HandlerCollection();
+	private ContextHandlers valueListHandlers= nonNullLateInit();
 	private MenuManager valueListMenuManager= nonNullLateInit();
 	
 	
@@ -168,6 +170,20 @@
 		init(2);
 	}
 	
+	@Override
+	protected void onDispose() {
+		if (this.valueListMenuManager != null) {
+			this.valueListMenuManager.dispose();
+			this.valueListMenuManager= null;
+		}
+		if (this.valueListHandlers != null) {
+			this.valueListHandlers.dispose();
+			this.valueListHandlers= null;
+		}
+		
+		super.onDispose();
+	}
+	
 	
 	@Override
 	public TextVariableFilter getFilter() {
@@ -237,24 +253,26 @@
 	@Override
 	protected void initActions(final IServiceLocator serviceLocator) {
 		final ControlServicesUtil servicesUtil= new ControlServicesUtil(serviceLocator,
-				getClass().getName()+"/ValueList#"+hashCode(), this ); //$NON-NLS-1$
+				getClass().getName() + "/ValueList#" + hashCode(), this ); //$NON-NLS-1$
 		servicesUtil.addControl(this.valueListViewer.getTable());
+		final var handlers= new ContextHandlers(serviceLocator);
+		handlers.setDefaultActivationExpression(servicesUtil.getExpression());
+		handlers.setDeactivateOnDisposal(true);
+		this.valueListHandlers= handlers;
 		
 		final AutoCheckController<?> autoCheckController= new AutoCheckController<>(
 				this.valueListViewer, this.selectedValueSet );
 		{	final IHandler2 handler= autoCheckController.createSelectAllHandler();
-			this.valueListHandlers.add(SELECT_ALL_COMMAND_ID, handler);
-			servicesUtil.activateHandler(SELECT_ALL_COMMAND_ID, handler);
+			handlers.addActivate(SELECT_ALL_COMMAND_ID, handler);
 		}
 		{	final IHandler2 handler= new RemoveHandler();
-			this.valueListHandlers.add(REMOVE_COMMAND_ID, handler);
-			servicesUtil.activateHandler(IWorkbenchCommandConstants.EDIT_DELETE, handler);
+			handlers.addActivate(REMOVE_COMMAND_ID, handler, SELECTION_DEPENDENT);
 		}
 		{	final IHandler2 handler= new RemoveUncheckedHandler();
-			this.valueListHandlers.add(REMOVE_UNCHECKED_HANDLER_ID, handler);
+			handlers.add(REMOVE_UNCHECKED_HANDLER_ID, handler);
 		}
 		{	final IHandler2 handler= new RemoveAllHandler();
-			this.valueListHandlers.add(REMOVE_ALL_HANDLER_COMMAND_ID, handler);
+			handlers.add(REMOVE_ALL_HANDLER_COMMAND_ID, handler);
 		}
 		
 		ViewerUtils.installSearchTextNavigation(this.valueListViewer, this.searchTextControl, true);
@@ -262,23 +280,23 @@
 		this.valueListMenuManager= new MenuManager();
 		this.valueListMenuManager.add(new HandlerContributionItem(new CommandContributionItemParameter(serviceLocator,
 						null, SELECT_ALL_COMMAND_ID, HandlerContributionItem.STYLE_PUSH),
-				nonNullAssert(this.valueListHandlers.get(SELECT_ALL_COMMAND_ID)) ));
+				nonNullAssert(handlers.get(SELECT_ALL_COMMAND_ID)) ));
 		this.valueListMenuManager.add(new Separator());
 		this.valueListMenuManager.add(new HandlerContributionItem(new CommandContributionItemParameter(serviceLocator,
 						null, REMOVE_COMMAND_ID, HandlerContributionItem.STYLE_PUSH),
-				nonNullAssert(this.valueListHandlers.get(REMOVE_COMMAND_ID)) ));
+				nonNullAssert(handlers.get(REMOVE_COMMAND_ID)) ));
 		this.valueListMenuManager.add(new HandlerContributionItem(new CommandContributionItemParameter(serviceLocator,
 						null, HandlerContributionItem.NO_COMMAND_ID, null,
 						null, null, null,
 						Messages.Items_RemoveUnchecked_label, null, "Remove unchecked items",
 						HandlerContributionItem.STYLE_PUSH, null, false),
-				nonNullAssert(this.valueListHandlers.get(REMOVE_UNCHECKED_HANDLER_ID)) ));
+				nonNullAssert(handlers.get(REMOVE_UNCHECKED_HANDLER_ID)) ));
 		this.valueListMenuManager.add(new HandlerContributionItem(new CommandContributionItemParameter(serviceLocator,
 						null, HandlerContributionItem.NO_COMMAND_ID, null,
 						null, null, null,
 						Messages.Items_RemoveAll_label, null, "Remove all items",
 						HandlerContributionItem.STYLE_PUSH, null, false),
-				nonNullAssert(this.valueListHandlers.get(REMOVE_ALL_HANDLER_COMMAND_ID)) ));
+				nonNullAssert(handlers.get(REMOVE_ALL_HANDLER_COMMAND_ID)) ));
 		this.valueListViewer.getTable().setMenu(
 				this.valueListMenuManager.createContextMenu(this.valueListViewer.getControl()) );
 		
@@ -313,7 +331,7 @@
 	}
 	
 	protected void updateActions() {
-		this.valueListHandlers.get(REMOVE_COMMAND_ID).setEnabled(null);
+		this.valueListHandlers.update(null, SELECTION_DEPENDENT);
 	}
 	
 	@Override
@@ -347,12 +365,4 @@
 		this.filter.search(type, text);
 	}
 	
-	@Override
-	protected void onDispose() {
-		if (this.valueListMenuManager != null) {
-			this.valueListMenuManager.dispose();
-			this.valueListMenuManager= null;
-		}
-	}
-	
 }
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/ROutlinePage.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/ROutlinePage.java
index a885561..4c90b42 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/ROutlinePage.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/ROutlinePage.java
@@ -31,9 +31,9 @@
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.SharedMessages;
 import org.eclipse.statet.ecommons.ui.SharedUIResources;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.dialogs.DialogUtils;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/pkgmanager/PkgTab.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/pkgmanager/PkgTab.java
index cbc65ee..6e90eec 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/pkgmanager/PkgTab.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/pkgmanager/PkgTab.java
@@ -83,7 +83,6 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.ToolBar;
 import org.eclipse.ui.IWorkbenchCommandConstants;
-import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.menus.CommandContributionItemParameter;
 
 import org.eclipse.statet.ecommons.databinding.jface.DataBindingSupport;
@@ -785,7 +784,7 @@
 		this.serviceLocator= new NestedServices(this.dialog.getServiceLocator(), "Tab");
 		this.serviceLocator.bindTo(this);
 		
-		this.handlers= new ContextHandlers(this.serviceLocator.getLocator().getService(IHandlerService.class));
+		this.handlers= new ContextHandlers(this.serviceLocator.getLocator());
 		
 		{	final IHandler2 handler= new AbstractHandler() {
 				@Override
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpInfoHoverCreator.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpInfoHoverCreator.java
index 4a89c6c..02a88aa 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpInfoHoverCreator.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpInfoHoverCreator.java
@@ -72,8 +72,9 @@
 import org.eclipse.ui.menus.CommandContributionItemParameter;
 import org.eclipse.ui.services.IServiceLocator;
 
+import org.eclipse.statet.ecommons.commands.core.BasicHandlerCollection;
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.SharedUIResources;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.actions.SimpleContributionItem;
 import org.eclipse.statet.ecommons.ui.mpbv.BrowserHandler.IBrowserProvider;
@@ -162,7 +163,7 @@
 	private StyledText titleText;
 	private Browser infoBrowser;
 	
-	private final HandlerCollection handlerCollection= new HandlerCollection();
+	private final HandlerCollection handlerCollection= new BasicHandlerCollection();
 	
 	private boolean layoutWorkaround;
 	private boolean layoutHint;
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpView.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpView.java
index 1b9dfd7..d7d9aba 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpView.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpView.java
@@ -63,10 +63,10 @@
 import org.eclipse.statet.jcommons.status.StatusException;
 import org.eclipse.statet.jcommons.status.eplatform.EStatusUtils;
 
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.text.TextUtil;
 import org.eclipse.statet.ecommons.ui.SharedUIResources;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.actions.SimpleContributionItem;
 import org.eclipse.statet.ecommons.ui.actions.ToggleBooleanPreferenceHandler;
diff --git a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/assist/RElementInfoControl.java b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/assist/RElementInfoControl.java
index 34382f0..e6848d0 100644
--- a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/assist/RElementInfoControl.java
+++ b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/assist/RElementInfoControl.java
@@ -45,8 +45,8 @@
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.services.IServiceLocator;
 
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.SharedUIResources;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.SimpleContributionItem;
 import org.eclipse.statet.ecommons.ui.util.InformationDispatchHandler;
 import org.eclipse.statet.ecommons.ui.util.LayoutUtils;
diff --git a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/objectbrowser/ObjectBrowserView.java b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/objectbrowser/ObjectBrowserView.java
index 65002ff..b2e7524 100644
--- a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/objectbrowser/ObjectBrowserView.java
+++ b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/objectbrowser/ObjectBrowserView.java
@@ -64,7 +64,6 @@
 import org.eclipse.ui.commands.IElementUpdater;
 import org.eclipse.ui.contexts.IContextService;
 import org.eclipse.ui.handlers.CollapseAllHandler;
-import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.menus.CommandContributionItemParameter;
 import org.eclipse.ui.menus.UIElement;
 import org.eclipse.ui.part.ViewPart;
@@ -82,11 +81,11 @@
 import org.eclipse.statet.jcommons.ts.core.Tool;
 import org.eclipse.statet.jcommons.ts.core.ToolProvider;
 
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.models.core.util.ElementPartition;
 import org.eclipse.statet.ecommons.ts.ui.workbench.WorkbenchToolRegistry;
 import org.eclipse.statet.ecommons.ts.ui.workbench.WorkbenchToolRegistryListener;
 import org.eclipse.statet.ecommons.ts.ui.workbench.WorkbenchToolSessionData;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.actions.SearchContributionItem;
 import org.eclipse.statet.ecommons.ui.actions.UIActions;
@@ -466,7 +465,7 @@
 		final IViewSite site= getViewSite();
 		site.setSelectionProvider(treeSelectionProvider);
 		this.actionUtil= new ViewActionUtil(this);
-		this.handlers= new ContextHandlers(site.getService(IHandlerService.class));
+		this.handlers= new ContextHandlers(site);
 		initActions(site, this.handlers);
 		contributeToActionBars(site, site.getActionBars(), this.handlers);
 		hookContextMenu();
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/META-INF/MANIFEST.MF b/redocs/org.eclipse.statet.redocs.tex.r/META-INF/MANIFEST.MF
index 9f9d0cc..ac8174f 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/META-INF/MANIFEST.MF
+++ b/redocs/org.eclipse.statet.redocs.tex.r/META-INF/MANIFEST.MF
@@ -28,6 +28,7 @@
  org.eclipse.statet.nico.ui,
  org.eclipse.statet.r.console.ui
 Import-Package: com.ibm.icu.text;version="67.1.0",
+ org.eclipse.statet.ecommons.commands.core;version="4.4.0",
  org.eclipse.statet.ecommons.databinding,
  org.eclipse.statet.ecommons.debug.core.util,
  org.eclipse.statet.ecommons.io,
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveOutlinePage.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveOutlinePage.java
index ae936bc..0eaf59c 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveOutlinePage.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveOutlinePage.java
@@ -43,7 +43,7 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.dialogs.DialogUtils;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/META-INF/MANIFEST.MF b/redocs/org.eclipse.statet.redocs.wikitext.r/META-INF/MANIFEST.MF
index 0463696..cab9787 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/META-INF/MANIFEST.MF
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/META-INF/MANIFEST.MF
@@ -30,6 +30,7 @@
  org.eclipse.statet.nico.ui,
  org.eclipse.statet.r.console.ui
 Import-Package: com.ibm.icu.text;version="67.1.0",
+ org.eclipse.statet.ecommons.commands.core;version="4.4.0",
  org.eclipse.statet.ecommons.databinding,
  org.eclipse.statet.ecommons.io,
  org.eclipse.statet.ecommons.models,
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveOutlinePage.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveOutlinePage.java
index 84a7182..2fb326f 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveOutlinePage.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveOutlinePage.java
@@ -43,7 +43,7 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 import org.eclipse.statet.ecommons.ui.dialogs.DialogUtils;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
diff --git a/rtm/org.eclipse.statet.rtm.base.ui/META-INF/MANIFEST.MF b/rtm/org.eclipse.statet.rtm.base.ui/META-INF/MANIFEST.MF
index 13e4815..d1ff38c 100644
--- a/rtm/org.eclipse.statet.rtm.base.ui/META-INF/MANIFEST.MF
+++ b/rtm/org.eclipse.statet.rtm.base.ui/META-INF/MANIFEST.MF
@@ -32,6 +32,7 @@
  org.eclipse.statet.ide.ui,
  org.eclipse.statet.r.ui
 Import-Package: com.ibm.icu.text;version="67.1.0",
+ org.eclipse.statet.ecommons.commands.core;version="4.4.0",
  org.eclipse.statet.ecommons.databinding;version="4.4.0",
  org.eclipse.statet.ecommons.databinding.core;version="4.4.0",
  org.eclipse.statet.ecommons.graphics.core,
diff --git a/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/ecommons/emf/ui/forms/EFEditor.java b/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/ecommons/emf/ui/forms/EFEditor.java
index 816adf5..0179384 100644
--- a/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/ecommons/emf/ui/forms/EFEditor.java
+++ b/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/ecommons/emf/ui/forms/EFEditor.java
@@ -115,8 +115,9 @@
 import org.eclipse.ui.views.properties.PropertySheet;
 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
 
+import org.eclipse.statet.ecommons.commands.core.BasicHandlerCollection;
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.emf.core.util.RuleSet;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 
 import org.eclipse.statet.internal.ecommons.emf.ui.forms.CopyEObjectHandler;
 import org.eclipse.statet.internal.ecommons.emf.ui.forms.CutEObjectHandler;
@@ -875,7 +876,7 @@
 			}
 		});
 		
-		this.handlers= new HandlerCollection();
+		this.handlers= new BasicHandlerCollection();
 		createActions(getSite(), this.handlers);
 	}
 	
diff --git a/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/rtm/base/ui/editors/RTaskEditor.java b/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/rtm/base/ui/editors/RTaskEditor.java
index c5515b0..cde5142 100644
--- a/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/rtm/base/ui/editors/RTaskEditor.java
+++ b/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/rtm/base/ui/editors/RTaskEditor.java
@@ -29,8 +29,8 @@
 import org.eclipse.ui.services.IServiceLocator;
 import org.eclipse.ui.statushandlers.StatusManager;
 
+import org.eclipse.statet.ecommons.commands.core.HandlerCollection;
 import org.eclipse.statet.ecommons.emf.ui.forms.EFEditor;
-import org.eclipse.statet.ecommons.ui.actions.HandlerCollection;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
 
 import org.eclipse.statet.internal.rtm.base.ui.actions.RunRTaskHandler;
diff --git a/rtm/org.eclipse.statet.rtm.ftable.ui/META-INF/MANIFEST.MF b/rtm/org.eclipse.statet.rtm.ftable.ui/META-INF/MANIFEST.MF
index 3f09393..288b8c1 100644
--- a/rtm/org.eclipse.statet.rtm.ftable.ui/META-INF/MANIFEST.MF
+++ b/rtm/org.eclipse.statet.rtm.ftable.ui/META-INF/MANIFEST.MF
@@ -17,4 +17,5 @@
  org.eclipse.statet.rtm.base.ui;bundle-version="[4.4.0,4.5.0)",
  org.eclipse.statet.r.ui;bundle-version="[4.4.0,4.5.0)"
 Import-Package: org.eclipse.statet.jcommons.collections;version="4.4.0",
- org.eclipse.statet.jcommons.lang;version="4.4.0"
+ org.eclipse.statet.jcommons.lang;version="4.4.0",
+ org.eclipse.statet.ecommons.commands.core;version="4.4.0"
diff --git a/rtm/org.eclipse.statet.rtm.ggplot.ui/META-INF/MANIFEST.MF b/rtm/org.eclipse.statet.rtm.ggplot.ui/META-INF/MANIFEST.MF
index 1bbd6a5..942d536 100644
--- a/rtm/org.eclipse.statet.rtm.ggplot.ui/META-INF/MANIFEST.MF
+++ b/rtm/org.eclipse.statet.rtm.ggplot.ui/META-INF/MANIFEST.MF
@@ -19,4 +19,5 @@
  org.eclipse.statet.rtm.base.ui;bundle-version="[4.4.0,4.5.0)",
  org.eclipse.statet.r.ui;bundle-version="[4.4.0,4.5.0)"
 Import-Package: org.eclipse.statet.jcommons.collections;version="4.4.0",
- org.eclipse.statet.jcommons.lang;version="4.4.0"
+ org.eclipse.statet.jcommons.lang;version="4.4.0",
+ org.eclipse.statet.ecommons.commands.core;version="4.4.0"
