Index: trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java	(revision 17650)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java	(revision 17651)
@@ -170,6 +170,5 @@
     @Override
     public void addGui(PreferenceTabbedPane gui) {
-        sortMenu = new JCheckBox(tr("Sort presets menu alphabetically"),
-                Config.getPref().getBoolean("taggingpreset.sortmenu", false));
+        sortMenu = new JCheckBox(tr("Sort presets menu alphabetically"), TaggingPresets.SORT_MENU.get());
 
         final JPanel panel = new JPanel(new GridBagLayout());
@@ -186,6 +185,4 @@
     public static class TaggingPresetSourceEditor extends SourceEditor {
 
-        private static final String ICONPREF = "taggingpreset.icon.sources";
-
         public TaggingPresetSourceEditor() {
             super(SourceType.TAGGING_PRESET, Config.getUrls().getJOSMWebsite()+"/presets", presetSourceProviders, true);
@@ -199,5 +196,5 @@
         @Override
         public boolean finish() {
-            return doFinish(PresetPrefHelper.INSTANCE, ICONPREF);
+            return doFinish(PresetPrefHelper.INSTANCE, TaggingPresets.ICON_SOURCES.getKey());
         }
 
@@ -209,5 +206,5 @@
         @Override
         public Collection<String> getInitialIconPathsList() {
-            return Config.getPref().getList(ICONPREF, null);
+            return TaggingPresets.ICON_SOURCES.get();
         }
 
@@ -249,6 +246,5 @@
     @Override
     public boolean ok() {
-        if (sources.finish()
-                || Config.getPref().putBoolean("taggingpreset.sortmenu", sortMenu.getSelectedObjects() != null)) {
+        if (sources.finish() || TaggingPresets.SORT_MENU.put(sortMenu.getSelectedObjects() != null)) {
             TaggingPresets.destroy();
             TaggingPresets.initialize();
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 17650)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 17651)
@@ -52,4 +52,5 @@
 import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
 import org.openstreetmap.josm.data.osm.search.SearchParseError;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -67,5 +68,4 @@
 import org.openstreetmap.josm.gui.tagging.presets.items.Space;
 import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -100,4 +100,10 @@
 
     /**
+     * Defines whether the validator should be active in the preset dialog
+     * @see TaggingPresetValidation
+     */
+    public static final BooleanProperty USE_VALIDATOR = new BooleanProperty("taggingpreset.validator", false);
+
+    /**
      * The preset group this preset belongs to.
      */
@@ -228,5 +234,5 @@
         }
         File arch = TaggingPresetReader.getZipIcons();
-        final Collection<String> s = Config.getPref().getList("taggingpreset.icon.sources", null);
+        final Collection<String> s = TaggingPresets.ICON_SOURCES.get();
         this.iconFuture = new CompletableFuture<>();
         new ImageProvider(iconName)
@@ -359,5 +365,5 @@
         }
 
-        if (selected.size() == 1 && Config.getPref().getBoolean("taggingpreset.validator", false)) {
+        if (selected.size() == 1 && USE_VALIDATOR.get()) {
             itemGuiSupport.addListener((source, key, newValue) ->
                     TaggingPresetValidation.validateAsync(selected.iterator().next(), validationLabel, getChangedTags()));
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java	(revision 17650)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java	(revision 17651)
@@ -20,9 +20,9 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
 import org.openstreetmap.josm.gui.util.LruCache;
-import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Logging;
@@ -37,4 +37,8 @@
     // cache the parsing of types using a LRU cache
     private static final Map<String, Set<TaggingPresetType>> TYPE_CACHE = new LruCache<>(16);
+    /**
+     * Display OSM keys as {@linkplain org.openstreetmap.josm.gui.widgets.OsmIdTextField#setHint hint}
+     */
+    protected static BooleanProperty DISPLAY_KEYS_AS_HINT = new BooleanProperty("taggingpreset.display-keys-as-hint", true);
 
     protected void initAutoCompletionField(AutoCompletingTextField field, String... key) {
@@ -132,5 +136,5 @@
      */
     public static ImageIcon loadImageIcon(String iconName, File zipIcons, Integer maxSize) {
-        final Collection<String> s = Config.getPref().getList("taggingpreset.icon.sources", null);
+        final Collection<String> s = TaggingPresets.ICON_SOURCES.get();
         ImageProvider imgProv = new ImageProvider(iconName).setDirs(s).setId("presets").setArchive(zipIcons).setOptional(true);
         if (maxSize != null && maxSize > 0) {
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java	(revision 17650)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java	(revision 17651)
@@ -18,4 +18,7 @@
 import org.openstreetmap.josm.actions.PreferencesAction;
 import org.openstreetmap.josm.data.osm.IPrimitive;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.data.preferences.ListProperty;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
@@ -27,5 +30,4 @@
 import org.openstreetmap.josm.gui.tagging.presets.items.Roles;
 import org.openstreetmap.josm.gui.tagging.presets.items.Roles.Role;
-import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
@@ -48,4 +50,13 @@
     /** The collection of listeners */
     private static final Collection<TaggingPresetListener> listeners = new ArrayList<>();
+    /**
+     * Sort presets menu alphabetically
+     */
+    public static BooleanProperty SORT_MENU = new BooleanProperty("taggingpreset.sortvalues", true);
+    /**
+     * Custom icon sources
+     */
+    public static final ListProperty ICON_SOURCES = new ListProperty("taggingpreset.icon.sources", null);
+    private static final IntegerProperty MIN_ELEMENTS_FOR_SCROLLER = new IntegerProperty("taggingpreset.min-elements-for-scroller", 15);
 
     private TaggingPresets() {
@@ -107,10 +118,10 @@
             }
             for (JMenu submenu : submenus.values()) {
-                if (submenu.getItemCount() >= Config.getPref().getInt("taggingpreset.min-elements-for-scroller", 15)) {
+                if (submenu.getItemCount() >= MIN_ELEMENTS_FOR_SCROLLER.get()) {
                     MenuScroller.setScrollerFor(submenu);
                 }
             }
         }
-        if (Config.getPref().getBoolean("taggingpreset.sortmenu")) {
+        if (SORT_MENU.get()) {
             TaggingPresetMenu.sortMenu(presetsMenu);
         }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java	(revision 17650)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java	(revision 17651)
@@ -19,7 +19,7 @@
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
-import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.GBC;
@@ -67,5 +67,5 @@
         AutoCompletingTextField tf = new AutoCompletingTextField();
         initAutoCompletionField(tf, key);
-        if (Config.getPref().getBoolean("taggingpreset.display-keys-as-hint", true)) {
+        if (TaggingPresetItem.DISPLAY_KEYS_AS_HINT.get()) {
             tf.setHint(key);
         }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 17650)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 17651)
@@ -31,5 +31,5 @@
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSelector;
-import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Logging;
@@ -332,5 +332,5 @@
         }
 
-        if (values_sort && Config.getPref().getBoolean("taggingpreset.sortvalues", true)) {
+        if (values_sort && TaggingPresets.SORT_MENU.get()) {
             Collections.sort(entries);
         }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 17650)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 17651)
@@ -28,8 +28,8 @@
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
-import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Logging;
@@ -79,5 +79,5 @@
             initAutoCompletionField(textField, key);
         }
-        if (Config.getPref().getBoolean("taggingpreset.display-keys-as-hint", true)) {
+        if (TaggingPresetItem.DISPLAY_KEYS_AS_HINT.get()) {
             textField.setHint(key);
         }
