diff --git a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/Issues.java b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/Issues.java
index 45551e0..db3b7ce 100644
--- a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/Issues.java
+++ b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/Issues.java
@@ -21,6 +21,7 @@
 import org.eclipse.statet.jcommons.lang.NonNull;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
+import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.EnumListPref;
 import org.eclipse.statet.ecommons.preferences.core.Preference.StringArrayPref;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
@@ -32,22 +33,20 @@
 public final class Issues {
 	
 	
+	private static final String TASK_TAG_QUALIFIER= "org.eclipse.statet.ide.core/managment"; //$NON-NLS-1$
+	
 	public static final String TASK_TAG_KEYWORD_PREF_KEY= "TaskTags.keyword"; //$NON-NLS-1$
 	public static final String TASK_TAG_PRIORITY_PREF_KEY= "TaskTags.priority"; //$NON-NLS-1$
 	
-	
-	private static StringArrayPref createKeywordPref(final String qualifier) {
-		return new StringArrayPref(qualifier, TASK_TAG_KEYWORD_PREF_KEY);
-	}
-	
-	private static EnumListPref<TaskPriority> createPriorityPref(final String qualifier) {
-		return new EnumListPref<>(qualifier, TASK_TAG_PRIORITY_PREF_KEY, TaskPriority.class);
-	}
+	public static final Preference<@NonNull String[]> TASK_TAG_KEYWORD_PREF=
+			new StringArrayPref(TASK_TAG_QUALIFIER, TASK_TAG_KEYWORD_PREF_KEY);
+	public static final Preference<List<TaskPriority>> TASK_TAG_PRIORITY_PREF=
+			new EnumListPref<>(TASK_TAG_QUALIFIER, TASK_TAG_PRIORITY_PREF_KEY, TaskPriority.class);
 	
 	
-	public static ImList<TaskTag> loadTaskTags(final String qualifier, final PreferenceAccess prefs) {
-		final @NonNull String[] keywords= prefs.getPreferenceValue(createKeywordPref(qualifier));
-		final List<TaskPriority> priorities= prefs.getPreferenceValue(createPriorityPref(qualifier));
+	public static ImList<TaskTag> loadTaskTags(final PreferenceAccess prefs) {
+		final @NonNull String[] keywords= prefs.getPreferenceValue(TASK_TAG_KEYWORD_PREF);
+		final List<TaskPriority> priorities= prefs.getPreferenceValue(TASK_TAG_PRIORITY_PREF);
 		
 		if (keywords.length == priorities.size()) {
 			final var array= new @NonNull TaskTag[keywords.length];
diff --git a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/impl/TaskTagReporter.java b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/impl/TaskTagReporter.java
index 70765ef..7ef102a 100644
--- a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/impl/TaskTagReporter.java
+++ b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/impl/TaskTagReporter.java
@@ -18,11 +18,12 @@
 import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullLateInit;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.collections.ImList;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
@@ -36,6 +37,7 @@
 public abstract class TaskTagReporter {
 	
 	
+	private ImList<TaskTag> taskTags= ImCollections.emptyList();
 	private @Nullable Pattern taskTagPattern;
 	private final Map<String, TaskPriority> taskTagMap= new HashMap<>();
 	
@@ -50,7 +52,11 @@
 	}
 	
 	
-	protected void initTaskPattern(final List<TaskTag> taskTags) {
+	protected void initTaskPattern(final ImList<TaskTag> taskTags) {
+		if (taskTags.equals(this.taskTags)) {
+			return;
+		}
+		this.taskTags= taskTags;
 		this.taskTagPattern= null;
 		this.taskTagMap.clear();
 		
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/presentation/CommentScanner.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/presentation/CommentScanner.java
index d6686aa..e208da4 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/presentation/CommentScanner.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/presentation/CommentScanner.java
@@ -75,7 +75,6 @@
 	}
 	
 	
-	private final String prefQualifier;
 	private final PreferenceAccess prefs;
 	
 	private TaskTagRule taskTagRule= nonNullLateInit();
@@ -86,24 +85,17 @@
 	
 	public CommentScanner(final TextStyleManager<?> textStyles,
 			final String commentTokenKey, final String taskTokenKey,
-			final String prefQualifier, final PreferenceAccess prefs) {
+			final PreferenceAccess prefs) {
 		super(textStyles);
 		
 		this.commentTokenKey= commentTokenKey;
 		this.taskTokenKey= taskTokenKey;
 		initRules();
 		
-		this.prefQualifier= prefQualifier;
 		this.prefs= prefs;
 		loadTaskTags();
 	}
 	
-	public CommentScanner(final TextStyleManager<?> textStyles,
-			final String commentTokenKey, final String taskTokenKey,
-			final PreferenceAccess prefs) {
-		this(textStyles, commentTokenKey, taskTokenKey, PREF_QUALIFIER, prefs);
-	}
-	
 	
 	@Override
 	protected void createRules(final List<IRule> rules) {
@@ -120,7 +112,6 @@
 	
 	// TODO
 	private static final String GROUP_ID= "statet.task_tags"; //$NON-NLS-1$
-	private static final String PREF_QUALIFIER= "org.eclipse.statet.ide.core/managment"; //$NON-NLS-1$
 	
 	@Override
 	public void handleSettingsChanged(final Set<String> groupIds, final Map<String, Object> options) {
@@ -131,7 +122,7 @@
 	}
 	
 	private void loadTaskTags() {
-		final var taskTags= Issues.loadTaskTags(this.prefQualifier, this.prefs);
+		final var taskTags= Issues.loadTaskTags(this.prefs);
 		this.taskTagRule.setKeywords(Issues.getKeywords(taskTags));
 	}
 	
