diff --git a/r/org.eclipse.statet.ide.core/src/org/eclipse/statet/internal/ide/core/BaseCorePreferenceInitializer.java b/r/org.eclipse.statet.ide.core/src/org/eclipse/statet/internal/ide/core/BaseCorePreferenceInitializer.java
index 934a07f..39e25ed 100644
--- a/r/org.eclipse.statet.ide.core/src/org/eclipse/statet/internal/ide/core/BaseCorePreferenceInitializer.java
+++ b/r/org.eclipse.statet.ide.core/src/org/eclipse/statet/internal/ide/core/BaseCorePreferenceInitializer.java
@@ -22,7 +22,7 @@
 import org.eclipse.core.runtime.preferences.IScopeContext;
 
 import org.eclipse.statet.ecommons.preferences.core.Preference;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 
 import org.eclipse.statet.base.core.preferences.TaskTagsPreferences;
 
diff --git a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ext/templates/StatextCodeTemplateContextType.java b/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ext/templates/StatextCodeTemplateContextType.java
index 4c92147..645c1fe 100644
--- a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ext/templates/StatextCodeTemplateContextType.java
+++ b/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ext/templates/StatextCodeTemplateContextType.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.base.ext.templates;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 
 import org.eclipse.statet.base.core.StatetCore;
 import org.eclipse.statet.base.core.StatetProject;
