Index: trunk/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.groovy	(revision 8859)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.groovy	(revision 8863)
@@ -3,5 +3,5 @@
 
 import org.openstreetmap.josm.JOSMFixture
-import org.openstreetmap.josm.gui.tagging.TaggingPresets
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 
 class ConditionalKeysTest extends GroovyTestCase {
Index: trunk/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java	(revision 8859)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java	(revision 8863)
@@ -21,8 +21,8 @@
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.validation.Severity;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItem;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetReader;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
+import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
 
 /**
@@ -213,8 +213,8 @@
         for (final TaggingPreset p : presets) {
             for (final TaggingPresetItem i : p.data) {
-                if (i instanceof TaggingPresetItems.KeyedItem &&
-                        Arrays.asList("opening_hours", "service_times", "collection_times").contains(((TaggingPresetItems.KeyedItem) i).key)) {
-                    for (final String v : ((TaggingPresetItems.KeyedItem) i).getValues()) {
-                        values.add(new Tag(((TaggingPresetItems.KeyedItem) i).key, v));
+                if (i instanceof KeyedItem &&
+                        Arrays.asList("opening_hours", "service_times", "collection_times").contains(((KeyedItem) i).key)) {
+                    for (final String v : ((KeyedItem) i).getValues()) {
+                        values.add(new Tag(((KeyedItem) i).key, v));
                     }
                 }
Index: trunk/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.groovy	(revision 8859)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.groovy	(revision 8863)
@@ -9,5 +9,5 @@
 import org.openstreetmap.josm.data.osm.Way
 import org.openstreetmap.josm.data.validation.TestError
-import org.openstreetmap.josm.gui.tagging.TaggingPresets
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 
 class RelationCheckerTest extends GroovyTestCase {
Index: trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java	(revision 8859)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java	(revision 8863)
@@ -13,5 +13,5 @@
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.validation.TestError;
-import org.openstreetmap.josm.gui.tagging.TaggingPresets;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 
 /**
Index: trunk/test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java	(revision 8859)
+++ trunk/test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java	(revision 8863)
@@ -20,6 +20,6 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetReader;
-import org.openstreetmap.josm.gui.tagging.TaggingPresets;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.io.Compression;
 import org.openstreetmap.josm.io.IllegalDataException;
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/PresetClassificationsTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/PresetClassificationsTest.java	(revision 8859)
+++ 	(revision )
@@ -1,72 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.List;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.OsmUtils;
-import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.tools.Utils;
-import org.xml.sax.SAXException;
-
-public class PresetClassificationsTest {
-
-    static final TaggingPresetSelector.PresetClassifications classifications = new TaggingPresetSelector.PresetClassifications();
-
-    /**
-     * Setup test.
-     */
-    @BeforeClass
-    public static void setUp() throws IOException, SAXException {
-        JOSMFixture.createUnitTestFixture().init();
-        final Collection<TaggingPreset> presets = TaggingPresetReader.readAll("resource://data/defaultpresets.xml", true);
-        classifications.loadPresets(presets);
-    }
-
-    private List<TaggingPresetSelector.PresetClassification> getMatchingPresets(String searchText, OsmPrimitive w) {
-        return classifications.getMatchingPresets(searchText, true, true, EnumSet.of(TaggingPresetType.forPrimitive(w)),
-                Collections.singleton(w));
-    }
-
-    private List<String> getMatchingPresetNames(String searchText, OsmPrimitive w) {
-        return Utils.transform(getMatchingPresets(searchText, w), new Utils.Function<TaggingPresetSelector.PresetClassification, String>() {
-            @Override
-            public String apply(TaggingPresetSelector.PresetClassification x) {
-                return x.preset.name;
-            }
-        });
-    }
-
-    @Test
-    public void testBuilding() throws Exception {
-        final Way w = new Way();
-        final Node n1 = new Node();
-        w.addNode(n1);
-        w.addNode(new Node());
-        w.addNode(new Node());
-        assertFalse("unclosed way should not match building preset", getMatchingPresetNames("building", w).contains("Building"));
-        w.addNode(n1);
-        assertTrue("closed way should match building preset", getMatchingPresetNames("building", w).contains("Building"));
-    }
-
-    @Test
-    public void testRelationsForTram() {
-        final OsmPrimitive tram = OsmUtils.createPrimitive("way railway=tram");
-        assertTrue("railway=tram should match 'Railway Route' for relation creation", getMatchingPresetNames("route", tram)
-                .contains("Railway Route"));
-        assertTrue("railway=tram should match 'Public Transport Route' for relation creation", getMatchingPresetNames("route", tram)
-                .contains("Public Transport Route"));
-        assertFalse("railway=tram should not match 'Bus route'", getMatchingPresetNames("route", tram).contains("Bus route"));
-    }
-}
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/TaggingPresetReaderTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/TaggingPresetReaderTest.java	(revision 8859)
+++ 	(revision )
@@ -1,71 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
-
-import static org.CustomMatchers.hasSize;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.TestUtils;
-import org.openstreetmap.josm.tools.Utils;
-import org.xml.sax.SAXException;
-
-/**
- * Unit tests of {@link TaggingPresetReader} class.
- */
-public class TaggingPresetReaderTest {
-
-    /**
-     * Setup test.
-     */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
-
-    /**
-     * #8954 - last checkbox in the preset is not added
-     */
-    @Test
-    public void test8954() throws SAXException, IOException {
-        String presetfile = TestUtils.getRegressionDataFile(8954, "preset.xml");
-        final Collection<TaggingPreset> presets = TaggingPresetReader.readAll(presetfile, false);
-        Assert.assertEquals("Number of preset items", 1, presets.size());
-        final TaggingPreset preset = presets.iterator().next();
-        Assert.assertEquals("Number of entries", 1, preset.data.size());
-        final TaggingPresetItem item = preset.data.get(0);
-        Assert.assertTrue("Entry is not checkbox", item instanceof TaggingPresetItems.Check);
-    }
-
-    @Test
-    public void testNestedChunks() throws Exception {
-        final Collection<TaggingPreset> presets = TaggingPresetReader.readAll(TestUtils.getTestDataRoot() + "preset_chunk.xml", true);
-        assertThat(presets, hasSize(1));
-        final TaggingPreset abc =  presets.iterator().next();
-        final List<String> keys = Utils.transform(abc.data, new Utils.Function<TaggingPresetItem, String>() {
-            @Override
-            public String apply(TaggingPresetItem x) {
-                return ((TaggingPresetItems.Key) x).key;
-            }
-        });
-        assertEquals("[A1, A2, A3, B1, B2, B3, C1, C2, C3]", keys.toString());
-    }
-
-    /**
-     * Validate internal presets
-     * See #9027
-     */
-    @Test
-    public void readDefaulPresets() throws SAXException, IOException {
-        String presetfile = "resource://data/defaultpresets.xml";
-        final Collection<TaggingPreset> presets = TaggingPresetReader.readAll(presetfile, true);
-        Assert.assertTrue("Default presets are empty", presets.size() > 0);
-    }
-}
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java	(revision 8863)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java	(revision 8863)
@@ -0,0 +1,85 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.List;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmUtils;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSelector.PresetClassification;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSelector.PresetClassifications;
+import org.openstreetmap.josm.tools.Utils;
+import org.xml.sax.SAXException;
+
+/**
+ * Unit tests of {@link PresetClassifications} class.
+ */
+public class PresetClassificationsTest {
+
+    static final PresetClassifications classifications = new PresetClassifications();
+
+    /**
+     * Setup test.
+     * @throws SAXException if any XML error occurs
+     * @throws IOException if any I/O error occurs
+     */
+    @BeforeClass
+    public static void setUp() throws IOException, SAXException {
+        JOSMFixture.createUnitTestFixture().init();
+        final Collection<TaggingPreset> presets = TaggingPresetReader.readAll("resource://data/defaultpresets.xml", true);
+        classifications.loadPresets(presets);
+    }
+
+    private List<PresetClassification> getMatchingPresets(String searchText, OsmPrimitive w) {
+        return classifications.getMatchingPresets(searchText, true, true, EnumSet.of(TaggingPresetType.forPrimitive(w)),
+                Collections.singleton(w));
+    }
+
+    private List<String> getMatchingPresetNames(String searchText, OsmPrimitive w) {
+        return Utils.transform(getMatchingPresets(searchText, w), new Utils.Function<PresetClassification, String>() {
+            @Override
+            public String apply(PresetClassification x) {
+                return x.preset.name;
+            }
+        });
+    }
+
+    /**
+     * Test building preset.
+     */
+    @Test
+    public void testBuilding() {
+        final Way w = new Way();
+        final Node n1 = new Node();
+        w.addNode(n1);
+        w.addNode(new Node());
+        w.addNode(new Node());
+        assertFalse("unclosed way should not match building preset", getMatchingPresetNames("building", w).contains("Building"));
+        w.addNode(n1);
+        assertTrue("closed way should match building preset", getMatchingPresetNames("building", w).contains("Building"));
+    }
+
+    /**
+     * Test public transport tram relations presets.
+     */
+    @Test
+    public void testRelationsForTram() {
+        final OsmPrimitive tram = OsmUtils.createPrimitive("way railway=tram");
+        assertTrue("railway=tram should match 'Railway Route' for relation creation", getMatchingPresetNames("route", tram)
+                .contains("Railway Route"));
+        assertTrue("railway=tram should match 'Public Transport Route' for relation creation", getMatchingPresetNames("route", tram)
+                .contains("Public Transport Route"));
+        assertFalse("railway=tram should not match 'Bus route'", getMatchingPresetNames("route", tram).contains("Bus route"));
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java	(revision 8863)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java	(revision 8863)
@@ -0,0 +1,82 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets;
+
+import static org.CustomMatchers.hasSize;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.gui.tagging.presets.items.Check;
+import org.openstreetmap.josm.gui.tagging.presets.items.Key;
+import org.openstreetmap.josm.tools.Utils;
+import org.xml.sax.SAXException;
+
+/**
+ * Unit tests of {@link TaggingPresetReader} class.
+ */
+public class TaggingPresetReaderTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * #8954 - last checkbox in the preset is not added
+     * @throws SAXException if any XML error occurs
+     * @throws IOException if any I/O error occurs
+     */
+    @Test
+    public void test8954() throws SAXException, IOException {
+        String presetfile = TestUtils.getRegressionDataFile(8954, "preset.xml");
+        final Collection<TaggingPreset> presets = TaggingPresetReader.readAll(presetfile, false);
+        Assert.assertEquals("Number of preset items", 1, presets.size());
+        final TaggingPreset preset = presets.iterator().next();
+        Assert.assertEquals("Number of entries", 1, preset.data.size());
+        final TaggingPresetItem item = preset.data.get(0);
+        Assert.assertTrue("Entry is not checkbox", item instanceof Check);
+    }
+
+    /**
+     * Test nested chunks
+     * @throws SAXException if any XML error occurs
+     * @throws IOException if any I/O error occurs
+     */
+    @Test
+    public void testNestedChunks() throws SAXException, IOException {
+        final Collection<TaggingPreset> presets = TaggingPresetReader.readAll(TestUtils.getTestDataRoot() + "preset_chunk.xml", true);
+        assertThat(presets, hasSize(1));
+        final TaggingPreset abc =  presets.iterator().next();
+        final List<String> keys = Utils.transform(abc.data, new Utils.Function<TaggingPresetItem, String>() {
+            @Override
+            public String apply(TaggingPresetItem x) {
+                return ((Key) x).key;
+            }
+        });
+        assertEquals("[A1, A2, A3, B1, B2, B3, C1, C2, C3]", keys.toString());
+    }
+
+    /**
+     * Validate internal presets
+     * See #9027
+     * @throws SAXException if any XML error occurs
+     * @throws IOException if any I/O error occurs
+     */
+    @Test
+    public void readDefaulPresets() throws SAXException, IOException {
+        String presetfile = "resource://data/defaultpresets.xml";
+        final Collection<TaggingPreset> presets = TaggingPresetReader.readAll(presetfile, true);
+        Assert.assertTrue("Default presets are empty", presets.size() > 0);
+    }
+}