@@ -28,7 +28,7 @@
 	public static String getTodoTaskTag(final StatetProject project) {
 		final TaskTagsPreferences taskPrefs = (project != null) ?
 				new TaskTagsPreferences(project) :
-				new TaskTagsPreferences(PreferenceUtils.getInstancePrefs());
+				new TaskTagsPreferences(EPreferences.getInstancePrefs());
 		
 		final String[] markers = taskPrefs.getTags();
 		
diff --git a/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/internal/nico/core/NicoPreferenceInitializer.java b/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/internal/nico/core/NicoPreferenceInitializer.java
index cd65c10..1a924db 100644
--- a/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/internal/nico/core/NicoPreferenceInitializer.java
+++ b/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/internal/nico/core/NicoPreferenceInitializer.java
@@ -22,7 +22,7 @@
 import org.eclipse.core.runtime.preferences.IScopeContext;
 
 import org.eclipse.statet.ecommons.preferences.core.Preference;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 
 import org.eclipse.statet.internal.nico.core.preferences.HistoryPreferences;
 import org.eclipse.statet.nico.core.NicoPreferenceNodes;
diff --git a/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/nico/core/NicoCore.java b/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/nico/core/NicoCore.java
index e07c5ed..f1f755f 100644
--- a/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/nico/core/NicoCore.java
+++ b/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/nico/core/NicoCore.java
@@ -19,8 +19,8 @@
 
 import org.eclipse.statet.jcommons.collections.ImCollections;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 
 
 public class NicoCore {
@@ -38,7 +38,7 @@
 	public static final int EXITVALUE_RUNTIME_EXCEPTION = STATUSCODE_RUNTIME_ERROR | 2;
 	
 	
-	private static PreferenceAccess CONSOLE_PREF_ACCESS= PreferenceUtils.createAccess(
+	private static PreferenceAccess CONSOLE_PREF_ACCESS= EPreferences.createAccess(
 			ImCollections.newList(
 					new ConsoleInstanceScope(),
 					new ConsoleDefaultScope(),
diff --git a/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/nico/core/runtime/History.java b/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/nico/core/runtime/History.java
index 6141973..bfa19c7 100644
--- a/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/nico/core/runtime/History.java
+++ b/r/org.eclipse.statet.nico.core/src/org/eclipse/statet/nico/core/runtime/History.java
@@ -47,7 +47,7 @@
 import org.eclipse.statet.ecommons.io.FileUtil.ReadTextFileOperation;
 import org.eclipse.statet.ecommons.io.FileUtil.ReaderAction;
 import org.eclipse.statet.ecommons.io.FileUtil.WriteTextFileOperation;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 
 import org.eclipse.statet.internal.nico.core.Messages;
 import org.eclipse.statet.internal.nico.core.preferences.HistoryPreferences;
@@ -157,7 +157,7 @@
 				checkSettings(false);
 			}
 		};
-		PreferenceUtils.getInstancePrefs().addPreferenceNodeListener(
+		EPreferences.getInstancePrefs().addPreferenceNodeListener(
 				NicoPreferenceNodes.CAT_HISTORY_QUALIFIER, this.preferenceListener );
 		checkSettings(false);
 	}
@@ -185,7 +185,7 @@
 	
 	void dispose() {
 		if (this.preferenceListener != null) {
-			PreferenceUtils.getInstancePrefs().addPreferenceNodeListener(
+			EPreferences.getInstancePrefs().addPreferenceNodeListener(
 					NicoPreferenceNodes.CAT_HISTORY_QUALIFIER, this.preferenceListener );
 			this.preferenceListener= null;
 		}
@@ -197,7 +197,7 @@
 	}
 	
 	private void checkSettings(final boolean force) {
-		final HistoryPreferences prefs= new HistoryPreferences(PreferenceUtils.getInstancePrefs());
+		final HistoryPreferences prefs= new HistoryPreferences(EPreferences.getInstancePrefs());
 		synchronized (this) {
 			if (!force && prefs.equals(this.currentPreferences)) {
 				return;
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsolePreferences.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsolePreferences.java
index 324e8c0..0969da6 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsolePreferences.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/preferences/ConsolePreferences.java
@@ -29,7 +29,7 @@
 
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.EnumSetPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 import org.eclipse.statet.ecommons.workbench.ui.IWaThemeConstants;
 import org.eclipse.statet.ecommons.workbench.ui.util.ThemeUtil;
 
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/ConsolePageEditor.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/ConsolePageEditor.java
index f9849cc..3394c86 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/ConsolePageEditor.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/ConsolePageEditor.java
@@ -69,7 +69,7 @@
 import org.eclipse.statet.jcommons.status.Status;
 
 import org.eclipse.statet.ecommons.io.FileUtil;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.text.ICharPairMatcher;
 import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
 import org.eclipse.statet.ecommons.text.core.util.AbstractFragmentDocument;
@@ -414,7 +414,7 @@
 	
 	
 	private void updateSettings() {
-		this.submitHistoryTypesFilter= PreferenceUtils.getInstancePrefs().getPreferenceValue(ConsolePreferences.HISTORYNAVIGATION_SUBMIT_TYPES_PREF);
+		this.submitHistoryTypesFilter= EPreferences.getInstancePrefs().getPreferenceValue(ConsolePreferences.HISTORYNAVIGATION_SUBMIT_TYPES_PREF);
 	}
 	
 	
@@ -485,7 +485,7 @@
 		});
 		
 		this.promptHighlighter= new PromptHighlighter(this.prompt,
-				PreferenceUtils.getInstancePrefs(),
+				EPreferences.getInstancePrefs(),
 				this.configurator.getSourceViewerConfiguration().getPreferences() );
 		
 		final Slider slider= new Slider(this.composite, SWT.HORIZONTAL);
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsole.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsole.java
index d1247c8..e544730 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsole.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsole.java
@@ -46,7 +46,7 @@
 
 import org.eclipse.statet.ecommons.preferences.PreferencesUtil;
 import org.eclipse.statet.ecommons.preferences.SettingsChangeNotifier;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
 import org.eclipse.statet.internal.nico.ui.NicoUIPlugin;
@@ -198,7 +198,7 @@
 	protected void updateWatermarks() {
 		final boolean limitBufferSize= true;
 		if (limitBufferSize) {
-			int lowWater= PreferenceUtils.getInstancePrefs().getPreferenceValue(NicoUIPreferences.OUTPUT_CHARLIMIT_PREF);
+			int lowWater= EPreferences.getInstancePrefs().getPreferenceValue(NicoUIPreferences.OUTPUT_CHARLIMIT_PREF);
 			if (lowWater < 100000) {
 				lowWater= 100000;
 			}
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsoleColorAdapter.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsoleColorAdapter.java
index b80142a..faae043 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsoleColorAdapter.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsoleColorAdapter.java
@@ -25,10 +25,10 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.BooleanPref;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.preferences.ui.RGBPref;
 import org.eclipse.statet.ecommons.text.ui.presentation.ITextPresentationConstants;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
@@ -65,7 +65,7 @@
 	
 	
 	public NIConsoleColorAdapter() {
-		this.prefAccess= PreferenceUtils.getInstancePrefs();
+		this.prefAccess= EPreferences.getInstancePrefs();
 	}
 	
 	
@@ -80,7 +80,7 @@
 		if (controller != null) {
 			final ToolStreamProxy proxy= controller.getStreams();
 			
-			final PreferenceAccess prefs= PreferenceUtils.getInstancePrefs();
+			final PreferenceAccess prefs= EPreferences.getInstancePrefs();
 			final EnumSet<SubmitType> includeSet= prefs.getPreferenceValue(
 					NicoUIPreferences.OUTPUT_FILTER_SUBMITTYPES_INCLUDE_PREF );
 			
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/ExtJavaJRETab.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/ExtJavaJRETab.java
index c2b46b1..f4fc812 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/ExtJavaJRETab.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/ExtJavaJRETab.java
@@ -46,8 +46,8 @@
 
 import org.eclipse.statet.ecommons.debug.ui.config.InputArgumentsComposite;
 import org.eclipse.statet.ecommons.debug.ui.config.LaunchConfigUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceSetService;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.ui.util.LayoutUtils;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
@@ -97,7 +97,7 @@
 		this.mainTab= mainTab;
 		this.rEnvTab= renvTab;
 		
-		PreferenceUtils.getInstancePrefs().addPreferenceSetListener(this, this.PREF_QUALIFIERS);
+		EPreferences.getInstancePrefs().addPreferenceSetListener(this, this.PREF_QUALIFIERS);
 		
 		this.enableVMArchCheck= ((Platform.getOS().startsWith("win") || Platform.getOS().equals(Platform.OS_LINUX)) //$NON-NLS-1$
 				&& (Platform.getOSArch().startsWith("x86") || Platform.getOSArch().startsWith("amd64")) ); //$NON-NLS-1$ //$NON-NLS-2$
@@ -169,7 +169,7 @@
 	
 	@Override
 	public void dispose() {
-		PreferenceUtils.getInstancePrefs().removePreferenceSetListener(this);
+		EPreferences.getInstancePrefs().removePreferenceSetListener(this);
 		
 		super.dispose();
 	}
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RRemoteConsoleLaunchDelegate.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RRemoteConsoleLaunchDelegate.java
index 9edae2f..b676df6 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RRemoteConsoleLaunchDelegate.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RRemoteConsoleLaunchDelegate.java
@@ -70,9 +70,9 @@
 import org.eclipse.statet.ecommons.io.FileValidator;
 import org.eclipse.statet.ecommons.net.resourcemapping.core.IResourceMappingManager;
 import org.eclipse.statet.ecommons.net.resourcemapping.core.ResourceMappingUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.StringPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 import org.eclipse.statet.ecommons.variables.core.StringVariable;
 
@@ -137,7 +137,7 @@
 			"rj.startupscript.path"); //$NON-NLS-1$
 	
 	static {
-		String path= PreferenceUtils.getInstancePrefs().getPreferenceValue(DEFAULT_COMMAND_PATH);
+		String path= EPreferences.getInstancePrefs().getPreferenceValue(DEFAULT_COMMAND_PATH);
 		if (path == null || path.isEmpty()) {
 			path= "~/.RJServer/startup.sh"; //$NON-NLS-1$
 		}
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/EchoEnabledVariable.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/EchoEnabledVariable.java
index 1575a5a..925816c 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/EchoEnabledVariable.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/EchoEnabledVariable.java
@@ -16,7 +16,7 @@
 
 import org.eclipse.core.runtime.CoreException;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.variables.core.DynamicVariable;
 
 import org.eclipse.statet.r.launching.RCodeLaunching;
@@ -32,7 +32,7 @@
 	
 	@Override
 	public String getValue(final String argument) throws CoreException {
-		final Boolean echo= PreferenceUtils.getInstancePrefs().getPreferenceValue(
+		final Boolean echo= EPreferences.getInstancePrefs().getPreferenceValue(
 				RCodeLaunching.ECHO_ENABLED_PREF );
 		return (echo != null && echo.booleanValue()) ?
 				"TRUE" : "FALSE"; //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/r/console/ui/tools/REnvAutoUpdater.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/r/console/ui/tools/REnvAutoUpdater.java
index f81624c..66680ec 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/r/console/ui/tools/REnvAutoUpdater.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/r/console/ui/tools/REnvAutoUpdater.java
@@ -27,8 +27,9 @@
 import org.eclipse.statet.jcommons.ts.core.SystemRunnable;
 import org.eclipse.statet.jcommons.ts.core.Tool;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference.NullableStringPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
 import org.eclipse.statet.internal.r.console.ui.Messages;
@@ -119,7 +120,7 @@
 		final NullableStringPref pref= new NullableStringPref(
 				IREnvManager.PREF_QUALIFIER + '/' + rEnvConfig.getREnv().getId(),
 				"CheckedR.version" ); //$NON-NLS-1$
-		final String s= PreferenceUtils.getInstancePrefs().getPreferenceValue(pref);
+		final String s= EPreferences.getInstancePrefs().getPreferenceValue(pref);
 		if (s != null) {
 			final RVersion checkedVersion= new RVersion(s);
 			if (!checkedVersion.equals(rVersion)) {
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/r/console/ui/tools/REnvIndexAutoUpdater.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/r/console/ui/tools/REnvIndexAutoUpdater.java
index 1b26e77..43d883a 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/r/console/ui/tools/REnvIndexAutoUpdater.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/r/console/ui/tools/REnvIndexAutoUpdater.java
@@ -43,7 +43,8 @@
 import org.eclipse.statet.jcommons.ts.core.Tool;
 import org.eclipse.statet.jcommons.ts.core.ToolService;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 import org.eclipse.statet.ecommons.ui.util.LayoutUtils;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
@@ -275,7 +276,7 @@
 			}
 			this.changed= false;
 			try {
-				final String global= PreferenceUtils.getInstancePrefs().getPreferenceValue(PREF_RENV_CHECK_UPDATE).intern();
+				final String global= EPreferences.getInstancePrefs().getPreferenceValue(PREF_RENV_CHECK_UPDATE).intern();
 				
 				if (global == DISABLED
 						|| (global == ASK && this.sessionSetting == DISABLED) ) {
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RCorePlugin.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RCorePlugin.java
index 6006e70..110e1d7 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RCorePlugin.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RCorePlugin.java
@@ -31,7 +31,7 @@
 import org.eclipse.statet.jcommons.lang.Disposable;
 import org.eclipse.statet.jcommons.status.Status;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.runtime.core.util.StatusUtils;
 
 import org.eclipse.statet.internal.r.core.pkgmanager.REnvPkgManager;
@@ -147,7 +147,7 @@
 		this.rEnvManager= new REnvManagerImpl();
 		
 		this.workspaceCoreAccess= new RCoreAccessImpl(
-				PreferenceUtils.getInstancePrefs(),
+				EPreferences.getInstancePrefs(),
 				this.rEnvManager.getDefault(),
 				RSourceConfig.DEFAULT_CONFIG );
 		
@@ -257,7 +257,7 @@
 		if (this.defaultsCoreAccess == null) {
 			checkStarted();
 			this.defaultsCoreAccess= new RCoreAccessImpl(
-					PreferenceUtils.getDefaultPrefs(),
+					EPreferences.getDefaultPrefs(),
 					this.rEnvManager.getDefault(),
 					RSourceConfig.DEFAULT_CONFIG );
 		}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RCorePreferenceInitializer.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RCorePreferenceInitializer.java
index 8fae777..c67f81c 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RCorePreferenceInitializer.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RCorePreferenceInitializer.java
@@ -22,7 +22,7 @@
 import org.eclipse.core.runtime.preferences.IScopeContext;
 
 import org.eclipse.statet.ecommons.preferences.core.Preference;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 
 import org.eclipse.statet.r.core.RCodeStyleSettings;
 import org.eclipse.statet.r.core.RCore;
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RProjectNature.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RProjectNature.java
index 1c19194..2418e0d 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RProjectNature.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/RProjectNature.java
@@ -28,7 +28,6 @@
 import org.eclipse.statet.jcommons.util.Version;
 
 import org.eclipse.statet.ecommons.preferences.PreferencesManageListener;
-import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceSetService;
 import org.eclipse.statet.ecommons.resources.core.AbstractProjectNature;
 import org.eclipse.statet.ecommons.resources.core.BuildUtils;
@@ -219,10 +218,6 @@
 		}
 	}
 	
-	@Override
-	public PreferenceAccess getPrefs() {
-		return this;
-	}
 	
 	@Override
 	public @Nullable REnv getREnv() {
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/pkgmanager/RPkgManagerImpl.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/pkgmanager/RPkgManagerImpl.java
index febc204..ffbf6d4 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/pkgmanager/RPkgManagerImpl.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/pkgmanager/RPkgManagerImpl.java
@@ -47,11 +47,12 @@
 import org.eclipse.statet.jcommons.status.StatusException;
 import org.eclipse.statet.jcommons.ts.core.Tool;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference.NullableStringPref;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceSetService;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceSetService.ChangeEvent;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 import org.eclipse.statet.ecommons.runtime.core.util.StatusUtils;
 
 import org.eclipse.statet.internal.r.core.RCorePlugin;
@@ -195,7 +196,7 @@
 		this.bioCVersionPref= new NullableStringPref(qualifier, "RPkg.BioCVersion.ver"); //$NON-NLS-1$
 		this.selectedBioCPref= new RRepoPref(qualifier, "RPkg.BioCMirror.repo"); //$NON-NLS-1$
 		
-		this.prefAccess= PreferenceUtils.getInstancePrefs();
+		this.prefAccess= EPreferences.getInstancePrefs();
 		this.addRepos= new ArrayList<>();
 		if (config.getType() == IREnvConfiguration.USER_LOCAL_TYPE) {
 			final String rjVersion= "" + ServerUtils.RJ_VERSION[0] + '.' + ServerUtils.RJ_VERSION[1]; //$NON-NLS-1$
@@ -608,7 +609,7 @@
 	
 	private void loadPrefs(final boolean custom) {
 		final Change event= new Change(this.rEnv);
-		final PreferenceAccess prefs= PreferenceUtils.getInstancePrefs();
+		final PreferenceAccess prefs= EPreferences.getInstancePrefs();
 		getWriteLock().lock();
 		try {
 			if (custom) {
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/renv/REnvConfigurationImpl.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/renv/REnvConfigurationImpl.java
index f3a981a..1b5594b 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/renv/REnvConfigurationImpl.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/renv/REnvConfigurationImpl.java
@@ -53,13 +53,13 @@
 import org.eclipse.statet.jcommons.status.StatusException;
 
 import org.eclipse.statet.ecommons.io.FileUtil;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.IntPref;
 import org.eclipse.statet.ecommons.preferences.core.Preference.NullableStringPref;
 import org.eclipse.statet.ecommons.preferences.core.Preference.StringArrayPref;
 import org.eclipse.statet.ecommons.preferences.core.Preference.StringPref;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.runtime.core.util.StatusUtils;
 
 import org.eclipse.statet.internal.r.core.Messages;
@@ -941,7 +941,7 @@
 			final DefaultLocalConfigurator setup= new DefaultLocalConfigurator(this);
 			final Map<String, String> envp= setup.getEnvironmentsVariables(0);
 			
-			if (PreferenceUtils.getInstancePrefs().getPreferenceValue(RCorePreferenceNodes.PREF_RENV_NETWORK_USE_ECLIPSE)) {
+			if (EPreferences.getInstancePrefs().getPreferenceValue(RCorePreferenceNodes.PREF_RENV_NETWORK_USE_ECLIPSE)) {
 				configureNetwork(envp);
 			}
 			
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/renv/REnvManagerImpl.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/renv/REnvManagerImpl.java
index 44c71f7..f6a193a 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/renv/REnvManagerImpl.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/renv/REnvManagerImpl.java
@@ -43,13 +43,14 @@
 import org.eclipse.statet.jcommons.lang.NonNull;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.IntPref;
 import org.eclipse.statet.ecommons.preferences.core.Preference.LongPref;
 import org.eclipse.statet.ecommons.preferences.core.Preference.StringPref;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceSetService;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 
 import org.eclipse.statet.internal.r.core.Messages;
 import org.eclipse.statet.internal.r.core.RCorePlugin;
@@ -255,7 +256,7 @@
 	}
 	
 	private void loadFromWorkspace() throws BackingStoreException {
-		final PreferenceAccess prefs= PreferenceUtils.getInstancePrefs();
+		final PreferenceAccess prefs= EPreferences.getInstancePrefs();
 		final List<IREnvConfiguration>configs= new ArrayList<>();
 		
 		final Integer version= prefs.getPreferenceValue(PREF_VERSION);
@@ -312,7 +313,7 @@
 	}
 	
 	private void saveToWorkspace(final boolean envPrefs) throws BackingStoreException {
-		final IScopeContext context= PreferenceUtils.getInstancePrefs().getPreferenceContexts().get(0);
+		final IScopeContext context= EPreferences.getInstancePrefs().getPreferenceContexts().get(0);
 		final IEclipsePreferences node= context.getNode(IREnvManager.PREF_QUALIFIER);
 		
 		final Map<Preference<?>, Object> map= new HashMap<>();
@@ -345,7 +346,7 @@
 	}
 	
 	private void loadFromRegistry() {
-		final PreferenceAccess prefs= PreferenceUtils.getInstancePrefs();
+		final PreferenceAccess prefs= EPreferences.getInstancePrefs();
 		final List<RSetup> setups= RSetupUtil.loadAvailableSetups(null);
 		for (final RSetup setup : setups) {
 			final ActualREnv rEnv= new ActualREnv(IREnvConfiguration.EPLUGIN_LOCAL_TYPE + '-' + setup.getId());
@@ -360,7 +361,7 @@
 	}
 	
 	private void onChanged(final boolean envPrefs) throws BackingStoreException {
-		final PreferenceSetService preferenceSetService= PreferenceUtils.getPreferenceSetService();
+		final PreferenceSetService preferenceSetService= EPreferences.getPreferenceSetService();
 		final String sourceId= "REnv" + System.identityHashCode(this); //$NON-NLS-1$
 		final boolean resume= preferenceSetService.pause(sourceId);
 		try {
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rhelp/WorkbenchRHelpManager.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rhelp/WorkbenchRHelpManager.java
index 2b8c486..1b9cc79 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rhelp/WorkbenchRHelpManager.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rhelp/WorkbenchRHelpManager.java
@@ -19,10 +19,10 @@
 import org.eclipse.statet.jcommons.lang.Disposable;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceSetService;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceSetService.ChangeEvent;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 
 import org.eclipse.statet.r.core.renv.IREnvManager;
 import org.eclipse.statet.rhelp.core.RHelpManager;
@@ -42,7 +42,7 @@
 	
 	public WorkbenchRHelpManager(final REnvManager rEnvManager) {
 		super(rEnvManager);
-		this.prefAccess= PreferenceUtils.getInstancePrefs();
+		this.prefAccess= EPreferences.getInstancePrefs();
 		this.prefAccess.addPreferenceSetListener(this, PREF_QUALIFIERS);
 		
 		initServerSupport("jetty");
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RProjects.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RProjects.java
index d5a7e38..2a0fba0 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RProjects.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/project/RProjects.java
@@ -27,7 +27,7 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 import org.eclipse.statet.ecommons.resources.core.ProjectUtils;
 
 import org.eclipse.statet.base.core.StatetProject;
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/util/RCoreAccessWrapper.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/util/RCoreAccessWrapper.java
index d18d629..272e50d 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/util/RCoreAccessWrapper.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/util/RCoreAccessWrapper.java
@@ -22,7 +22,6 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
-import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.preferences.core.util.PreferenceAccessWrapper;
 
 import org.eclipse.statet.r.core.RCodeStyleSettings;
@@ -73,11 +72,6 @@
 	
 	
 	@Override
-	public PreferenceAccess getPrefs() {
-		return this;
-	}
-	
-	@Override
 	public REnv getREnv() {
 		return this.parent.getREnv();
 	}
diff --git a/r/org.eclipse.statet.r.launching.winrgui/src/org/eclipse/statet/r/launching/winrgui/RGWLauncher.java b/r/org.eclipse.statet.r.launching.winrgui/src/org/eclipse/statet/r/launching/winrgui/RGWLauncher.java
index d6802ea..43c7667 100644
--- a/r/org.eclipse.statet.r.launching.winrgui/src/org/eclipse/statet/r/launching/winrgui/RGWLauncher.java
+++ b/r/org.eclipse.statet.r.launching.winrgui/src/org/eclipse/statet/r/launching/winrgui/RGWLauncher.java
@@ -39,8 +39,8 @@
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.progress.IProgressService;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference.BooleanPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.ui.util.DNDUtils;
 
 import org.eclipse.statet.r.launching.IRCodeSubmitConnector;
@@ -61,7 +61,7 @@
 	public RGWLauncher() throws CoreException {
 		
 		final URL dir = WinRGuiConnectorPlugin.getInstance().getBundle().getEntry("/win32/RGWConnector.exe"); //$NON-NLS-1$
-		fSubmitDirectly = PreferenceUtils.getInstancePrefs().getPreferenceValue(PREF_SUBMIT_DIRECTLY_ENABLED);
+		fSubmitDirectly = EPreferences.getInstancePrefs().getPreferenceValue(PREF_SUBMIT_DIRECTLY_ENABLED);
 		try {
 			final String local = FileLocator.toFileURL(dir).getPath();
 			final File file = new File(local);
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/REnvSelectionComposite.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/REnvSelectionComposite.java
index 58c2e54..047bdff 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/REnvSelectionComposite.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/REnvSelectionComposite.java
@@ -47,9 +47,9 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceSetService.ChangeEvent;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.preferences.ui.PreferenceSetUIListener;
 import org.eclipse.statet.ecommons.ui.util.LayoutUtils;
 
@@ -181,7 +181,7 @@
 		createControls();
 		this.workbenchDefaultButton.setSelection(true);
 		
-		this.prefAccess= PreferenceUtils.getInstancePrefs();
+		this.prefAccess= EPreferences.getInstancePrefs();
 		initPreferences();
 		updateState(true, false);
 	}
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPlugin.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPlugin.java
index 33daac9..86d5a2d 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPlugin.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPlugin.java
@@ -45,8 +45,8 @@
 
 import org.eclipse.statet.ecommons.preferences.PreferencesManageListener;
 import org.eclipse.statet.ecommons.preferences.PreferencesUtil;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.text.ui.settings.JFaceTextStyleManager;
 import org.eclipse.statet.ecommons.text.ui.settings.PreferenceStoreTextStyleManager;
 import org.eclipse.statet.ecommons.ui.util.ImageDescriptorRegistry;
@@ -362,7 +362,7 @@
 		if (this.identifierGroups == null) {
 			this.identifierGroups= new RIdentifierGroups();
 			this.prefUpdaters.add(new PreferencesManageListener(
-					this.identifierGroups, PreferenceUtils.getInstancePrefs(), RIdentifierGroups.GROUP_ID));
+					this.identifierGroups, EPreferences.getInstancePrefs(), RIdentifierGroups.GROUP_ID));
 		}
 		return this.identifierGroups;
 	}
@@ -382,7 +382,7 @@
 				if (this.editorSettings == null) {
 					this.editorSettings= new REditorOptions(1);
 					this.prefUpdaters.add(new PreferencesManageListener(
-							this.editorSettings, PreferenceUtils.getInstancePrefs(), REditorOptions.SMARTINSERT_GROUP_ID));
+							this.editorSettings, EPreferences.getInstancePrefs(), REditorOptions.SMARTINSERT_GROUP_ID));
 				}
 				return this.editorSettings;
 			}
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPreferenceInitializer.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPreferenceInitializer.java
index 28e955b..877882e 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPreferenceInitializer.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/RUIPreferenceInitializer.java
@@ -26,7 +26,7 @@
 
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.BooleanPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 
 import org.eclipse.statet.internal.r.ui.editors.DefaultRFoldingPreferences;
 import org.eclipse.statet.internal.r.ui.rhelp.RHelpPreferences;
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/DefaultRFoldingPreferences.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/DefaultRFoldingPreferences.java
index 0daa13e..0c50343 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/DefaultRFoldingPreferences.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/DefaultRFoldingPreferences.java
@@ -20,7 +20,7 @@
 
 import org.eclipse.statet.ecommons.preferences.core.Preference.BooleanPref;
 import org.eclipse.statet.ecommons.preferences.core.Preference.IntPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 
 import org.eclipse.statet.r.ui.RUI;
 import org.eclipse.statet.r.ui.editors.RDefaultFoldingProvider;
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/RDocumentProvider.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/RDocumentProvider.java
index 37180b4..5938d7e 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/RDocumentProvider.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/RDocumentProvider.java
@@ -27,8 +27,8 @@
 
 import org.eclipse.statet.ecommons.preferences.PreferencesUtil;
 import org.eclipse.statet.ecommons.preferences.SettingsChangeNotifier;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 
 import org.eclipse.statet.ltk.core.Ltk;
 import org.eclipse.statet.ltk.model.core.LtkModels;
@@ -78,7 +78,7 @@
 			this.editorPrefListener= editorPrefListener;
 			PreferencesUtil.getSettingsChangeNotifier().addChangeListener(editorPrefListener);
 		}
-		final PreferenceAccess access = PreferenceUtils.getInstancePrefs();
+		final PreferenceAccess access = EPreferences.getInstancePrefs();
 		this.handleTemporaryProblems = access.getPreferenceValue(REditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 	}
 	
@@ -94,7 +94,7 @@
 	}
 	
 	private void updateEditorPrefs() {
-		final PreferenceAccess access = PreferenceUtils.getInstancePrefs();
+		final PreferenceAccess access = EPreferences.getInstancePrefs();
 		final boolean newHandleTemporaryProblems = access.getPreferenceValue(REditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 		if (this.handleTemporaryProblems != newHandleTemporaryProblems) {
 			this.handleTemporaryProblems = newHandleTemporaryProblems;
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/pkgmanager/OptionsTab.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/pkgmanager/OptionsTab.java
index 1608309..157aede 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/pkgmanager/OptionsTab.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/pkgmanager/OptionsTab.java
@@ -24,8 +24,9 @@
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.TabItem;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference.BooleanPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 import org.eclipse.statet.ecommons.ui.util.LayoutUtils;
 
 import org.eclipse.statet.r.ui.RUI;
@@ -83,7 +84,8 @@
 	}
 	
 	private void initOptions() {
-		final Boolean value= PreferenceUtils.getInstancePrefs().getPreferenceValue(INSTALL_SUGGESTED_PREF);
+		final Boolean value= EPreferences.getInstancePrefs()
+				.getPreferenceValue(INSTALL_SUGGESTED_PREF);
 		this.suggestedButton.setSelection(value != null && value.booleanValue());
 		
 		this.suggestedButton.addSelectionListener(new SelectionAdapter() {
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RTextStylesPreferencePage.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RTextStylesPreferencePage.java
index 0c04ae4..675d162 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RTextStylesPreferencePage.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/RTextStylesPreferencePage.java
@@ -27,9 +27,9 @@
 import org.eclipse.statet.jcommons.lang.NonNull;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.StringArrayPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.preferences.ui.ConfigurationBlock;
 import org.eclipse.statet.ecommons.preferences.ui.ConfigurationBlockPreferencePage;
 import org.eclipse.statet.ecommons.text.ui.settings.PreferenceStoreTextStyleManager;
@@ -208,7 +208,7 @@
 	
 	private String getIdentifierItemsDescription(final String key) {
 		final Preference<String[]> pref= new StringArrayPref(RUI.BUNDLE_ID, key);
-		final String[] value= PreferenceUtils.getInstancePrefs().getPreferenceValue(pref);
+		final String[] value= EPreferences.getInstancePrefs().getPreferenceValue(pref);
 		return addListToTooltip(Messages.RSyntaxColoring_Identifier_Items_description, value);
 	}
 	
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpSearchResultPage.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpSearchResultPage.java
index 173ae95..306c83b 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpSearchResultPage.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpSearchResultPage.java
@@ -58,7 +58,7 @@
 import org.eclipse.ui.part.IPageSite;
 import org.eclipse.ui.statushandlers.StatusManager;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.ui.SharedUIResources;
 import org.eclipse.statet.ecommons.ui.actions.SimpleContributionItem;
 import org.eclipse.statet.ecommons.ui.mpbv.BrowserSession;
@@ -490,7 +490,7 @@
 			return;
 		}
 		
-		if (!newPage && PreferenceUtils.getInstancePrefs().getPreferenceValue(
+		if (!newPage && EPreferences.getInstancePrefs().getPreferenceValue(
 				RHelpPreferences.SEARCH_REUSE_PAGE_ENABLED_PREF )) {
 			if (this.reusedSession != null && !view.canOpen(this.reusedSession)) {
 				this.reusedSession= null;
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpSearchUIQuery.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpSearchUIQuery.java
index f3fbff8..60c614b 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpSearchUIQuery.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpSearchUIQuery.java
@@ -25,7 +25,7 @@
 import org.eclipse.statet.jcommons.status.StatusException;
 import org.eclipse.statet.jcommons.status.eplatform.EStatusUtils;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 
 import org.eclipse.statet.r.core.RCore;
 import org.eclipse.statet.r.ui.RUI;
@@ -63,7 +63,7 @@
 		final RHelpSearchRequestor requestor= new RHelpSearchRequestor() {
 			@Override
 			public int getMaxFragments() {
-				return PreferenceUtils.getInstancePrefs().getPreferenceValue(
+				return EPreferences.getInstancePrefs().getPreferenceValue(
 						RHelpPreferences.SEARCH_PREVIEW_FRAGMENTS_MAX_PREF );
 			}
 			@Override
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpUIServlet.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpUIServlet.java
index fe16a1b..2e17f0f 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpUIServlet.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/rhelp/RHelpUIServlet.java
@@ -46,7 +46,7 @@
 
 import org.eclipse.statet.ecommons.preferences.PreferencesUtil;
 import org.eclipse.statet.ecommons.preferences.SettingsChangeNotifier;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.ui.util.LayoutUtils;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
@@ -261,7 +261,7 @@
 	
 	@Override
 	protected boolean getShowInternal() {
-		return PreferenceUtils.getInstancePrefs().getPreferenceValue(
+		return EPreferences.getInstancePrefs().getPreferenceValue(
 				RHelpPreferences.SHOW_INTERNAL_ENABLED_PREF );
 	}
 	
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 4abe14c..1aa13cb 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
@@ -64,7 +64,7 @@
 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.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.text.TextUtil;
 import org.eclipse.statet.ecommons.ui.SharedUIResources;
 import org.eclipse.statet.ecommons.ui.actions.HandlerContributionItem;
@@ -201,7 +201,7 @@
 		{	final IPreferenceChangeListener prefListener= this.prefListener;
 			if (prefListener != null) {
 				this.prefListener= null;
-				PreferenceUtils.getInstancePrefs().removePreferenceNodeListener(
+				EPreferences.getInstancePrefs().removePreferenceNodeListener(
 						RHelpPreferences.RHELP_QUALIFIER, prefListener );
 			}
 		}
@@ -222,7 +222,7 @@
 				}
 			};
 			this.prefListener= prefListener;
-			PreferenceUtils.getInstancePrefs().addPreferenceNodeListener(
+			EPreferences.getInstancePrefs().addPreferenceNodeListener(
 					RHelpPreferences.RHELP_QUALIFIER, prefListener );
 		}
 		
@@ -428,7 +428,7 @@
 	
 	@Override
 	public String getHomePageUrl() {
-		return PreferenceUtils.getInstancePrefs().getPreferenceValue(RHelpPreferences.HOMEPAGE_URL_PREF);
+		return EPreferences.getInstancePrefs().getPreferenceValue(RHelpPreferences.HOMEPAGE_URL_PREF);
 	}
 	
 	@Override
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/editors/RDefaultFoldingProvider.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/editors/RDefaultFoldingProvider.java
index 97c1dc8..01dd2cc 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/editors/RDefaultFoldingProvider.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/editors/RDefaultFoldingProvider.java
@@ -25,8 +25,8 @@
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 
 import org.eclipse.statet.internal.r.ui.editors.DefaultRFoldingPreferences;
 import org.eclipse.statet.ltk.ast.core.AstNode;
@@ -308,7 +308,7 @@
 		if (groupIds == null || groupIds.contains(DefaultRFoldingPreferences.GROUP_ID)
 				|| groupIds.contains(REditorOptions.FOLDING_SHARED_GROUP_ID) ) {
 			final FoldingConfiguration config= new FoldingConfiguration();
-			final PreferenceAccess prefs= PreferenceUtils.getInstancePrefs();
+			final PreferenceAccess prefs= EPreferences.getInstancePrefs();
 			
 			config.enableOtherBlocks= prefs.getPreferenceValue(
 					DefaultRFoldingPreferences.PREF_OTHERBLOCKS_ENABLED );
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RSourceViewerConfiguration.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RSourceViewerConfiguration.java
index b81e662..3f307d1 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RSourceViewerConfiguration.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/RSourceViewerConfiguration.java
@@ -32,7 +32,7 @@
 import org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy;
 import org.eclipse.ui.texteditor.spelling.SpellingService;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.text.ICharPairMatcher;
 import org.eclipse.statet.ecommons.text.IIndentSettings;
 import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
@@ -204,8 +204,8 @@
 	
 	@Override
 	public boolean isSmartInsertByDefault() {
-		return PreferenceUtils.getInstancePrefs().getPreferenceValue(
-				REditorOptions.SMARTINSERT_BYDEFAULT_ENABLED_PREF );
+		return EPreferences.getInstancePrefs()
+				.getPreferenceValue(REditorOptions.SMARTINSERT_BYDEFAULT_ENABLED_PREF);
 	}
 	
 	
diff --git a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/launcher/RCodeLaunchRegistry.java b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/launcher/RCodeLaunchRegistry.java
index d7edb5d..5dcf1dc 100644
--- a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/launcher/RCodeLaunchRegistry.java
+++ b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/launcher/RCodeLaunchRegistry.java
@@ -32,7 +32,7 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.ui.statushandlers.StatusManager;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 
 import org.eclipse.statet.internal.r.debug.ui.RLaunchingMessages;
 import org.eclipse.statet.internal.r.debug.ui.launcher.RCodeLaunchRegistry.ContentHandler.FileCommand;
@@ -239,7 +239,7 @@
 		final IExtensionRegistry registry = Platform.getExtensionRegistry();
 		final IConfigurationElement[] elements = registry.getConfigurationElementsFor(RUI.BUNDLE_ID, CONNECTOR_EXTENSION_POINT);
 		
-		final String id = PreferenceUtils.getInstancePrefs().getPreferenceValue(
+		final String id = EPreferences.getInstancePrefs().getPreferenceValue(
 				RRunDebugPreferenceConstants.PREF_R_CONNECTOR );
 		
 		for (int i = 0; i < elements.length; i++) {
diff --git a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/launcher/ToggleRunEchoHandler.java b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/launcher/ToggleRunEchoHandler.java
index 6c43e92..14bf624 100644
--- a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/launcher/ToggleRunEchoHandler.java
+++ b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/launcher/ToggleRunEchoHandler.java
@@ -16,7 +16,7 @@
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.ui.actions.ToggleBooleanPreferenceHandler;
 
 import org.eclipse.statet.r.launching.RCodeLaunching;
@@ -28,7 +28,7 @@
 	
 	/** Created via extension point */
 	public ToggleRunEchoHandler() {
-		super(RCodeLaunching.ECHO_ENABLED_PREF, PreferenceUtils.getInstancePrefs(),
+		super(RCodeLaunching.ECHO_ENABLED_PREF, EPreferences.getInstancePrefs(),
 				LaunchShortcutUtil.TOGGLE_ECHO_COMMAND_ID );
 	}
 	
diff --git a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/preferences/REnvPreferencePage.java b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/preferences/REnvPreferencePage.java
index 55ed1e7..89cbaed 100644
--- a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/preferences/REnvPreferencePage.java
+++ b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/internal/r/debug/ui/preferences/REnvPreferencePage.java
@@ -71,9 +71,9 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
 import org.eclipse.statet.ecommons.databinding.jface.DataBindingSupport;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.preferences.ui.ConfigurationBlock;
 import org.eclipse.statet.ecommons.preferences.ui.ConfigurationBlockPreferencePage;
 import org.eclipse.statet.ecommons.preferences.ui.ManagedConfigurationBlock;
@@ -245,7 +245,7 @@
 			this.listViewer.setInput(this.envList);
 			ViewerUtils.scheduleStandardSelection(this.listViewer);
 		}
-		loadValues(PreferenceUtils.getInstancePrefs());
+		loadValues(EPreferences.getInstancePrefs());
 		
 		final Composite indexOptions= createIndexOptions(pageComposite);
 		indexOptions.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
diff --git a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/RCodeLaunching.java b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/RCodeLaunching.java
index 03b0ee2..e63a6c9 100644
--- a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/RCodeLaunching.java
+++ b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/RCodeLaunching.java
@@ -48,8 +48,8 @@
 import org.eclipse.statet.jcommons.status.eplatform.EStatusUtils;
 import org.eclipse.statet.jcommons.ts.core.ToolRunnable;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference.BooleanPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.text.TextUtil;
 import org.eclipse.statet.ecommons.variables.core.DynamicVariable;
 import org.eclipse.statet.ecommons.variables.core.StringVariable;
@@ -411,7 +411,7 @@
 		variables.add(new DynamicVariable(ECHO_ENABLED_VARIABLE) {
 			@Override
 			public String getValue(final String argument) throws CoreException {
-				final Boolean echo = PreferenceUtils.getInstancePrefs().getPreferenceValue(
+				final Boolean echo = EPreferences.getInstancePrefs().getPreferenceValue(
 						RCodeLaunching.ECHO_ENABLED_PREF);
 				return (echo != null && echo.booleanValue()) ?
 						"TRUE" : "FALSE"; //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/RRunDebugPreferenceConstants.java b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/RRunDebugPreferenceConstants.java
index 5866e43..59934be 100644
--- a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/RRunDebugPreferenceConstants.java
+++ b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/RRunDebugPreferenceConstants.java
@@ -17,7 +17,7 @@
 import org.eclipse.core.runtime.preferences.IScopeContext;
 
 import org.eclipse.statet.ecommons.preferences.core.Preference.StringPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 
 import org.eclipse.statet.internal.r.debug.ui.RControllerCodeLaunchConnector;
 
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveDocumentProvider.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveDocumentProvider.java
index 421367a..45474a0 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveDocumentProvider.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveDocumentProvider.java
@@ -27,8 +27,8 @@
 
 import org.eclipse.statet.ecommons.preferences.PreferencesUtil;
 import org.eclipse.statet.ecommons.preferences.SettingsChangeNotifier;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 
 import org.eclipse.statet.docmlet.tex.core.model.TexModel;
 import org.eclipse.statet.docmlet.tex.ui.editors.TexEditorBuild;
@@ -111,7 +111,7 @@
 			}
 		};
 		PreferencesUtil.getSettingsChangeNotifier().addChangeListener(this.editorPrefListener);
-		final PreferenceAccess access= PreferenceUtils.getInstancePrefs();
+		final PreferenceAccess access= EPreferences.getInstancePrefs();
 		this.handleTemporaryDocProblems= access.getPreferenceValue(TexEditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 		this.handleTemporaryRProblems= access.getPreferenceValue(REditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 	}
@@ -125,7 +125,7 @@
 	}
 	
 	private void updateEditorPrefs() {
-		final PreferenceAccess access= PreferenceUtils.getInstancePrefs();
+		final PreferenceAccess access= EPreferences.getInstancePrefs();
 		final boolean newHandleTemporaryTexProblems= access.getPreferenceValue(TexEditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 		final boolean newHandleTemporaryRProblems= access.getPreferenceValue(REditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 		if (this.handleTemporaryDocProblems != newHandleTemporaryTexProblems
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveDocumentProvider.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveDocumentProvider.java
index 4c96e6a..15f4b76 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveDocumentProvider.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveDocumentProvider.java
@@ -28,8 +28,8 @@
 
 import org.eclipse.statet.ecommons.preferences.PreferencesUtil;
 import org.eclipse.statet.ecommons.preferences.SettingsChangeNotifier;
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 
 import org.eclipse.statet.docmlet.tex.ui.editors.TexEditorBuild;
 import org.eclipse.statet.docmlet.wikitext.core.model.WikitextModel;
@@ -118,7 +118,7 @@
 			}
 		};
 		PreferencesUtil.getSettingsChangeNotifier().addChangeListener(this.editorPrefListener);
-		final PreferenceAccess access= PreferenceUtils.getInstancePrefs();
+		final PreferenceAccess access= EPreferences.getInstancePrefs();
 		this.handleTemporaryDocProblems= access.getPreferenceValue(WikitextEditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 		this.handleTemporaryRProblems= access.getPreferenceValue(REditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 	}
@@ -132,7 +132,7 @@
 	}
 	
 	private void updateEditorPrefs() {
-		final PreferenceAccess access= PreferenceUtils.getInstancePrefs();
+		final PreferenceAccess access= EPreferences.getInstancePrefs();
 		final boolean newHandleTemporaryDocProblems= access.getPreferenceValue(WikitextEditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 		final boolean newHandleTemporaryRProblems= access.getPreferenceValue(REditorBuild.PROBLEMCHECKING_ENABLED_PREF);
 		if (this.handleTemporaryDocProblems != newHandleTemporaryDocProblems
diff --git a/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/rtm/base/ui/actions/PerspectiveUtil.java b/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/rtm/base/ui/actions/PerspectiveUtil.java
index 2c035db..429d2e2 100644
--- a/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/rtm/base/ui/actions/PerspectiveUtil.java
+++ b/rtm/org.eclipse.statet.rtm.base.ui/src/org/eclipse/statet/rtm/base/ui/actions/PerspectiveUtil.java
@@ -40,9 +40,10 @@
 import org.eclipse.ui.internal.registry.PerspectiveDescriptor;
 import org.eclipse.ui.statushandlers.StatusManager;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.NullableStringPref;
-import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceUtils;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
 import org.eclipse.statet.internal.rtm.base.ui.actions.Messages;
@@ -69,7 +70,7 @@
 		}
 		final Preference<String> pref= new NullableStringPref(QUALIFIER, "SwitchTo-" + finalPerspId + "-.action"); //$NON-NLS-1$ //$NON-NLS-2$
 		
-		final String prefValue= PreferenceUtils.getInstancePrefs().getPreferenceValue(pref);
+		final String prefValue= EPreferences.getInstancePrefs().getPreferenceValue(pref);
 		
 		// Already disabled
 		if ((MessageDialogWithToggle.NEVER.equals(prefValue))) {
